feat(matching): Rebuild Tailored Job Matching Engine, Zero-Hallucination Seniority Protection, and Explainable Recommendations - #19
Open
superezzdev wants to merge 1 commit into
Conversation
…fied user profile - Add UserCareerProfile builder with verified duration, derived seniority, and project separation - Implement multi-stage deterministic matcher with hard filters, weighted scoring, and explainable reasons - Add seniority protection for entry-level candidates against senior/lead/staff roles - Add software candidate protection from non-tech role families (Finance, Marketing, HR) - Support user feedback (not relevant, hidden) and invalidation via profile_version - Integrate matching engine into jobs-service and API routes, eliminating legacy baseline score bugs - Update job-card and job-list UI with recommendation rationale, matched skills, missing requirements, and Not Relevant feedback - Add comprehensive benchmark evaluation test suite covering 10 test fixtures
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This pull request completely rebuilds the job recommendation and matching engine to strictly tailor jobs to the user's verified profile data (verified experience, skills, education, projects, and employment preferences), replacing the naive keyword search and artificial baseline scoring (
score = 55,Math.max(72, ...)).Recommendations now strictly adhere to the principle: "Rank jobs based on what this specific user can realistically apply for, using verified profile/resume information."
Key Architectural Changes
Database Schema & Invalidation Cache (
20260907_tailored_job_matching_system.sql):profile_version,preferred_roles,preferred_locations,remote_preference, andemployment_preferencestopublic.profiles.not_relevant,hidden, andfeedback_reasontopublic.user_job_interactions.normalized_job_dataJSONB column topublic.canonical_jobs.public.job_matchestable with unique constraint(user_id, job_id), indexing, and RLS policies.src/lib/resume/profile-sync.tsto incrementprofile_versionand purge stale cached matches whenever a user updates or reparses their resume.Verified User Career Profile Builder (
src/lib/matching/career-profile-builder.ts):ENTRY_LEVELforJob Normalization Engine (
src/lib/matching/job-normalizer.ts):INTERN,ENTRY_LEVEL,MID,SENIOR,LEAD, etc.).finance_accounting,marketing_sales,hr_recruiting,operations_support,ui_ux_design) to prevent keyword bleed.Multi-Stage Deterministic Matcher (
src/lib/matching/matcher.ts):not_relevantorhidden.Search Query Generation & AI Semantic Reranker (
query-generator.ts,ai-reranker.ts):"entry level full stack developer","junior software engineer react node","MERN developer") from verified signals instead of isolated weak keywords.UI & User Feedback Enhancements (
job-card.tsx,job-list.tsx,jobs-dashboard.tsx,/api/jobs):Verification & Test Suite
tests/matching/job-matching.test.ts):npx tsc --noEmit): 0 errors ✓npm test): 29 test files passed, 211 tests passed, 0 failures ✓