💡 Summary
Talent Matcher is an AI system that matches rejected candidates to suitable job openings using advanced CV parsing and analysis.
🎯 Target Audience
🤖 AI Roast: “The project may expose sensitive candidate data through API endpoints, and it relies on external services like Supabase and Google Gemini. Implementing proper authentication and da”
The project may expose sensitive candidate data through API endpoints, and it relies on external services like Supabase and Google Gemini. Implementing proper authentication and data encryption can mitigate these risks.
🏗️ Talent Matcher Agent
AI-powered system for automatically matching rejected candidates to alternative open positions.
🎯 Overview
When a candidate is rejected for a position, this system automatically:
- Parses their CV using Gemini AI
- Generates embeddings for skills, experience, and overall profile
- Searches for similar open positions using pgvector
- Consolidates and ranks matches
- Generates a detailed analysis memo for recruiters
🚀 Tech Stack
- Frontend: Next.js 14 (App Router), TypeScript, Tailwind CSS
- Backend: Next.js API Routes, BullMQ workers
- Database: Supabase (PostgreSQL + pgvector)
- AI: Google Gemini 2.0 (CV parsing, embeddings, analysis)
- Workflow: LangGraph (parallel execution orchestration)
- Queue: BullMQ + Redis (background job processing)
📋 Prerequisites
- Node.js 18+ and npm
- Docker (for Redis)
- Supabase account
- Google Gemini API key
🛠️ Setup
1. Install Dependencies
npm install
2. Setup Supabase
- Create a new project at supabase.com
- Run the migration from
supabase-migration.sqlin the SQL Editor - Note your Project URL, anon key, and service_role key
3. Configure Environment Variables
Copy .env.example to .env.local:
cp .env.example .env.local
Fill in your credentials:
# Supabase NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # Gemini GEMINI_API_KEY=your-gemini-api-key # Redis REDIS_HOST=localhost REDIS_PORT=6379 # App NEXT_PUBLIC_APP_URL=http://localhost:3000 NODE_ENV=development
4. Start Redis
docker-compose up -d
5. Start Development Services
Quick Start (Recommended):
npm run dev:concurrent # Starts all services at once with color-coded output
Individual Services:
# Terminal 1: Next.js server npm run dev # Terminal 2: Workflow worker npm run worker:workflow # Terminal 3: Job indexing worker npm run worker:indexing
Visit http://localhost:3000
6. Setup Claude Code Infrastructure (Optional but Recommended)
The project includes comprehensive Claude Code development tools:
# Initialize project management /pm:init # List available commands /pm:help # Show current development status /pm:status
For detailed setup, see the Developer Guide.
📡 API Endpoints
Reject Candidate & Trigger Matching
POST /api/candidates/reject Content-Type: application/json { "candidate_id": "uuid", "application_id": "uuid", "rejection_reason": "Not enough experience" }
Check Workflow Status
GET /api/workflow/status/[workflow_execution_id]
Index Jobs for Vector Search
POST /api/jobs/index Content-Type: application/json { "company_id": "uuid", "job_ids": ["uuid1", "uuid2"] // optional, indexes all active jobs if omitted }
🔄 Workflow Architecture
The matching workflow uses LangGraph for orchestration:
START
↓
Parse CV (Gemini)
↓
├── Retrieve by Skills (parallel)
├── Retrieve by Experience (parallel)
└── Retrieve by Profile (parallel)
↓
Consolidate Matches (weighted scoring)
↓
Generate Analysis (Gemini)
↓
END
Key Features:
- Parallel Execution: Skills, experience, and profile searches run simultaneously
- Weighted Scoring: Skills (40%), Experience (35%), Profile (25%)
- Multi-source Boost: Jobs matching multiple criteria get a 5% boost per source
- Graceful Degradation: Workflow continues even if some retrievers fail
📊 Database Schema
Key tables:
companies- Company informationjobs- Job postingsjob_embeddings- Vector embeddings for semantic searchcandidates- Candidate profilesparsed_cvs- Structured CV dataapplications- Job applicationsworkflow_executions- LangGraph workflow runsmatch_results- Matched jobs with scores
🤖 Claude Code Development Infrastructure
This project includes a comprehensive Claude Code development ecosystem with specialized agents and tools.
Key Features
- 9 Specialized Agents: Code analysis, testing, documentation, design review, and more
- 50+ Project Management Commands: Epic/issue tracking, PRD management, workflow automation
- Automated Testing: Comprehensive test execution with real services (no mocking)
- Smart Documentation: Auto-generated and updated documentation
- Epic-Based Development: Organize work around large features rather than individual issues
Quick Commands
# Project Management /pm:init # Initialize new epic /pm:status # Show current work status /pm:next # Get next task /pm:standup # Generate standup report # Development Workflow /review # Code review mode /testing:run # Run tests with analysis /commit # Smart commit with validation /prompt <task> # Get AI assistance # Get Help /pm:help # List all available commands
Agent Coordination
For complex tasks, agents work together automatically:
# Example: Add new feature Task agent_type="workflow-orchestrator" description="Add user authentication"
This will coordinate multiple agents to:
- Analyze requirements
- Create implementation plan
- Build the feature
- Write tests
- Update documentation
- Perform code review
For complete documentation, see the Developer Guide.
🧪 Testing
Automated Testing with Claude Code
Use the specialized test-runner agent for comprehensive testing:
# Run all tests with analysis Task agent_type="test-runner" description="Run full test suite" # Test specific functionality Task agent_type="test-runner" description="Test authentication endpoints"
Manual Testing
To test the workflow manually:
- First, index some jobs:
curl -X POST http://localhost:3000/api/jobs/index -H "Content-Type: application/json" -d '{"company_id": "00000000-0000-0000-0000-000000000001"}'
-
Create a candidate and application (via Supabase dashboard or API)
-
Reject the candidate to trigger matching:
curl -X POST http://localhost:3000/api/candidates/reject -H "Content-Type: application/json" -d '{ "candidate_id": "your-candidate-uuid", "application_id": "your-application-uuid", "rejection_reason": "Overqualified" }'
- Check the workflow status:
curl http://localhost:3000/api/workflow/status/[workflow_id]
📈 Performance
- CV Parsing: ~2-4 seconds
- Embedding Generation: ~1 second per type (3 parallel)
- Vector Search: <100ms per query (with HNSW index)
- Match Consolidation: <50ms
- Analysis Generation: ~3-5 seconds
- Total Workflow: ~10-15 seconds
💰 Cost Estimates
Per candidate workflow:
- Gemini Parsing: ~$0.02
- Embeddings (3 types): ~$0.06
- Vector Search: ~$0.01
- Analysis: ~$0.03
- Total: ~$0.12 per candidate
🛡️ Production Checklist
- [ ] Set up proper authentication
- [ ] Configure Row Level Security (RLS) in Supabase
- [ ] Set up monitoring and alerting
- [ ] Configure rate limiting
- [ ] Set up error tracking (e.g., Sentry)
- [ ] Deploy workers to production (e.g., Railway, Render)
- [ ] Set up CI/CD pipeline
- [ ] Configure backup strategy
- [ ] Set up log aggregation
- [ ] Performance testing
📚 Documentation
- API Documentation - Complete API reference with validation rules
- Developer Guide - Development workflow and Claude Code infrastructure
- Error Handling Guide - Common errors and troubleshooting
- Error Notes - Recent fixes and resolved issues
📝 License
MIT
🤝 Contributing
We use epic-based development with Claude Code infrastructure:
- Initialize Epic: Use
/pm:initto start new features - Follow Patterns: See Developer Guide for workflow
- Use Agents: Leverage specialized agents for code quality and testing
- Smart Commits: Use
/commitfor validated commits
Contributions welcome! Please open an issue or PR.
📧 Support
For questions or issues:
- Debug with Claude Code: Use
Task agent_type="code-analyzer" description="Investigate issue" - Check Documentation: Review Error Handling Guide
- GitHub Issues: Open an issue for bugs or feature requests
- Developer Help: Use
/pm:helpfor command assistance
Pros
- Automates candidate matching process
- Utilizes advanced AI for CV parsing
- Provides detailed analysis for recruiters
- Supports parallel processing for efficiency
Cons
- Requires multiple third-party services
- Dependency on external APIs may introduce latency
- Setup complexity for new users
- Potential data privacy concerns with candidate information
Related Skills
pytorch
S“It's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.”
agno
S“It promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.”
nuxt-skills
S“It's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.”
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author MajesteitBart.
