‹ Reports
The Dispatch

GitHub Repo Analysis: Zipstack/unstract


Executive Summary

Unstract is a no-code platform developed by Zipstack, designed to automate the processing of complex documents using Large Language Models (LLMs) and ETL pipelines, transforming unstructured data into structured JSON without coding requirements. The project is under active development with a focus on enhancing integration with various LLM providers and vector databases, ensuring broad compatibility and ease of use.

Recent Activity

Development Team Contributions

Key Pull Requests

Risks

Of Note

Quantified Reports

Quantify issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 5 2 2 0 1
30 Days 6 5 18 0 1
90 Days 16 11 57 0 1
All Time 19 12 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Rate pull requests



2/5
The pull request introduces multi-tenancy V2 delta changes, but lacks sufficient detail in the description and rationale for the changes. The PR is missing critical sections like database migrations, environment configuration, and relevant documentation, which are essential for understanding the impact and integration of these changes. Additionally, there is a high duplication rate (91.7%) in new code, indicating potential issues with code quality and maintainability. While it passes the quality gate with no new issues or security hotspots, the lack of comprehensive testing notes and related documentation makes it notably flawed.
[+] Read More
2/5
The pull request introduces delta changes for a workflow manager, but it lacks thorough documentation and testing notes. There are significant code additions and modifications, yet the PR fails to address potential issues comprehensively. The presence of a high duplication rate in new code, as indicated by SonarCloud, suggests a need for refactoring. Additionally, there are unresolved review comments indicating potential bugs or necessary improvements. Overall, the PR appears incomplete and requires further refinement to ensure quality and maintainability.
[+] Read More
2/5
The pull request introduces changes to the workflow manager endpoint v2, aiming to enhance multi-tenancy features. However, it suffers from significant code duplication, as highlighted by a failed SonarCloud Quality Gate with 93.8% duplication on new code, far exceeding the acceptable threshold of 3%. This indicates poor code quality and maintainability issues. While the changes are under a feature flag, minimizing immediate risk, the high duplication suggests a lack of refactoring and optimization. The PR lacks detailed testing notes, documentation updates, and doesn't address potential database migrations or environmental configurations. These omissions further detract from its quality, making it notably flawed.
[+] Read More
2/5
The pull request introduces a significant amount of code changes aimed at enhancing API v2 multitenancy, but it suffers from several issues. The SonarCloud analysis indicates a high duplication rate (75.7% on new code), which is far above the acceptable threshold, suggesting poor code quality and maintainability. Additionally, the PR lacks detailed documentation, testing notes, and potential impacts on existing features are not thoroughly explained. These shortcomings overshadow the potential improvements the PR might bring, warranting a rating of 2.
[+] Read More
2/5
The pull request involves a minor change of replacing an image file, which is not significant in terms of code or feature development. While it addresses a clarity issue by updating the logo to AWS, it lacks complexity and impact. The PR does not introduce any new functionality, nor does it fix any bugs or security issues. It is essentially a cosmetic update with no associated documentation or testing changes, making it relatively insignificant in the broader context of software development.
[+] Read More
2/5
The pull request primarily involves minor updates to the README file and a screenshot, which are not substantial changes. The PR lacks detailed information in several sections, such as 'How', 'Can this PR break any existing features', and others, which are left unfilled. While it passes quality checks, the changes are largely superficial and do not introduce significant improvements or features. Therefore, it is rated as needing work due to its insignificance and lack of thoroughness.
[+] Read More
3/5
The pull request addresses a specific error handling issue related to Azure file systems, which is a necessary improvement. However, the changes are relatively minor and focused on error propagation without introducing significant new functionality or optimizations. The PR includes some refactoring and additional logging, but lacks comprehensive documentation or tests for the new error handling logic. Overall, it is an average update that resolves a specific problem but does not significantly enhance the overall project.
[+] Read More
3/5
The pull request introduces delta changes for pipeline v2 multitenancy, consolidating updates from multiple previous PRs. It includes significant additions and modifications across various files, suggesting a comprehensive update. However, the description lacks detail on specific changes or improvements made, and there is no information on testing or documentation updates. The PR does not seem to introduce breaking changes due to the use of feature flags, which is positive. Overall, it appears to be an average update with room for improvement in documentation and clarity.
[+] Read More
3/5
The pull request addresses a necessary data migration to correct cron strings with frequencies less than an hour, which is a valuable fix. However, it introduces potential risks by altering existing pipelines and lacks comprehensive testing for concurrent execution across multiple organizations. The implementation is straightforward but not particularly innovative or complex, warranting an average rating.
[+] Read More
4/5
This pull request effectively optimizes the timer handling in the PromptCard component by replacing the inefficient setInterval logic with a timestamp-based approach. This change reduces CPU load and unnecessary re-renders, addressing a significant performance issue. However, while the solution is well-implemented and addresses the problem, it introduces potential risks to other features within the PromptCard component, as noted by the author. The PR lacks detailed testing notes and documentation updates, which are crucial for understanding and verifying the impact of such changes. Therefore, it is rated as quite good but not exemplary due to these minor shortcomings.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
ali 6 4/4/1 10 42 3529
Deepak K 1 3/5/0 5 21 2931
vishnuszipstack 6 6/1/0 6 31 1995
Chandrasekharan M 6 11/11/0 16 73 1943
Tahier Hussain 3 7/6/0 7 29 1504
github-actions[bot] 1 0/0/0 4 3 1110
Kirtiman Mishra (kirtimanmishrazipstack) 5 3/0/1 27 21 764
jagadeeswaran-zipstack 5 4/1/0 9 18 409
Rahul Johny 4 6/3/1 7 15 350
harini-venkataraman 2 6/5/0 7 13 188
pre-commit-ci[bot] 3 0/0/0 3 8 98
Ritwik G 1 1/1/0 1 5 59
Gayathri (gaya3-zipstack) 2 1/0/0 3 3 46
Jaseem Jas 1 0/0/0 3 5 17
Shuveb Hussain (shuveb) 1 1/0/0 1 2 9
Neha 0 0/0/0 0 0 0
Hari John Kuriakose 0 0/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Quantify risks



