CH.05Rewriting matchpro's matching engine— What I learned from watching recruiters click for three weeks.
← all posts
#0142026-04-188 minlong read

▸ 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."

  1. throw away the ranker — kept the data, dropped the model. started from a blank ipynb.
  2. embed everything — résumé + job text → small multilingual model, cached in pg_vector.
  3. re-rank with signals — location, seniority, years-in-stack. boring features still win.
  4. 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.