Перейти к содержанию
Новое AiManual теперь в MAX Подписаться
Публикация AiManual

Автоматизация массового найма: как Telegram-бот с LLM и скорингом ускорил подбор персонала в 3 раза

Практический кейс: Telegram-бот с LLM-оценкой и скорингом сократил время закрытия вакансий с 30 до 10 дней и снизил затраты на подбор на 40%. Интеграция с HeadH

Коротко

Что будет в материале

  1. 01

    Проблема: почему ручной отбор кандидатов перестал работать

  2. 02

    Архитектура решения: от простой анкеты до AI-платформы

  3. 03

    Метрики эффективности: что изменилось после внедрения

  4. 04

    Борьба с накрутками: как бот детектирует использование ИИ кандидатами

Проблема: почему ручной отбор кандидатов перестал работать

Отдел подбора персонала среднего производственного холдинга обрабатывал 500+ откликов на одну вакансию. Четыре рекрутера тратили 70% рабочего времени на первичный скрининг: открывали резюме на HeadHunter, копировали ответы в таблицу, вручную проставляли оценки. Среднее время реакции на отклик составляло 38 часов. За эти полтора дня 19% кандидатов просто теряли интерес и не завершали анкету, а 12% успевали принять оффер конкурентов.

Ситуация знакома многим HR-департаментам: информационный хаос из разрозненных резюме, тестовых заданий и чатов с кандидатами нарастает пропорционально объёму найма. Проблема не в количестве рекрутеров, а в отсутствии структуры. Ровно та же боль, которую решает AI-MANUAL в сфере знаний об искусственном интеллекте, только в HR-контексте: данных много, а релевантного сигнала - единицы.

Когда бизнес-план потребовал нанять 300 линейных сотрудников за квартал, ручная модель рухнула окончательно. Затраты на аутсорсинг подбора выросли до 2,4 млн рублей в месяц, а время закрытия одной позиции растянулось до 30 дней. Ответом стала разработка Telegram-бота, который прошёл путь от простой анкеты до AI-платформы с LLM-оценкой, скорингом и автоматической коммуникацией. Результат: время закрытия вакансии сократилось до 10 дней, затраты упали на 40%, а доля брошенных анкет снизилась с 19% до 7%.

Архитектура решения: от простой анкеты до AI-платформы

Разработка шла итеративно, тремя этапами. Первая версия - Telegram-бот, который просто собирал структурированные ответы кандидатов вместо PDF-резюме. Вторая версия подключила LLM для оценки открытых вопросов. Третья превратила бота в платформу с аналитикой воронки, триггерными сообщениями и базой знаний.

Модульная архитектура позволила не переписывать ядро при каждом изменении. Бот состоит из четырёх независимых слоёв: сбор данных (интеграция с внешними API), обработка (LLM-оценка и скоринг), коммуникации (триггеры и FAQ), аналитика (визуализация воронки). Каждый слой можно настраивать под конкретную вакансию без вмешательства в остальные.

Стек решения: Python (aiogram для Telegram API), PostgreSQL для хранения анкет и статусов, Redis для кэширования состояний диалога, OpenAI-совместимое API для LLM-оценки. Инференс запущен на собственной инфраструктуре, чтобы не платить за токены на каждом отклике - при потоке 500+ кандидатов это критично для экономики решения.

Интеграция с HeadHunter: автоматический сбор откликов

Бот подключён к HeadHunter API через вебхуки. При появлении нового отклика на вакансию hh.ru отправляет POST-запрос на эндпоинт бота, передавая ID резюме, контактные данные и ответы на предварительные вопросы работодателя. Бот забирает полное резюме через API, парсит структурированные поля (опыт, навыки, образование) и загружает в базу.

Проблема дублирования решена через сопоставление связки «телефон + email»: если кандидат откликнулся на две смежные вакансии, бот объединяет заявки в один профиль и предлагает выбрать приоритетную позицию. Актуализация данных работает через периодический опрос API HeadHunter: если статус резюме изменился (кандидат обновил опыт), бот подтягивает изменения и, при необходимости, пересчитывает скоринговый балл.