Project Risk Ratings

Risk Level (1-5) Rationale
Delivery 3 The project has a moderate level of issue resolution activity with new issues being opened faster than they are being closed, as evidenced by the data from the last 7 days (5 new, 2 closed). The presence of critical issues like #705 and #414 that directly impact delivery timelines further elevates the risk. Additionally, the backlog of 40 open pull requests, including significant ones like PR #707 and PR #700, suggests potential bottlenecks in review or deployment processes.
Velocity 3 While there is evidence of active development and high commit activity, disparities in team member contributions and the accumulation of open pull requests indicate potential bottlenecks. The varied levels of activity among team members, such as the absence of recent contributions from Hari John Kuriakose and Neha, could lead to uneven workload distribution impacting project velocity.
Dependency 3 Issues like #704 highlight dependency on external APIs and services such as Google Gemini models. The proactive replacement of deprecated APIs indicates good management but also underscores reliance on these external systems which could pose risks if they experience downtime or deprecations.
Team 2 The team shows strong internal communication and collaborative problem-solving capabilities, as seen in co-authored commits and detailed issue discussions. However, disparities in workload distribution could potentially lead to inefficiencies or burnout among team members.
Code Quality 3 Commits by developers affecting a large number of files and changes suggest significant alterations to the codebase which might introduce errors or increase complexity. The presence of complex methods violating the Single Responsibility Principle in files like prompt_studio_helper.py and workflow_helper.py also indicates risks to maintainability.
Technical Debt 4 Files exhibit high complexity and interdependency, particularly with hardcoded values and 'magic' strings or numbers that could hinder future modifications. Frequent commits aimed at fixing bugs or optimizing features suggest an ongoing struggle with managing technical debt.
Test Coverage 3 While there is no direct data on test coverage, the frequent need for bug fixes and optimizations as seen in commits suggests that existing testing may not be sufficiently catching issues before deployment. This indicates a risk that the project's automated testing might be insufficient.
Error Handling 3 The use of custom exceptions in files indicates robust error handling strategies; however, the complexity within methods might obscure error tracking. Issues like #595 and #701 remain open with critical bugs, suggesting delays in resolving errors which could compromise reliability.

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

