▸ кейс — № 016 · 13 июн '26 · 6 мин
Матчинг — это не поиск: от ключевых слов к смыслу
почему маркетплейс вакансий выкинул матчинг по ключевым словам — и что оставил.
matchpro — это маркетплейс вакансий, и он держится на одной упрямой мысли:
«матчинг — это не поиск. поиск награждает за точность. матчинг награждает за интересную близость.»
поисковик оценивают по точности — ты ввёл postgres, ты хочешь строки, где написано postgres. матчинг — игра наоборот. лучшая вакансия для человека — часто та, которую он никогда не вбил бы в поиск, а лучший кандидат на роль — часто тот, кто описал ту же работу другими словами. оптимизируй матчинг как поиск — получишь систему, которая уверенно и метко ошибается.
эра ключевых слов
годами матчинг опирался на точные правила: совпадение ключевых слов и заголовков плюс горстка жёстких фильтров. это очевидная первая версия, и она даже не плоха — пока у всех общий словарь. в одной узкой области, на одном языке, люди сходятся на одних и тех же словах, и совпадение слов — приемлемый прокси для соответствия.
всё ломается, стоит выйти из этого мира. двое описывают одну и ту же работу разными словами — и не встречаются. сильный кандидат пишет прошлогоднюю должность. кто-то пишет вообще на другом языке. движок по ключевым словам видит не слабое совпадение — он видит никакого. а костыль — таблица синонимов и алиасов, которую руками растишь под каждую область, — гниёт быстрее, чем успеваешь обновлять.
от правил к смыслу
переписывание свелось к одной идее: сравнивать профиль и вакансию по тому, что они значат, а не по тому, какие слова у них случайно совпали. представь смысл каждой стороны — и пусть «близость по смыслу» находит то, что совпадению слов было не под силу. и вдруг «интересно близкие» совпадения — те, что рекрутер узнаёт мгновенно, а поиск прятал, — всплывают сами.
это та часть, что в демо выглядит магией, а в проде отрезвляет. отбор по смыслу щедрый; он находит много. именно поэтому он не может быть всей системой.
оставь скучные правила
смысл находит кандидатов. но не ему решать, кто реально подходит. есть вещи без полутонов — жёсткое требование остаётся жёстким требованием, и «интересно близко» — неправильный ответ, когда человек просто не может занять роль. поэтому жёсткие ограничения остались — как ворота, через которые смысл-совпадения обязаны пройти.
урок, который я переучиваю снова и снова: яркий слой (выученное сходство) и скучный слой (явные правила) — не соперники. скучный не зря ест свой хлеб. выкинь его — и твой умный матчер уверенно предложит невозможное.
смысл переносится
тихий бонус: смысл не привязан к словарю, поэтому тот же подход выходит за пределы области и языка, в которых родился. профиль на одном языке матчится с вакансией на другом — без таблицы перевода под каждую пару. перестаёшь поддерживать хрупкие словари под каждую область и начинаешь доверять представлению, которое обобщает.
приватность — часть матча
ещё одно ограничение определило всё: людей матчат анонимно. система работает с профилями без личных данных, а кто ты такой — раскрывается только когда обе стороны согласны на разговор. это продуктовая позиция, но и инженерная — она решает, что матчеру вообще позволено видеть, и держит стимулы честными. матчишь по сути, потому что какое-то время суть — это всё, что есть.
итог
сожми всё переписывание в одну строку: матчь по смыслу, решай по правилам, раскрывай по согласию. матчинг по смыслу собирает заголовки; но скучные ворота и позиция по приватности — вот что делает это пригодным к жизни. матчинг — это не поиск, и день, когда перестаёшь оптимизировать его как поиск, — это день, когда кажется, что система и правда понимает.
matchpro.io — privacy-first маркетплейс вакансий. это подход, а не рецепт — самое интересное остаётся в репозитории.