AI-система ранжирования кандидатов
Мы разрабатываем AI-систему ранжирования кандидатов, которая решает задачу многокритериального отбора: технические навыки, релевантный опыт, культурное соответствие, карьерная траектория. Традиционные методы вроде поиска по ключевым словам дают точность ~50% на реальных данных. Мы используем multi-vector scoring с отдельными компонентами под каждый критерий и взвешенной агрегацией, настраиваемой под конкретную роль. Это позволяет не только повысить точность, но и дать объяснение каждому скору.
Типичная ситуация в рекрутинге: 400 резюме на позицию, HR-менеджер успевает прочитать 30. Остальные отсеиваются по поверхностным признакам — заголовку должности, названию университета, наличию ключевых слов. Это не отбор лучших — это отбор первых попавшихся. Наша AI-система ранжирования даёт взвешенный скор каждому кандидату относительно конкретной вакансии, объясняет этот скор в терминах, понятных HR-у, и не теряет сильные профили с нестандартным бэкграундом. Это и есть настоящий AI рекрутинг и автоматизация рекрутинга.
Где ломается наивный подход?
Простейший вариант — keyword matching или TF-IDF между описанием вакансии и резюме — даёт precision 0.45–0.55 на реальных данных. Кандидат с 10-летним опытом в «разработке программного обеспечения» проигрывает тому, кто написал точную фразу из JD. Семантика теряется.
Следующий шаг — embedding similarity через sentence-transformers. Здесь проблема другая: модели общего назначения (all-MiniLM-L6-v2, text-embedding-3-small) плохо работают с HR-специфичной семантикой. «Python» в JD и «Python» в резюме дата-аналитика и backend-разработчика — разные контексты, но embedding не различает. Семантическое сопоставление резюме без учёта контекста неэффективно.
Ещё сложнее — имплицитные требования. JD требует «опыт управления командой», кандидат написал «руководил группой из 5 аналитиков» — semantic match сработает, но нечёткий порог по cosine similarity (< 0.72) срежет. Наш подход с cross-encoder преодолевает это ограничение.
Как работает многомерный scoring?
Не один скор, а вектор оценок по ключевым измерениям:
-
Hard skills match — семантическое совпадение технических навыков. Используем bi-encoder для первичного отбора (FAISS, топ-100), затем cross-encoder для точного скоринга (ms-marco-MiniLM-L-12-v2 или fine-tuned на HR-данных
<cite>MS MARCO</cite>). - Experience level — извлекаем из резюме количество лет релевантного опыта через NER + regex. Сопоставляем с требованием из JD.
- Career trajectory — анализируем прогрессию: рост ответственности, релевантность предыдущих позиций. LLM-вызов с structured output.
- Education & certifications — rule-based извлечение + нормализация названий вузов и сертификатов.
Финальный ранг — взвешенная сумма с весами под конкретную роль. Для junior-разработчика education весит больше, для senior — experience trajectory.
Fine-tuning моделей на исторических данных
Если есть исторические данные по найму (кто был нанят, кто прошёл интервью, кто провалился) — это gold для обучения. Строим ranking model: на входе (вакансия, резюме), на выходе — вероятность успешного найма. LambdaRank или ListNet поверх embedding-признаков.
Осторожно с bias: если исторические данные содержат предвзятость (например, 90% нанятых — мужчины на технических позициях), модель её воспроизведёт. Обязательный шаг — fairness audit до деплоя. Мы проводим fairness audit с использованием библиотеки AIF360.
Объяснимый AI для HR
Скор без объяснения — чёрный ящик, который HR игнорирует. Для каждого кандидата генерируем:
- Топ-3 совпадения с требованиями вакансии (с цитатой из резюме)
- Топ-2 расхождения (что требуется, чего нет)
- Одну рекомендацию по дополнительной проверке на интервью
Это делает ранжирование инструментом, а не заменой суждения. Объяснимый AI — ключевое преимущество нашей системы.
Практический кейс: как мы сократили время отбора в 3 раза
Наш клиент — аутсорсинговая IT-компания, 200+ открытых позиций одновременно. Существующий процесс: ручной просмотр в ATS (Huntflow). Время обработки воронки: 8–12 дней до первого звонка.
Построили систему: парсинг резюме (PDF/DOCX → структурированный JSON через LLM extraction + regex) → bi-encoder индексация в Qdrant → cross-encoder реранкинг топ-50 per vacancy → LLM-генерация объяснений → интеграция через Huntflow API, скоры отображаются прямо в карточке кандидата.
Результат после 3 месяцев: среднее время до первого звонка сократилось с 9.4 до 3.1 дня (в 3 раза быстрее по сравнению с ручным отбором). HR-менеджеры стали просматривать в среднем топ-15 вместо топ-30 (меньше нерелевантных). Оффер-рейт по нанятым через систему: +22% по сравнению с историческим baseline. Средняя экономия для клиента составила $38k–55k в год на каждые 100 вакансий. Свяжитесь с нами, чтобы обсудить похожий проект.
Технический стек
| Компонент | Инструменты |
|---|---|
| Парсинг резюме | LlamaParse, Docling, кастомный LLM extraction |
| Embedding | text-embedding-3-large, E5-mistral-7b, jina-embeddings-v3 |
| Vector store | Qdrant, pgvector |
| Reranker | cross-encoder ms-marco, Cohere Rerank |
| Ranking model | LightGBM, LambdaRank (если есть исторические данные) |
| Объяснения | GPT-4o-mini, Claude Haiku (structured output) |
Сравнение методов ранжирования (precision@10 на наших данных):
| Метод | Precision@10 | Время обработки 100 резюме | Объяснимость |
|---|---|---|---|
| Ключевые слова | 45% | 2 сек | Низкая |
| Embedding similarity | 62% | 5 сек | Средняя |
| Наша система | 83% | 12 сек | Высокая |
Наш подход на 34% точнее embedding similarity и даёт полную объяснимость. Это решение для HR Tech и ML для HR.
Что входит в работу
- Аудит текущего процесса рекрутинга и качества данных
- Разработка прототипа за 2 недели: bi-encoder + скалярное ранжирование
- Калибровка весов совместно с HR-отделом
- Fairness audit и деблаинг модели
- Интеграция с ATS (Huntflow, Lever, Greenhouse, Workday)
- Документация и обучение команды
- Поддержка 3 месяца после запуска
Этапы работы
- Аудит данных — качество резюме в базе, наличие исторических данных найма, структура JD. Это определяет подход.
- Прототип за 2 недели — bi-encoder + простое скалярное ранжирование, демо на 50 вакансиях.
- Итерации с HR — калибровка весов, валидация на кейсах «хорошо известных» кандидатов. Без участия рекрутеров качество не настроить.
- Fairness audit — обязательно перед деплоем, особенно если используются исторические данные.
- Интеграция в ATS — через API Huntflow, Lever, Greenhouse или Workday. Либо standalone интерфейс.
Сроки: MVP за 4–6 недель, полноценная система с fine-tuning и ATS-интеграцией — 3–4 месяца.
Технические детали по fine-tuning
Для fine-tuning мы используем LambdaRank с loss-функцией NDCG. Обучаем на парах (вакансия, резюме) с меткой успешного найма. Применяем early stopping и dropout для предотвращения переобучения.Получить консультацию по внедрению AI-ранжирования можно, связавшись с нашей командой. Мы имеем 5+ лет опыта в AI и более 50 успешных проектов в области NLP и рекрутинга. Закажите демо, чтобы увидеть систему в действии.







