{"id":30071163,"url":"https://github.com/raschidjfr/github-issue-analyzer","last_synced_at":"2025-08-08T12:21:38.954Z","repository":{"id":302948070,"uuid":"1013494345","full_name":"RaschidJFR/github-issue-analyzer","owner":"RaschidJFR","description":"A Python tool for analyzing and prioritizing GitHub issues with AI based on traction, impact, and estimated effort.","archived":false,"fork":false,"pushed_at":"2025-07-05T17:11:27.000Z","size":32,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-29T13:36:02.192Z","etag":null,"topics":["ai","backlog","llm","llms","product-management"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RaschidJFR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-04T02:13:29.000Z","updated_at":"2025-07-04T14:44:13.000Z","dependencies_parsed_at":"2025-07-04T23:31:01.878Z","dependency_job_id":"ae4b3200-5d40-4d2c-8405-7b7ed4b48ea5","html_url":"https://github.com/RaschidJFR/github-issue-analyzer","commit_stats":null,"previous_names":["raschidjfr/github-issue-analyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RaschidJFR/github-issue-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaschidJFR%2Fgithub-issue-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaschidJFR%2Fgithub-issue-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaschidJFR%2Fgithub-issue-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaschidJFR%2Fgithub-issue-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RaschidJFR","download_url":"https://codeload.github.com/RaschidJFR/github-issue-analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaschidJFR%2Fgithub-issue-analyzer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269419146,"owners_count":24413764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","backlog","llm","llms","product-management"],"created_at":"2025-08-08T12:21:38.344Z","updated_at":"2025-08-08T12:21:38.939Z","avatar_url":"https://github.com/RaschidJFR.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI GitHub Issue Analyzer\n\nA Python tool for analyzing and prioritizing GitHub issues based on _traction_, _impact_, and estimated _effort_. This tool helps developers and project maintainers identify which issues to focus on first.\n\n## Features\n\n- **Automated Issue Fetching**: Retrieves issues from any GitHub repository\n- **AI Analysis**: Analyzes issues based on multiple factors including:\n  - Traction (comments, reactions, engagement)\n  - Impact (potential effect on users/project based on the conversation)\n  - Effort (estimated complexity and time required)\n- **Prioritization Scoring**: Generates priority scores to help with decision making\n\n## Usage\nSee the provided [Jupyter notebook](./notebook.ipynb) for usage examples:\n\n```py\nfrom lib.agents import IssueAnalyzer\nfrom lib.models import ChatGPT\n\n# A simple ChatGPT wrapper interface.\n# (TO-DO: support other LLMs providers in the future)\nmodel = ChatGPT('YOUR_OPENAI_API_KEY', model='gpt-4o-mini')\n\nagent = IssueAnalyzer(\n    'parse-community/parse-server',  # GitHub repository\n    os.getenv('YOUR_GITHUB_TOKEN'),  # GitHub token\n    model\n)\n\n# Fetch and analyze the top 15 open issues\nanalysis = agent.fetch_issues().analyze(head=15)\n\n# Export analysis to CSV using your preferred method\npd.DataFrame(analysis).to_csv('issue_analysis.csv', index=False)\n```\n\n## Output Format\n\n`IssueAnalyzer.analyze()` returns a list of dictionaries with the following structure:\n\n### Main Fields\n\n| Key               | Type  | Description                                                                                                                                                                                                                                                                        |\n| ----------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `number`          | int   | GitHub issue number                                                                                                                                                                                                                                                                |\n| `url`             | str   | GitHub issue URL                                                                                                                                                                                                                                                                   |\n| `title`           | str   | Issue title                                                                                                                                                                                                                                                                        |\n| `createdAt`       | str   | ISO timestamp when issue was created                                                                                                                                                                                                                                               |\n| `issue_type`      | str   | One of: Bug, Security, Performance, Documentation, Feature Request, Other                                                                                                                                                                                                          |\n| `summary`         | str   | Concise summary of the issue and its conclusion                                                                                                                                                                                                                                    |\n| `score`           | float | Overall priority score (normalized 0-1, higher = more important). \u003cbr\u003e**Formula:** `traction * impact / effort`                                                                                                                                                                    |\n| `traction`        | float | Normalized score based on comments, reactions, and engagement. Calculated using the following weights: \u003cbr\u003e`commentCount * .3 + uniqueCommenterCount * .6 + reactionCount * .15 + avg_comments_per_week' * .2` \u003cbr\u003e_See [traction_analyzer.py](./lib/agents/traction_analyzer.py)_ |\n| `impact`          | float | Impact score (1 to 4) from LLM analysis. _See [prompt](./lib/agents/prompts/estimate_impact.md)_                                                                                                                                                                                   |\n| `impact_analysis` | str   | Explanation of impact score assignment                                                                                                                                                                                                                                             |\n| `effort`          | float | Effort estimation from LLM analysis. _See [prompt](./lib/agents/prompts/summarize.md)_. \u003cbr\u003e**Note:** This estimation can be improved but for now it seems to be enough for a decent issue ranking                                                                                 |\n\n### Additional Fields\n\n| Key                     | Type   | Description                                                                       |\n| ----------------------- | ------ | --------------------------------------------------------------------------------- |\n| `avg_comments_per_week` | float  | Average number of comments per week over recent period                            |\n| `commentCount`          | int    | Total number of comments (excluding repo members)                                 |\n| `commenterCount`        | int    | Number of unique commenters (excluding repo members)                              |\n| `reactionCount`         | int    | Total number of reactions on issue and comments                                   |\n| `last_comment`          | str    | ISO timestamp of most recent comment                                              |\n\n\n---\n\n**Note**: This tool uses AI to analyze issues, so results may vary. Always review the analysis before making important decisions.\n\n## Configuration\n\n### GitHub Token Permissions\n\nYour GitHub token needs the following permissions:\n\n### OpenAI Token Permissions\nIn your API key settings, make sure to enable access to the GPT-4o mini model (or whichever model you plan to use)\n\n- `repo` (for public and private repositories)\n\n## To Do\n- [ ] Validate and improve ranking algorithm\n- [ ] Provide a way to export the analysis results\n- [ ] Support other LLM providers (eg: Gemini, Claude, etc)\n- [ ] Test support for private repositories\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraschidjfr%2Fgithub-issue-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraschidjfr%2Fgithub-issue-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraschidjfr%2Fgithub-issue-analyzer/lists"}