Интеграция сократила ручной перенос данных с 12 минут на кандидата до нуля. При потоке 500 откликов это экономит 100 человеко-часов только на этапе ввода информации.

LLM-оценка открытых ответов: промпты и критерии

Открытые вопросы - главный фильтр для оценки soft skills и мотивации. Вместо того чтобы рекрутер читал 500 эссе, текст прогоняется через LLM с жёстко структурированным промптом:

Ты - ассистент рекрутера. Оцени ответ кандидата на вопрос «Опишите ситуацию, когда вы разрешили конфликт с коллегой» по шкале 1-10.

Критерии:
— Конкретика: названы ли участники, обстоятельства, действия (1-4 балла)
— Результат: описан ли измеримый исход конфликта (1-3 балла)
— Рефлексия: сделал ли кандидат выводы, видна ли его роль (1-3 балла)

Верни ТОЛЬКО JSON: {"score": число, "reasoning": "краткое обоснование на русском"}

Модель возвращает числовую оценку и текстовое обоснование. Рекрутер видит итоговый балл и может раскрыть reasoning для выборочной проверки. Сравнение с ручной оценкой на выборке из 200 анкет показало корреляцию 0.82 по шкале Пирсона - достаточно для первичного скрининга. Главный выигрыш - скорость: 500 анкет обрабатываются за 8 минут против 25 часов ручного чтения. Непротиворечивость оценок также выросла: разные рекрутеры давали разброс до 3 баллов на одном ответе, LLM держит разброс в пределах 0.5 балла.

Важный нюанс: промпт калибруется под каждую вакансию. Для водителей критерии смещены в сторону безопасности и пунктуальности, для операторов колл-центра - в сторону стрессоустойчивости и грамотной речи. Один и тот же ответ «Я хорошо работаю в команде» получит разный вес в зависимости от контекста позиции.

Балльная система отбора: настройка скоринга под вакансию

Скоринговая модель собирает оценки со всех этапов воронки и вычисляет итоговый балл по формуле с настраиваемыми весами:

  • Релевантность опыта (парсинг резюме) - вес 30%
  • Ответы на открытые вопросы (LLM-оценка) - вес 25%
  • Результаты тестового задания (автопроверка) - вес 30%
  • Скорость прохождения этапов (вовлечённость) - вес 15%

Пример настройки для вакансии Python-разработчика: опыт коммерческой разработки от 2 лет даёт 30 баллов, успешное тестовое на алгоритмы - 50 баллов, высокий балл за открытые вопросы - 20 баллов. Порог отсечения - 70 баллов. Кандидаты ниже порога автоматически получают вежливый отказ с указанием, каких баллов не хватило. Те, кто выше, попадают в календарь рекрутера для телефонного интервью.

Веса меняются drag-and-drop в админ-панели бота. При закрытии вакансии система считает корреляцию между скоринговым баллом и фактом выхода на работу - это позволяет итеративно улучшать модель. За 6 месяцев эксплуатации точность предсказания «кандидат дойдёт до оффера» выросла с 0.64 до 0.81.

Метрики эффективности: что изменилось после внедрения

Сравнение проводилось на одинаковой выборке вакансий массового найма (операторы, водители, складской персонал) за два сопоставимых квартала до и после внедрения бота. Объём найма - 300 человек за квартал, количество откликов - порядка 1500 на все вакансии.

Метрика До внедрения После внедрения Изменение
Среднее время закрытия вакансии 30 дней 10 дней -67%
Затраты на подбор (1 сотрудник) 8 000 ₽ 4 800 ₽ -40%
Доля брошенных анкет 19% 7% -12 п.п.
Время реакции на отклик 38 часов 2 минуты -99.9%
Человеко-часы на первичный скрининг (месяц) 320 40 -87.5%

Снижение затрат на 40%: за счёт чего достигнута экономия

