Бот скрининга откликов
▍Telegram-бот, который собирает анкету, оценивает соответствие вакансии и отдаёт рекрутеру готовый шорт-лист.
Контекст
Заказчик — федеральная сеть с массовым наймом: десятки открытых вакансий и поток откликов из Telegram, с которым рекрутеры физически не успевали. Имя клиента не раскрываем по NDA.
До нас первичный скрининг шёл вручную: один и тот же набор вопросов задавался в переписке, ответы терялись, а половина кандидатов отсеивалась только из-за того, что им не ответили в первые сутки.
Мы сделали бота, который ведёт кандидата по анкете, проверяет жёсткие требования вакансии, считает матч-скор и кладёт рекрутеру в шорт-лист только тех, кто реально подходит — с обоснованием.
Задача
- 01Собрать анкету кандидата прямо в Telegram, без внешних форм
- 02Проверять жёсткие требования вакансии (город, график, опыт, права)
- 03Считать матч-скор и объяснять, почему именно такой
- 04Отдавать рекрутеру шорт-лист и выгружать в HRM / Хантфлоу
- 05Отвечать кандидату вежливо 24/7, даже при отказе
Решение
Диалог-анкета
Бот ведёт кандидата по шагам: должность, город, график, опыт. Прогресс-бар и кнопки вместо свободного текста там, где можно — меньше ошибок и быстрее проход.
Жёсткие фильтры
Стоп-вопросы вакансии (возраст 18+, наличие прав, готовность к смене) отсекают заведомо неподходящих сразу, не доводя до ручного просмотра.
Скоринг соответствия
По заполненной анкете считается матч-скор: веса по требованиям вакансии + разбор сильных и слабых сторон ответов. Рекрутер видит не цифру из воздуха, а из чего она собрана.
Шорт-лист рекрутера
Кандидаты с высоким скором попадают в шорт-лист с карточкой: ответы, скор, флаги. Карточка одним нажатием уходит в Хантфлоу с сохранением источника.
Вежливый отказ
Неподходящим бот отвечает корректно и сразу, без молчания на неделю. Это бренд работодателя — кандидат уходит без обиды.
Архитектура
Бот написан на aiogram 3: конечный автомат состояний (FSM) ведёт кандидата по анкете, состояние диалога держится в Redis, а ответы и матч-скор пишутся в PostgreSQL. Конфиг вакансии (вопросы, веса, стоп-фильтры) — это данные, а не код, поэтому новую вакансию заводит рекрутер без релиза.
Скоринг — детерминированные правила по требованиям вакансии, без чёрного ящика: каждый балл трассируется до ответа кандидата. Готовые карточки уходят в Хантфлоу через API; всё упаковано в Docker и переживает рестарт без потери незавершённых анкет.
Результаты
- времени на скрининг
- ответы кандидатам
- в одном боте
- первый ответ
Что не получилось с первого раза
- ✕Сначала прогресс анкеты держали только в памяти процесса — после деплоя кандидаты, не дошедшие до конца, теряли ответы и начинали заново. Часть просто не возвращалась. Перенесли состояние FSM в Redis: теперь рестарт и релиз незаметны, анкета продолжается с того же шага.
- ✕Первая версия скоринга была слишком строгой и резала хороших кандидатов на формулировках («стажа 11 месяцев» при пороге в год). Добавили мягкие веса вместо жёстких отсечек на нестоп-вопросах и ручной пересмотр пограничных карточек рекрутером — недобор по шорт-листу пропал.
“Раньше рекрутер тонул в одинаковых вопросах в переписке. Теперь к нему приходит готовый шорт-лист с обоснованием, а кандидат получает ответ за две минуты в любое время суток.
Команда
Что дальше
- →Авто-приглашение на собеседование из шорт-листа со слотами календаря
- →Аналитика воронки найма по источникам и вакансиям
- →Парсинг резюме из вложений для предзаполнения анкеты
- →Мультиязычный скрининг для регионального найма

