¶ кейс — 01 · отгружено весна '26 · срок: 11 недель · команда: 1 теги: matching · search · postgres
старый движок матчил по ключевикам. новый — читает всё резюме целиком.
автор: евгений · 18 апр 2026 · ~8 мин чтения
три года matchpro матчил кандидатов с вакансиями по-ленивому — tf-idf по заголовкам с щепоткой правил. было нормально. не отлично. рекрутеры продолжали присылать мне скриншоты очевидных матчей, которые движок не находил. этой весной я сел и переписал всё целиком.
«матчинг — это не поиск. поиск вознаграждает точность. матчинг вознаграждает интересную близость.»
как это происходило
- выкинуть ранкер — данные оставил, модель удалил. начал с пустого ipynb.
- эмбеддить всё — резюме + текст вакансии → небольшая мультиязычная модель, кэш в pg_vector.
- пере-ранжировать по сигналам — локация, сениорити, годы в стеке. скучные фичи всё ещё побеждают.
- тень-прогон 3 недели — a/b по кликам рекрутеров. смотрел на дашборды больше, чем на семью.
результаты — через 11 недель
- качество матча (рекрутер 👍) — 41% → 78% (+37 пп)
- время до первого клика — 9.2с → 3.1с (−6.1с)
- трудоустройств в неделю — 12 → 28 (×2.3)
- latency (p95) — 640мс → 180мс (−72%)
› bench --cohort=q1-recruiters
running 2,140 matches…
✓ v3 beats v2 on 78% of pairs
! 4 regressions — investigating
› deploy prod
● опубликовано · 41kb · 2 графика · 6 сносок