Основные статьи экономии распределились так: 55% - сокращение человеко-часов рекрутеров на скрининге и коммуникациях, 25% - уменьшение числа платных размещений на HeadHunter (вакансии закрываются быстрее, продлевать нужно реже), 20% - снижение количества очных интервью с заведомо неподходящими кандидатами.

При найме 100 сотрудников расчёт выглядит так: ручной подбор требовал 800 000 рублей (зарплата рекрутеров + бюджет на размещения + затраты на повторные собеседования). С ботом сумма снижается до 480 000 рублей. Экономия 320 000 рублей с каждой сотни нанятых окупает разработку и поддержку бота за первый же квартал активного найма.

Отдельный фактор - снижение стоимости ошибки найма. Когда неподходящий кандидат проходит три этапа интервью и получает оффер, компания теряет не только деньги на собеседования, но и время на повторный поиск. Скоринговая модель отсекает 92% заведомо слабых кандидатов на этапе анкеты, до того как к процессу подключится живой рекрутер.

Ускорение закрытия вакансий в 3 раза: анализ воронки

Ключевое ускорение происходит на этапе «отклик - первый контакт». Раньше рекрутер физически не мог обработать все отклики за день, и кандидаты ждали ответа до двух суток. Бот отправляет первое сообщение через 2 минуты после отклика: благодарит за интерес, предлагает заполнить анкету и сразу задаёт первый скрининговый вопрос. Конверсия в начало анкеты выросла с 62% до 89%.

Второй рывок - этап оценки. LLM обрабатывает открытые ответы параллельно для всех кандидатов, а не последовательно, как рекрутер. 500 анкет оцениваются за 8 минут, и топ-50 по скорингу сразу попадают в календарь для телефонного интервью. Раньше на это уходило 3-4 рабочих дня.

Третий фактор - автоматические уведомления. Кандидат получает сообщение о статусе заявки на каждом этапе: «Ваша анкета принята, ожидайте результатов тестового», «Вы прошли во второй этап, выберите время для звонка». Прозрачность процесса снижает тревожность и количество уточняющих сообщений рекрутеру на 70%.

Борьба с накрутками: как бот детектирует использование ИИ кандидатами

С распространением ChatGPT кандидаты начали генерировать ответы на открытые вопросы. Проблема не в самом использовании ИИ, а в том, что сгенерированный ответ не отражает реальные компетенции - на интервью такой кандидат проваливается, а время рекрутера уже потрачено.

Бот использует три метода детектирования. Первый - анализ лингвистической сложности текста (perplexity) через отдельную small-модель. Сгенерированные ответы имеют характерно низкую perplexity: слишком гладкие, без спонтанных переходов и мелких ошибок. Второй - темпоральные паттерны ввода. Telegram-бот логирует время между нажатиями клавиш. Копипаст из ChatGPT даёт мгновенную вставку большого объёма текста, тогда как живой человек печатает с паузами и исправлениями. Третий метод - сравнение стиля ответов на разные вопросы внутри одной анкеты. Если кандидат на вопрос «Почему выбрали нашу компанию?» отвечает живым рубленым языком, а на вопрос про конфликт выдаёт структурированный абзац с идеальной пунктуацией - это триггер.

Подозрительные анкеты не дисквалифицируются автоматически. Бот помечает их флагом «требует проверки» и снижает скоринговый балл на 15%. Финальное решение принимает рекрутер: он видит reasoning детектора и может запросить у кандидата короткое видео-интервью или дополнительный вопрос. Ложные срабатывания случаются примерно в 8% случаев - обычно это кандидаты с филологическим образованием, которые пишут «слишком хорошо» от природы. Для них предусмотрена кнопка «оспарить флаг» с ручным пересмотром.

Автоматизация коммуникаций: триггерные сообщения и база знаний

19% брошенных анкет - это не потеря интереса, а потеря фокуса. Кандидат начал заполнять форму в обеденный перерыв, отвлёкся на звонок и забыл. Через 24 часа бот отправляет напоминание: «Вы начали анкету на вакансию оператора, но не завершили. Осталось 3 вопроса, это займёт 5 минут». Конверсия возврата - 34%. Второе напоминание через 48 часов добавляет ещё 12%.

