Problem: Finding teammates at hackathons is difficult. Slack channels get crowded and reaching out is awkward.
Solution: Hackd analyzes GitHub profiles and matches hackers using sentiment and code analysis.
- GitHub profile and coding pattern analysis
- AI-powered matching using Cohere
- Recruiter dashboard
- Collaboration scoring
- Clean React interface
hackd/
├── backend/
│ ├── api/main.py
│ ├── github-analyzer/github_analyzer.py
│ ├── matching/matcher.py
│ └── requirements.txt
├── frontend/hackd-web/
│ ├── app/{matching,recruiting,hacker}/
│ ├── convex/
│ └── lib/api.ts
└── config/docker-compose.yml
- Node.js 18+
- Python 3.11+
- Git
- GitHub Personal Access Token
- Cohere API Key
git clone https://github.com/your-username/hackd.git
cd hackd
# Backend
cd backend
pip install -r requirements.txt
# Frontend
cd ../frontend/hackd-web
npm installcp .env.example .env
# Edit with keyscp .env.local.example .env.local
# Edit with keys| Service | Use |
|---|---|
| GitHub | Profile analysis |
| Cohere | Matching |
| Convex | Auth and DB |
Dev Mode
# Terminal 1
cd backend
python api/main.py
# Terminal 2
cd frontend/hackd-web
npm run devDocker
cd config
docker-compose up --buildAccess at http://localhost:3000
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/api/analyze-github |
POST | GitHub profile analysis |
/api/match-users |
POST | Match hackers |
/api/analyze-job-description |
POST | Job parsing |
/api/analyze-sentiment |
POST | Sentiment |
const res = await fetch('http://localhost:5000/api/analyze-github', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: 'octocat' })
});
const data = await res.json();
console.log(data.top_technologies);match_score = (
tech_complementarity * 0.4 +
experience_compatibility * 0.3 +
collaboration_compatibility * 0.2 +
activity_level * 0.1
)