▸ в центре · кейс — № 014 · 18 апр '26 · 8 мин
Как я переписывал матчинговый движок matchpro
Что я понял, три недели наблюдая за кликами рекрутеров.
три года matchpro матчил кандидатов с вакансиями по-ленивому — tf-idf по заголовкам с щепоткой правил. было нормально. не отлично. рекрутеры продолжали присылать мне скриншоты очевидных матчей, которые движок не находил. этой весной я сел и переписал всё целиком.
«матчинг — это не поиск. поиск вознаграждает точность. матчинг вознаграждает интересную близость.»
- выкинуть ранкер — данные оставил, модель удалил. начал с пустого ipynb.
- эмбеддить всё — резюме + текст вакансии → небольшая мультиязычная модель, кэш в pg_vector.
- пере-ранжировать по сигналам — локация, сениорити, годы в стеке. скучные фичи всё ещё побеждают.
- тень-прогон 3 недели — a/b по кликам рекрутеров. смотрел на дашборды больше, чем на семью.
цифры через 11 недель: качество матча 41% → 78%, время до первого клика 9.2с → 3.1с, трудоустройств в неделю 12 → 28, p95 latency 640мс → 180мс.
полный разбор — в /work/matchpro.