▸ featured · case study — № 014 · apr 18 '26 · 8 min
Rewriting matchpro's matching engine
What I learned from watching recruiters click for three weeks.
for three years matchpro matched candidates to jobs the lazy way — a tf-idf over titles, with a sprinkle of rules. it was fine. not great. recruiters kept emailing me screenshots of obvious matches it missed. so this spring i sat down and rebuilt the whole thing.
"matching is not search. search rewards precision. matching rewards being interestingly close."
- throw away the ranker — kept the data, dropped the model. started from a blank ipynb.
- embed everything — résumé + job text → small multilingual model, cached in pg_vector.
- re-rank with signals — location, seniority, years-in-stack. boring features still win.
- shadow-run for 3 weeks — a/b on recruiters' clicks. watched dashboards more than family.
the numbers after 11 weeks: match-quality 41% → 78%, time-to-first-click 9.2s → 3.1s, weekly placements 12 → 28, p95 latency 640ms → 180ms.
read the full postmortem on /work/matchpro.