Uses NLP to identify technical skills mentioned in the description:
// Example extractionconst description = ` We're looking for a Senior Engineer with expertise in React, TypeScript, and GraphQL. Experience with Node.js and PostgreSQL is a plus.`const skills = await extractSkills(description)// ["React", "TypeScript", "GraphQL", "Node.js", "PostgreSQL"]
Skills are normalized to canonical names (e.g., “React.js” → “React”).
Extracts bullet points and key requirements:
const requirements = await extractRequirements(description)// [// "5+ years of experience in frontend development",// "Strong understanding of React and TypeScript",// "Experience with GraphQL APIs",// "Bachelor's degree in Computer Science or related field"// ]
Each job includes a human-readable explanation of the score:
// AI reasoning field (src/lib/types/index.ts:32)interface Job { ai_reasoning: string | null;}
Example Reasoning:
87% Match — Excellent
STRONG MATCH — This role aligns well with your profile:✓ Skills: 9/10 required skills match your expertise (React, TypeScript, Node.js, PostgreSQL, GraphQL, AWS, Docker, Jest, Git)✓ Experience: Senior-level requirement matches your 6 years of experience✓ Compensation: $180k-$250k is within your $150k-$220k range✓ Location: Remote-first, matching your preference⚠ Minor gaps: Job mentions Kubernetes (not in your profile)RECOMMENDATION: Apply immediately. Strong candidate.
62% Match — Good
DECENT MATCH — Some alignment with your profile:✓ Skills: 6/10 required skills match (React, TypeScript, Node.js, PostgreSQL, Git, Docker)⚠ Experience: Role targets mid-level (3-5 yrs), you have 6 years✓ Compensation: $120k-$180k overlaps with your range⚠ Location: Hybrid (SF office 2x/week), you prefer full remote⚠ Gaps: Job requires Vue.js, Terraform, and KubernetesRECOMMENDATION: Consider if willing to compromise on remote status.
43% Match — Fair
WEAK MATCH — Limited alignment with your profile:⚠ Skills: Only 4/12 required skills match (JavaScript, Git, Docker, AWS)⚠ Experience: Role requires lead/staff level (8+ years), you have 6⚠ Compensation: $200k-$300k is above your stated range✓ Location: Remote-friendly⚠ Major gaps: Requires Python, ML experience, infrastructure skillsRECOMMENDATION: Skip unless you're looking to pivot into ML/infrastructure.
// Sort jobs by score descendingconst sortedJobs = [...jobs].sort((a, b) => (b.ai_match_score ?? 0) - (a.ai_match_score ?? 0))
// GET /api/jobs with min_score filterconst response = await fetch('/api/jobs?min_score=80')const data = await response.json()// Returns only jobs with score >= 80
SELECT id, company_name, job_title, ai_match_scoreFROM jobsWHERE user_id = $1 AND ai_match_score >= 80 AND deleted_at IS NULLORDER BY ai_match_score DESC;