Agentic open-source mentor — paste a GitHub repo, describe your skills, and get a personalized contribution roadmap in seconds.
OpenPath analyzes public GitHub repositories through a pipeline of specialized AI agents, scores open issues against your skill profile, and produces a step-by-step guide to your first pull request — including setup instructions, likely files to touch, patch strategy, and a ready-to-send maintainer comment.
- Features
- Architecture
- Agent Pipeline
- API Reference
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- Contributing
- Repo Intelligence — fetches metadata, detects primary language, topics, stars, and forks via GitHub API
- Issue Mining — pulls open issues and filters them through 11 specialized AI agents
- Skill Matching — scores each issue against your skill set (beginner / intermediate / advanced)
- AI Roadmap — step-by-step contribution plan generated by Groq LLM
- Setup Analyzer — detects install commands, env requirements, and setup blockers
- PR Draft — generates a PR title, description, and a copy-paste maintainer comment
- File Predictor — predicts which files you'll likely need to touch
- Risk Mapping — flags safe areas vs. risky areas of the codebase
- Custom Skills — add any skill beyond the preset list
graph TB
subgraph Client["Frontend (React + Vite)"]
LP[LandingPage]
AP[AnalyzePage]
RP[ResultsPage]
AF[AnalysisForm]
LP -->|navigate /analyze| AP
AP --> AF
AP -->|results| RP
end
subgraph API["Express REST API :5000"]
ANA[POST /analyze]
REPO[GET /repo]
ISS[GET /issues]
ROAD[POST /roadmap]
SETUP[POST /setup/analyze]
PR[POST /pr-draft]
DEMO[GET /demo-result]
HEALTH[GET /health]
end
subgraph Agents["AI Agent Pipeline"]
RS[repoScout]
AM[architectureMapper]
IM[issueMiner]
SM[skillMatch]
ID[issueDifficulty]
CRM[codeRiskMapper]
FP[filePredictor]
PS[patchStrategy]
SI[setupInspector]
PC[prCoach]
MS[mentorSummary]
end
subgraph Services["Core Services"]
GH[GitHub Service]
GROQ[Groq LLM Service]
SCR[Scoring Engine]
PRED[Predictors]
end
subgraph External["External APIs"]
GHA[GitHub REST API]
GROQAPI[Groq API - LLaMA]
end
AF -->|POST /analyze| ANA
ANA --> RS --> AM --> IM --> SM --> ID --> CRM --> FP --> PS --> SI --> PC --> MS
Agents --> GH & GROQ
GH --> GHA
GROQ --> GROQAPI
SCR --> ANA
PRED --> ANA
Each analysis request flows through 11 specialized agents in sequence:
sequenceDiagram
participant FE as Frontend
participant API as Express API
participant GH as GitHub API
participant LLM as Groq LLM
FE->>API: POST /analyze {repoUrl, contributor, options}
API->>GH: Fetch repo metadata
GH-->>API: stars, forks, topics, languages
API->>GH: Fetch open issues (up to maxIssues)
GH-->>API: issues[]
Note over API: repoScout → architectureMapper
API->>LLM: Map repo structure & tech stack
LLM-->>API: projectType, importantFolders
Note over API: issueMiner → skillMatch → issueDifficulty
API->>LLM: Score issues vs contributor skills
LLM-->>API: ranked issues with scores
Note over API: codeRiskMapper → filePredictor
API->>LLM: Predict files & safe/risky areas
LLM-->>API: likelyFiles, safeAreas, riskyAreas
Note over API: patchStrategy → setupInspector
API->>LLM: Generate patch steps & setup analysis
LLM-->>API: patchStrategy[], blockers[], commands{}
Note over API: prCoach → mentorSummary
API->>LLM: Draft PR + maintainer comment + roadmap
LLM-->>API: prDraft, roadmap, overallGuidance
API-->>FE: Full AnalysisData response
Issues are ranked by a multi-factor scoring model:
graph LR
ISS[Raw Issue] --> A[Skill Match Score]
ISS --> B[Beginner Friendliness]
ISS --> C[Clarity Score]
ISS --> D[Risk Score]
ISS --> E[Staleness Penalty]
ISS --> F[Confidence Score]
A & B & C --> G[Weighted Sum]
D & E --> H[Penalty Deduction]
F --> I[Confidence Multiplier]
G --> J[Final Score 0–100]
H --> J
I --> J
J --> K[Ranked Recommendations]
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
Server health check |
POST |
/api/analyze |
Full repo analysis (main endpoint) |
GET |
/api/repo |
Fetch repository metadata only |
GET |
/api/issues |
Fetch open issues only |
POST |
/api/issues/score |
Score issues against a contributor profile |
POST |
/api/setup/analyze |
Analyze setup requirements |
POST |
/api/roadmap |
Generate contribution roadmap |
POST |
/api/pr-draft |
Generate PR draft & maintainer comment |
GET |
/api/demo-result |
Return mock analysis result |
{
"repoUrl": "https://github.com/owner/repo",
"contributor": {
"level": "beginner",
"skills": ["React", "TypeScript", "CSS"],
"goal": "first-pr",
"preferredContributionType": "code"
},
"options": {
"maxIssues": 20,
"includeAiRoadmap": true,
"includePrDraft": true,
"includeSetupAnalysis": true
}
}contributor.level — beginner | intermediate | advanced
contributor.goal — first-pr | bug-fix | docs | feature | testing | explore
contributor.preferredContributionType — code | docs | testing | ui | backend | any
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite |
| Styling | Tailwind CSS, clsx |
| Icons | lucide-react |
| Routing | react-router-dom v7 |
| Backend | Node.js ≥ 18, Express 4 (ES Modules) |
| AI / LLM | Groq SDK (LLaMA models) |
| GitHub data | Axios + GitHub REST API v3 |
| Dev tools | nodemon, Vite HMR |
OpenPath/
├── client/ # React frontend
│ ├── public/
│ │ └── logo.svg
│ ├── src/
│ │ ├── api/ # openpath.ts — API client
│ │ ├── components/ # Shared UI components
│ │ │ ├── AnalysisForm.tsx
│ │ │ ├── IssueCard.tsx
│ │ │ ├── RoadmapCard.tsx
│ │ │ ├── PRDraftCard.tsx
│ │ │ ├── SetupCard.tsx
│ │ │ ├── RepoHeader.tsx
│ │ │ ├── NavBar.tsx
│ │ │ └── Footer.tsx
│ │ ├── pages/
│ │ │ ├── LandingPage.tsx # Hero / marketing
│ │ │ ├── AnalyzePage.tsx # Form + analysis flow
│ │ │ └── ResultsPage.tsx # Results display
│ │ ├── types/ # Shared TypeScript types
│ │ ├── App.tsx # Router setup
│ │ ├── main.tsx
│ │ └── index.css # Tailwind + design tokens
│ ├── .env # VITE_API_BASE_URL
│ └── vite.config.ts
│
└── server/ # Express backend
├── server.js # Entry point
└── src/
├── controllers/ # Route handlers
├── routes/ # Express routers
├── services/
│ ├── agents/ # 11 AI agents
│ │ ├── repoScout.agent.js
│ │ ├── architectureMapper.agent.js
│ │ ├── issueMiner.agent.js
│ │ ├── skillMatch.agent.js
│ │ ├── issueDifficulty.agent.js
│ │ ├── codeRiskMapper.agent.js
│ │ ├── filePredictor.agent.js (via predictors/)
│ │ ├── patchStrategy.agent.js
│ │ ├── setupInspector.agent.js
│ │ ├── prCoach.agent.js
│ │ └── mentorSummary.agent.js
│ ├── scoring/ # Modular scoring services
│ │ ├── issueScoring.service.js
│ │ ├── riskScoring.service.js
│ │ ├── confidenceScoring.service.js
│ │ └── stalenessScoring.service.js
│ ├── predictors/ # File & stack detection
│ │ ├── filePredictor.service.js
│ │ ├── stackDetector.service.js
│ │ └── setupCommandDetector.service.js
│ ├── github.service.js
│ ├── groq.service.js
│ ├── ai.service.js
│ ├── scoring.service.js
│ ├── roadmap.service.js
│ ├── prDraft.service.js
│ └── setupAnalyzer.service.js
├── prompts/ # LLM prompt templates
└── data/ # Static / demo data
- Node.js ≥ 18
- A Groq API key
- A GitHub Personal Access Token (for higher rate limits)
git clone https://github.com/your-username/OpenPath.git
cd OpenPathcd server
npm install
cp .env.example .env
# Fill in your API keys in .env
npm run dev # starts on http://localhost:5000cd client
npm install
# .env already has VITE_API_BASE_URL=http://localhost:5000/api
npm run dev # starts on http://localhost:5173Open http://localhost:5173 in your browser.
PORT=5000
NODE_ENV=development
# Groq API (required for AI features)
GROQ_API_KEY=your_groq_api_key_here
# GitHub Token (optional but recommended — increases rate limit from 60 → 5000 req/hr)
GITHUB_TOKEN=your_github_token_hereVITE_API_BASE_URL=http://localhost:5000/api- Fork the repository
- Create a feature branch:
git checkout -b feat/your-feature - Commit your changes:
git commit -m "feat: add your feature" - Push to the branch:
git push origin feat/your-feature - Open a pull request
MIT