The recent GitHub issue activity for the project Zipstack/unstract indicates a mix of enhancements and bug fixes among the open issues. The issues range from feature requests for new model support to critical bugs affecting the platform's functionality.

Notable Issues:

  • Issue #414 is particularly significant as it involves access complications with the web UI, which is crucial for user interaction. The detailed discussion suggests ongoing challenges in configuring alternative hostnames, indicating potential usability barriers for less technical users.
  • Issue #595 and Issue #701 highlight critical bugs that prevent users from executing core functionalities like API workflows and using the platform with certain configurations. These issues are detrimental as they directly hinder user operations and the reliability of the platform.
  • Issue #704 reflects proactive community engagement with a feature request to replace deprecated APIs, suggesting a healthy interest in keeping the platform up-to-date with external dependencies.

Common themes among these issues include configuration challenges and integration problems with external services or dependencies, which could indicate areas where documentation or system robustness needs enhancement.

Issue Details

Most Recently Created Issue:

  • Issue #705: "fix: having a space in your path variable will break the docker compose command"
    • Priority: High (bug)
    • Status: Open
    • Created: 0 days ago by Evgeny Astapov
    • Labels: bug

Most Recently Updated Issue:

  • Issue #414: "About access unstract web from other computer"
    • Priority: High (affects usability)
    • Status: Open
    • Created: 89 days ago by Halu Wong
    • Last Edited: 0 days ago
    • Labels: documentation, good first issue, question

These issues are critical as they impact fundamental aspects of system operation and accessibility, which are essential for user satisfaction and platform reliability.

Report On: Fetch pull requests



Analysis of Pull Requests in Zipstack/unstract Repository

Overview

The repository has a total of 648 closed pull requests, indicating a high level of activity and development. The repository also has several open pull requests, suggesting ongoing development and improvements.

Notable Pull Requests

Open Pull Requests

  1. PR #707: IDP messaging change

    • Status: Open
    • Summary: Updates README and screenshot to align with IDP 2.0 branding.
    • Impact: This PR is crucial for maintaining up-to-date documentation and user interface, reflecting the latest branding changes.
  2. PR #700: Change bedrock logo to AWS

    • Status: Open
    • Summary: Updates the Bedrock logo to AWS for clarity in user understanding.
    • Impact: Essential for accurate branding and user recognition of supported platforms.
  3. PR #699: feat: Pipeline data migration to correct frequent cron strings

    • Status: Open
    • Summary: Implements data migration to correct pipelines with cron strings having a frequency of less than an hour.
    • Impact: Critical for ensuring that pipeline scheduling adheres to minimum frequency requirements, preventing system overload.
  4. PR #698: FIX: Optimize Timer Handling for Prompt Run API Calls

    • Status: Open
    • Summary: Optimizes timer handling in the PromptCard component, enhancing performance by reducing unnecessary re-renders.
    • Impact: Improves UI responsiveness and system performance, essential for user experience.
  5. PR #689: workflow manager workflow v2 delta changes

    • Status: Open
    • Summary: Integrates multiple changes from different PRs into workflow v2 for enhanced multi-tenancy support.
    • Impact: Key for evolving the platform's capabilities in handling multiple tenants efficiently.

