The VC Analyst for Open Source Code
🚧 Project Status: Work In Progress (MVP Phase) 🚧
oh-my-github is an AI-powered system that helps developers discover high-quality open source projects worth contributing to. It acts like a Venture Capital analyst, going beyond simple star counts to analyze project activity, contribution friendliness, and code quality.
- Find "Alpha": Discover early-stage projects (100-5k stars) with strong growth momentum.
- Analyze Friendliness: Evaluate PR merge rates, issue response times, and maintainer engagement.
- Deep Audits: AI-driven analysis of architecture, test coverage, and onboarding difficulty.
- Save Time: Transform "mass browsing" into "precise matching".
- Frontend: Next.js 15 (App Router), Bun, Vercel AI SDK, TailwindCSS + Shadcn/ui
- Backend: Next.js API Routes (Edge Runtime), LangGraph.js
- AI: DeepSeek V3
- Infrastructure: Vercel, Upstash Redis
The Agent Coordinator is a conversational AI system that orchestrates specialized agents to handle different tasks:
User Message → Coordinator
↓
[Intent Classifier] (DeepSeek V3)
↓
┌─────────┼──────────┐
↓ ↓ ↓
[Search Team] [Auditor] [Comparator] ...
↓
[Synthesizer]
↓
SSE Stream → Frontend
POST Request:
{
"message": "find React state management libraries",
"conversationId": "optional-uuid",
"history": []
}Response: Server-Sent Events (SSE) stream with the following event types:
conversation_created- New conversation initializedlog- Agent thinking steps and progress updatestext- Incremental text chunks of the final summarydata- Structured data (repository lists, comparisons, etc.)done- Request completed with execution statserror- Error occurred during processing
Example SSE Events:
data: {"type":"conversation_created","conversationId":"abc-123"}
data: {"type":"log","message":"Understanding your request...","agent":"coordinator"}
data: {"type":"text","content":"I found **3 repositories** that match your search..."}
data: {"type":"data","structuredData":{"type":"repo_list","items":[...]}}
data: {"type":"done","stats":{"executionTime":8500}}
The coordinator uses DeepSeek V3 to classify user messages into 5 intent types:
- search - Find repositories matching criteria
- analyze - Deep analysis of a specific repository
- compare - Side-by-side comparison of multiple repos
- chat - Conversational responses (acknowledgments, help)
- clarify - Request clarification when intent is ambiguous
Confidence Threshold: 0.7 (below this, routes to clarify)
- Storage: In-memory (Map-based)
- TTL: 1 hour of inactivity
- History: Last 20 messages preserved
- Context: Last 3 messages used for intent classification
- Multi-turn Conversations: Maintain context across multiple queries
- Streaming Responses: Real-time feedback via SSE
- Rate Limiting: 100 requests/hour per IP
- Context Compression: LLM-based summarization for large content
- Request Validation: Zod schema validation for all inputs
- Error Handling: Graceful degradation with fallback responses
Environment variables:
# LLM Configuration (inherited from existing setup)
DEEPSEEK_V3_API_KEY=sk-your_key_hereRun tests:
bun test
# or
npm testCheck test coverage:
bun run test:coverage- Node.js 18+ or Bun 1.0+
- GitHub Personal Access Token (create one here)
- DeepSeek V3 API Key (get one here)
-
Clone the repository
git clone https://github.com/yourusername/oh-my-github.git cd oh-my-github -
Install dependencies
bun install # or npm install -
Set up environment variables
cp .env.local.example .env.local
Edit
.env.localand add your tokens:GITHUB_TOKEN=ghp_your_token_here DEEPSEEK_V3_API_KEY=sk-your_key_here
-
Run the development server
bun run dev # or npm run dev
- Enter a repository name in the format
owner/name(e.g.,facebook/react) - Click "Analyze" or try the example button
- Wait 20-30 seconds for the AI analysis to complete
- View the detailed analysis report
bun run dev- Start development serverbun run build- Build for productionbun run start- Start production serverbun run lint- Run ESLint
This project is licensed under the MIT License - see the LICENSE file for details.