💡 摘要
Talent Matcher 是一个 AI 系统,通过先进的简历解析和分析,将被拒绝的候选人与合适的职位匹配。
🎯 适合人群
🤖 AI 吐槽: “该项目可能通过 API 端点暴露敏感的候选人数据,并依赖于 Supabase 和 Google Gemini 等外部服务。实施适当的身份验证和数据加密可以减轻这些风险。”
该项目可能通过 API 端点暴露敏感的候选人数据,并依赖于 Supabase 和 Google Gemini 等外部服务。实施适当的身份验证和数据加密可以减轻这些风险。
🏗️ 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
优点
- 自动化候选人匹配过程
- 利用先进的 AI 进行简历解析
- 为招聘人员提供详细分析
- 支持并行处理以提高效率
缺点
- 需要多个第三方服务
- 对外部 API 的依赖可能引入延迟
- 新用户的设置复杂性
- 候选人信息的潜在数据隐私问题
相关技能
免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。
版权归原作者所有 MajesteitBart.
