The candidate matching system is now fully implemented and working. It matches candidates to job postings based on their skill proficiency scores, providing recruiters with ranked candidate lists.
- Proficiency Scoring: Uses actual proficiency scores from candidate skills (0-100%)
- Weighted Scoring: 70% weight for required skills, 30% for preferred skills
- Proficiency Multiplier: Applies 0.7-1.3x multiplier based on average proficiency scores
- Fuzzy Matching: Handles skill variations (e.g., "React" matches "React.js", "JavaScript" matches "JS")
- Pagination Support: Handles large candidate datasets efficiently
- Caching: Redis-based caching for performance
- Rate Limiting: Prevents abuse of matching API
- Skill Gap Analysis: Identifies missing skills for candidates
- Batch Processing: Handles multiple candidates efficiently
- GET
/api/recruiter/jobs/[id]/candidates: Fetch ranked candidates for a job - POST
/api/recruiter/jobs/[id]/candidates/refresh: Refresh candidate matches - Debug endpoint:
/api/debug/candidate-matchingfor testing
- Candidate List: Displays paginated, ranked candidates
- Candidate Cards: Shows match scores, skills, and proficiency levels
- Skill Match Indicators: Visual indicators for skill matches with proficiency bars
- Filtering: Filter by skills, experience level, location, match score
- Sorting: Sort by match score, name, email
- View Candidates Button: Added to each job posting in the dashboard
- Direct Navigation: Easy access from job listings to candidate matches
- Job postings have
requiredSkillsandpreferredSkillsarrays - Each skill has a name and optional proficiency requirement
- Candidates have skills stored in
userSkillstable - Each skill has a
proficiencyScore(0-100) based on interview analysis - Skills are extracted from AI-powered interview conversations
// Base matching
requiredMatch = matchingRequiredSkills / totalRequiredSkills * 100
preferredMatch = matchingPreferredSkills / totalPreferredSkills * 100
// Proficiency weighting
avgProficiency = sum(candidateSkillProficiencies) / matchingSkillsCount
proficiencyMultiplier = 0.7 + (avgProficiency / 100) * 0.6
// Final score
finalScore = (requiredMatch * proficiencyMultiplier * 0.7) +
(preferredMatch * proficiencyMultiplier * 0.3)- Candidates sorted by match score (highest first)
- Minimum match score filtering (default 30%)
- Overall fit categories: excellent (80%+), good (60%+), fair (40%+), poor (<40%)
- Post a Job: Create job posting with skill requirements
- View Dashboard: See job postings with "View Candidates" buttons
- Browse Candidates: Click to see ranked candidate matches
- Filter/Sort: Use filters to refine candidate list
- Review Matches: See skill matches, gaps, and proficiency scores
- Schedule Interviews: Direct integration with interview scheduling
- Take AI Interviews: Participate in AI-powered interview sessions
- Skill Extraction: AI extracts and scores skills from conversations
- Automatic Matching: System automatically matches to relevant jobs
- Profile Building: Skills and proficiency scores build over time
userSkills: Stores candidate skills with proficiency scoresjobPostings: Job requirements with required/preferred skillscandidateJobMatches: Cached match resultsskillMentions: Detailed skill mention tracking
- Based on mention frequency, confidence, and engagement levels
- Updated continuously as candidates participate in more interviews
- Ranges from 0-100 with higher scores indicating stronger proficiency
- Match Results: Individual candidate-job matches cached
- Candidate Lists: Paginated results cached per job
- Skill Data: User skills cached for faster retrieval
- Prevents excessive API calls
- Configurable limits per recruiter/organization
- Handles large candidate datasets
- Configurable page sizes (default 20 candidates)
/api/debug/candidate-matching?jobId=X&limit=5: Test matching for specific job- Comprehensive logging throughout the matching process
- Performance metrics and cache hit rates
# Test candidate matching for a job
curl "/api/debug/candidate-matching?jobId=job_123&limit=10"
# Get candidates for a job with filters
curl "/api/recruiter/jobs/job_123/candidates?minMatchScore=60&skills=javascript,react"- Machine Learning: ML-based matching refinement
- Semantic Matching: NLP-based skill similarity
- Experience Weighting: Factor in years of experience
- Location Preferences: Geographic matching preferences
- Salary Matching: Compensation expectation alignment
- Cultural Fit: Soft skills and culture matching
The candidate matching system is now complete and ready for production use. Recruiters can:
- Post jobs with skill requirements
- View automatically ranked candidate matches
- Filter and sort candidates by various criteria
- See detailed skill proficiency information
- Schedule interviews directly from candidate profiles
The system provides intelligent, data-driven candidate recommendations based on actual skill proficiency rather than just keyword matching.