Recently Merged Pull Requests

  1. PR #706: fix/Separating clone to new try-catch block

    • Merged by: Ritwik G
    • Fixes issues with component mounting by separating clone-related components into a different try-catch block.
  2. PR #697: feat: Tool container name validation for length < 63

    • Merged by: Ritwik G
    • Ensures that tool container names are within the valid length to avoid errors during deployment.
  3. PR #696: FIX: Optimized the Prompt Output API Calls

    • Merged by: Neha
    • Optimizes API calls related to prompt outputs, enhancing performance and reducing unnecessary data fetch operations.

Analysis Summary

  • The open pull requests are crucial for both functionality enhancements and critical fixes. These PRs need attention for review and merging to ensure the platform remains up-to-date and functional.
  • The recently merged pull requests show a proactive approach in optimizing performance and maintaining code quality, which is vital for the stability and scalability of the platform.
  • Overall, the management of pull requests appears active and focused on continuous improvement, which is essential for keeping up with technological advancements and user expectations.

Report On: Fetch Files For Assessment



Analysis of Source Code Files

File: prompt_studio_helper.py

Structure and Quality:

  1. Imports and Dependencies:

    • The file imports a significant number of modules and functions from both Django framework and internal modules, indicating a high level of interdependency.
    • Use of specific imports from Django and other services suggests tight coupling with the Django framework and the project's internal architecture.
  2. Class Definition:

    • PromptStudioHelper is defined as a utility class with static methods, suggesting that it serves as a utility or service layer without maintaining state.
  3. Method Complexity:

    • Methods such as create_default_profile_manager, validate_adapter_status, and index_document are lengthy and handle multiple aspects of business logic, which might make them hard to maintain or modify.
    • Exception handling is extensively used, which is good for robustness but also adds to method complexity.
  4. Documentation:

    • Each method is documented with comments explaining the purpose, parameters, return values, and exceptions, which is excellent for maintainability and understanding the code.
  5. Error Handling:

    • Comprehensive use of custom exceptions like PermissionError, IndexingError, etc., which are well-handled within methods to provide clear error feedback.
  6. Code Quality Concerns:

    • Some methods are overly complex and could benefit from refactoring to break down into smaller, more manageable functions.
    • There are hardcoded error messages and status strings that could be abstracted into constants or configurations for easier management.
  7. Security and Best Practices:

    • Use of Django models and filtering suggests adherence to ORM best practices, potentially mitigating common SQL injection vulnerabilities.
    • Proper exception handling reduces the risk of unexpected crashes and improves the robustness of the application.

File: workflow_helper.py

Structure and Quality:

  1. Imports and Dependencies:

    • Similar to prompt_studio_helper.py, this file has numerous dependencies on Django models and utilities, indicating tight coupling with the Django framework.
  2. Class Definition:

    • WorkflowHelper contains static methods that manage workflow-related operations, suggesting its role as a service layer in the application architecture.
  3. Method Complexity:

    • Methods like process_input_files and run_workflow handle multiple steps in workflow processing, showing high complexity and multiple responsibilities within single methods.
  4. Documentation:

    • Adequate inline comments help explain critical sections of the code; however, some complex blocks could benefit from more detailed explanations.
  5. Error Handling:

    • Extensive use of custom exceptions for error scenarios related to workflows, enhancing the application's ability to handle errors gracefully.
  6. Code Quality Concerns:

    • Some methods are quite long and perform multiple tasks, which could be refactored into smaller sub-methods for better clarity and reusability.
    • The use of magic strings and numbers suggests potential areas for improvement by using constants or configuration files.
  7. Concurrency Handling:

    • Use of Celery for task management indicates an attempt to handle concurrency and long-running tasks effectively.

File: PromptCard.jsx