После завершения анкеты кандидат получает уведомление с прогнозом: «Ваша анкета обрабатывается, результаты будут через 15 минут». Если по скорингу он проходит дальше, бот предлагает выбрать слот для звонка через интеграцию с Google Calendar. Если нет - получает отказ с конкретной причиной и предложением подписаться на будущие вакансии. 23% «отказников» соглашаются остаться в базе - это снижает стоимость привлечения на будущие позиции.

База знаний для FAQ: снижение нагрузки на рекрутеров

До внедрения бота рекрутеры тратили 15 часов в неделю на ответы на типовые вопросы: «Какой график работы?», «Есть ли обучение?», «Когда выходят на смену?». База знаний содержит 87 структурированных вопросов-ответов, сгруппированных по темам: условия труда, требования к кандидатам, этапы отбора, оформление.

Поиск ответа работает через эмбеддинги. Вопрос кандидата векторизуется, и в базе ищется ближайший по косинусному сходству эталонный вопрос. Если сходство выше порога 0.85, бот отдаёт заготовленный ответ. Если ниже - переводит на живого рекрутера и логирует новый вопрос для пополнения базы. Точность автоматических ответов - 94%, за 6 месяцев база выросла с 50 до 87 вопросов за счёт реальных обращений.

Пример: кандидат пишет «Я хочу узнать про график, когда работать надо?». Система находит эталонный вопрос «Какой график работы?» и отдаёт ответ: «Сменный график 2/2 с 8:00 до 20:00. Ночные смены оплачиваются с коэффициентом 1.5». Кандидат получает точный ответ за 3 секунды вместо ожидания реакции рекрутера.

Связка триггерных сообщений и FAQ снизила нагрузку на рекрутеров по коммуникациям на 70%. Высвободившееся время ушло на глубинные интервью и финальный отбор - туда, где человеческое суждение незаменимо.

Ограничения и выводы: когда AI-рекрутинг не панацея

Описанное решение эффективно для массового найма линейного персонала: операторы, водители, складские работники, продавцы. Поток от 100 откликов на вакансию, типовые требования, стандартизированные этапы отбора. В этих условиях автоматизация даёт кратный выигрыш по скорости и стоимости.

Для точечного подбора senior-специалистов или руководителей модель работает хуже. При потоке 10-15 кандидатов затраты на настройку и поддержку бота не окупаются, а LLM-оценка открытых ответов не может заменить глубинное интервью с экспертом предметной области. Риск упустить нестандартного, но сильного кандидата становится значимым: если человек не вписывается в формальные критерии, но обладает уникальной экспертизой, скоринговая модель его отсечёт.

Качество данных критично. Если в компании нет истории найма с измеримыми результатами (кто из нанятых прошёл испытательный срок, кто показал высокую производительность), скоринг не на чем обучать. Первые 2-3 месяца бот работает на экспертных правилах, заданных рекрутерами вручную, и только накопив данные, начинает давать статистически обоснованные предсказания.

Человеческий контроль на финальных этапах остаётся обязательным. Бот отлично фильтрует явно неподходящих кандидатов и ранжирует перспективных, но решение о найме принимает человек. Это не ограничение технологии, а архитектурный принцип: AI сужает воронку с 500 до 50 кандидатов, а рекрутер выбирает из 50 лучших. Такой подход даёт максимальный ROI и минимизирует риски.

Главный вывод из кейса совпадает с принципом, который мы последовательно проводим в разборах AI-внедрений: автоматизация окупается, когда решает конкретную измеримую задачу, а не «внедряется ради инноваций». Telegram-бот с LLM и скорингом не заменил рекрутеров, а снял с них рутину, позволив заниматься тем, что действительно требует человеческого интеллекта - глубинными интервью и финальным отбором.

Структурирование хаоса первичного скрининга дало 67% сокращения времени закрытия вакансии и 40% экономии бюджета. Это те цифры, которые имеет смысл обсуждать с финансовым директором, а не абстрактные «преимущества цифровизации HR».

Подписаться на канал