Structure and Quality:

  1. React Component Structure:

    • The component manages its state using hooks like useState and handles side effects with useEffect, following modern React functional component patterns.
  2. State Management:

    • Extensive state management within the component suggests it might be handling too many responsibilities (state bloat), which could be offloaded to context providers or Redux-like state management libraries for better maintainability.
  3. Code Modularity:

    • The component uses child components like PromptCardItems to break down UI parts, which is good for reusability and separation of concerns within the React component tree.
  4. Error Handling:

    • Uses custom hooks like useExceptionHandler to manage errors, which helps in centralizing error handling logic across components.
  5. Performance Considerations:

    • Multiple states and effects could lead to performance issues due to unnecessary re-renders; optimization may be required using techniques like memoization or useCallback where appropriate.
  6. Documentation and Readability:

    • Inline comments are present but could be enhanced to better describe complex logic parts within event handlers and effects.
  7. Security Practices:

    • Proper handling of asynchronous operations with cleanup in useEffect hooks to avoid memory leaks or state updates on unmounted components.

Summary

The analyzed files show a well-structured approach with adherence to respective frameworks' best practices (Django for Python files, React for JSX). However, there are areas for improvement in reducing method complexity, enhancing modularity, abstracting hardcoded values, and optimizing performance in front-end components.

Report On: Fetch commits



Development Team and Recent Activity

Team Members and Recent Commits

  1. Harini Venkataraman

    • Recent Activity: Worked on database connections and SDK version bumps. Involved in multiple fixes related to the platform and prompt services.
  2. Chandrasekharan M

    • Recent Activity: Focused on feature enhancements and bug fixes across various components including workflow execution, API deployment, and error handling.
  3. Tahier Hussain

    • Recent Activity: Contributed to optimizations in Prompt Output API calls and fixed issues related to cost display in prompt runs.
  4. Deepak K (Deepak-Kesavan)

    • Recent Activity: Handled SDK version bumps and removed unused services, contributing significantly to maintaining project dependencies.
  5. Muhammad Ali (muhammad-ali-e)

    • Recent Activity: Engaged in enhancing subquestion retrieval for the prompt studio and addressing pipeline enable/disable functionalities.
  6. Rahul Johny (johnyrahul)

    • Recent Activity: Worked on workflow execution exception handling and connection pool management for platform and prompt services.
  7. Ritwik G

    • Recent Activity: Co-authored several commits focusing on environment variable passing and error handling enhancements.
  8. Jagadeeswaran

    • Recent Activity: Focused on frontend enhancements, particularly around the prompt card component in the custom tools section.
  9. Vishnu (vishnuszipstack)

    • Recent Activity: Contributed to routing and navigation updates, particularly for manual review queue features.
  10. Shuveb Hussain

    • Recent Activity: Made minor updates related to IDP messaging changes.
  11. Gayathri (gaya3-zipstack)

    • Recent Activity: Addressed text extraction issues and contributed to backend workflow changes.
  12. Kirtiman Mishra (kirtimanmishrazipstack)

    • Recent Activity: Involved in pdm lock automation adjustments and merging main branch updates into feature branches.
  13. Jaseem Jas (jaseemjaskp)

    • Recent Activity: Assisted in frontend environment setup adjustments for Docker builds.
  14. Pre-commit-ci[bot]

    • Recent Activity: Automated updates for pre-commit configurations across several branches.
  15. Hari John Kuriakose (hari-kuriakose)

    • No recent activity reported.
  16. Neha (nehabagdia)

    • No recent activity reported.
  17. Github-actions[bot]

    • Recent Activity: Automated actions related to pdm lock updates for backend services.

Patterns, Themes, and Conclusions

  • The team is actively engaged in both frontend and backend enhancements, with a strong focus on integrating new features and maintaining robustness through bug fixes.
  • There is a significant emphasis on improving the user experience on the frontend, particularly within the custom tools section.
  • Backend activities are heavily centered around API functionality enhancements, error handling improvements, and ensuring seamless integration with third-party services.
  • Collaboration is evident from co-authored commits, indicating a team-oriented approach to tackling complex problems.
  • The use of automation bots like pre-commit-ci[bot] and github-actions[bot] highlights an emphasis on maintaining code quality and dependency management automatically.
  • The absence of recent activity from some members may indicate either a backend or planning phase where their specific skills are not currently required or their contributions are not being directly committed to the repository during the observed period.