Legan Studio
Все статьи
~ 15 мин чтения

HR-бот в MAX: приём заявок и онбординг

Как HR-бот в MAX закрывает приём резюме, первичный скрининг, онбординг и внутренние HR-сервисы для сотрудников и кандидатов.

  • MAX
  • HR
  • автоматизация

HR — одно из самых живучих применений ботов: процессы повторяются, объем рутины большой, цена ошибки в скорости отклика — конкретный кандидат, который уйдет к тем, кто ответил быстрее. Разберем, как HR-бот в MAX закрывает три ключевых блока: подбор, онбординг и сервис для действующих сотрудников.

Блок 1. Подбор и скрининг

Боль рекрутера — отвечать одинаковыми сообщениями десяткам кандидатов. HR-бот забирает на себя:

  • Прием отклика. Кандидат заполняет короткую форму, прикрепляет резюме.
  • Скрининговые вопросы. «Опыт от X лет», «готовы ли к командировкам», «уровень английского».
  • Автоматическое отсеивание. Кандидаты, не прошедшие фильтры, получают вежливый отказ; релевантные — в работу к рекрутеру.
  • Запись на собеседование. Бот предлагает свободные слоты в календаре HR.
  • Напоминания. За день и за час до встречи.

Это не «замена рекрутера», а очистка его дня от рутины. Рекрутер общается с кандидатами, которые уже прошли первичный фильтр.

Сценарий скрининга кандидата (FSM)

Конечный автомат скрининга — явный граф состояний. Без FSM сценарий превращается в спагетти из вложенных if-ов. Типовой граф: GREETING (приветствие + согласие на ПДн по 152-ФЗ) → VACANCY_SELECT (выбор вакансии из ATS) → анкета (PROFILE_FIO, PROFILE_CONTACTS с валидацией, PROFILE_EXPERIENCE, PROFILE_SALARY, PROFILE_CITIZENSHIP) → RESUME_UPLOAD (PDF/DOCX, до 10 МБ) → SCREENING_Q (3–7 вопросов под вакансию) → INTERVIEW_SLOTCONFIRM.

Ветки: REJECT (фильтр не пройден → вежливый отказ + сохранение в резерв на 6 мес) и HUMAN (нестандартный ответ или ключевые слова «жалоба», «конфликт», «юрист» → передача живому HR). Состояние — в Redis с TTL 7 дней, кандидат может вернуться и продолжить с того же шага.

class ScreeningState(str, Enum):
    GREETING, VACANCY_SELECT, PROFILE_FIO = "greeting", "vacancy_select", "profile_fio"
    PROFILE_CONTACTS, PROFILE_EXPERIENCE = "profile_contacts", "profile_experience"
    PROFILE_SALARY, PROFILE_CITIZENSHIP = "profile_salary", "profile_citizenship"
    RESUME_UPLOAD, SCREENING_Q = "resume_upload", "screening_q"
    INTERVIEW_SLOT, CONFIRM = "interview_slot", "confirm"
    REJECT, HUMAN = "reject", "human"

Парсинг резюме

После загрузки PDF/DOCX бот извлекает структурированные поля и матчит их по требованиям вакансии. Это снимает ручной разбор сотен резюме в день.

Извлекается: ФИО, телефон, email (регулярки), опыт работы со списком мест и датами, навыки по справочнику из 300–500 ключевых слов на роль (Python, 1С, SAP, английский B2 и т.д.), образование, город. Инструменты: pdfplumber или PyMuPDF для PDF (включая многоколоночную верстку), python-docx для DOCX, dateparser для русских дат («май 2019 — наст. время»), RecruitFlow API или собственный сервис на spaCy для извлечения сущностей.

Псевдокод матчинга:

def score_resume(resume_text: str, vacancy: Vacancy) -> ResumeScore:
    skills_found = extract_skills(resume_text, vacancy.skills_dict)
    experience_years = extract_experience_years(resume_text)
    salary = extract_expected_salary(resume_text)

    skill_score = sum(s.weight for s in skills_found) / vacancy.max_skill_weight
    exp_score = min(experience_years / vacancy.min_experience, 1.0)
    salary_fit = 1.0 if salary <= vacancy.salary_max else 0.5

    total = 0.5 * skill_score + 0.3 * exp_score + 0.2 * salary_fit
    return ResumeScore(total=total, skills=skills_found, experience=experience_years)

Резюме со скором ниже 0.4 уходит в архив, 0.4–0.7 — в очередь рекрутера, выше 0.7 — на интервью с приоритетом.

Типовые вопросы скрининга по ролям

Шаблоны вопросов с весами для скоринга. Веса подбираются под вакансию, ниже — отправная точка.

КатегорияРазработчикМенеджерЛинейный персонал
Опыт в профиле (лет)331
Ключевой инструмент5 (Python/Go/Java)3 (CRM, BI)2 (касса, склад)
Английский2 (B2)30
Командировки / ночные смены1 / 03 / 02 / 4
Удалёнка / гибрид / офис320 (офис)
Smoke-задача / тест5 (live-coding)3 (кейс)2
Сертификации, мед-книжка, права112
Попал в зарплатную вилку / срок выхода4 / 24 / 35 / 4
Соц. пакет (ДМС, обеды) важен?123

Сумма нормализуется; минимальный проходной балл — 60% от максимума, порог настраивает рекрутер.

Блок 2. Онбординг новых сотрудников

Первая неделя на новом месте — это вечные «а где взять?», «к кому идти за?», «как оформить?». HR-бот превращается в личного гида:

  1. Структурированный план первых дней. Бот выдает чек-лист по дням и отмечает выполненное.
  2. Документы и инструкции. Положения, регламенты, NDA — все в одном месте.
  3. Контакты команды. «Кто отвечает за оборудование», «к кому идти с доступами».
  4. Опросы вовлеченности. Через неделю, через месяц, через три.

Параллельно HR видит, кто завис на каком этапе, и точечно помогает.

Онбординг нового сотрудника: чек-лист первой недели

Чек-лист в боте — интерактивный поток с дедлайнами, напоминаниями и эскалацией наставнику.

  • День 1. Договор, NDA, согласие на ПДн; пропуск, ноутбук, SIM; почта и SSO; встреча 30 мин с руководителем.
  • День 2–3. Доступы (CRM, таск-трекер, репозитории, файловое хранилище); обучение по продукту (видео + квиз в боте); 15-минутные «coffee chat» с командой.
  • День 4–5. Регламенты (безопасность, ИТ-политика, охрана труда, антикоррупция, с подписью); SMART-цели на испытательный; назначение buddy.
  • Опросы: день 7 — пульс из 3 вопросов; день 30 — 10 вопросов про команду и инструменты; день 90 — итог испытательного, eNPS работодателя.

Если новичок не отметил пункт за дедлайн, бот пингует HR и руководителя — спасает от ситуации «забыли выдать доступ, человек неделю не работал».

Блок 3. HR-сервис для действующих сотрудников

Постоянные обращения, которые отлично уходят в бот:

  • Заявка на отпуск (с интеграцией в 1С:ЗУП).
  • Справки 2-НДФЛ и с места работы.
  • Заявки на командировки.
  • Запросы в IT (доступы, оборудование).
  • Запись к корпоративному психологу/врачу.
  • Обратная связь и анонимные опросы.

Эти задачи легко автоматизируются и снимают значительный поток с HR-отдела. Особенно эффективно в компаниях от 50 человек: ROI выходит за 3–6 месяцев.

Архитектура HR-бота

Состав: бот-фронт (сценарии, FSM, экраны), БД (кандидаты, сотрудники, заявки, документы), интеграции (1С:ЗУП, ATS, календарь, файловое хранилище), уведомления (HR, руководители, сотрудники), админ-панель для рекрутеров. Самый сложный блок — интеграция с 1С:ЗУП: у каждой компании она настроена по-своему, часто проще добавить отдельный коннектор.

Интеграция с 1С:ЗУП

Обмен с 1С:ЗУП — три варианта: HTTP-сервисы 1С (публикуем расширение с REST-эндпоинтами /hs/hr/*, авторизация Basic или JWT — самый прозрачный путь), OData (встроен в платформу, но медленный — для редкого чтения), файловый обмен XML/CSV через каталог + регламентное задание (устаревший, но иногда единственный в закрытом контуре).

Сущности: Кандидат → Физлицо при оффере (ФИО, паспорт, СНИЛС, ИНН); Вакансия → Штатная позиция (чтение); Сотрудник (двусторонний обмен — статус, должность, подразделение); Заявление на отпуск → документ «Отпуск» с автоматическим расчётом отпускных; Командировка → документ + авансовый отчёт; Справки 2-НДФЛ / с места работы — генерация в 1С, бот возвращает PDF.

Грабли: разные конфигурации (ЗУП 3.1, КОРП, ЗГУ для бюджетников, УХ как часть ERP) требуют адаптера на стороне коннектора; версионность — релизы 1С ломают сигнатуры HTTP-сервисов, нужны контрактные тесты; производительность — тяжёлые запросы (расчёт зарплаты) делать асинхронно; лицензии — каждая параллельная сессия HTTP-сервиса = клиентская лицензия 1С, пулим соединения.

Интеграция с HuntFlow / FriendWork / Поток

Если у компании уже стоит ATS, бот не дублирует кандидатскую базу, а работает как канал в существующую систему.

СистемаАвторизацияЧто передаётсяЛимиты
HuntFlowAPI-токен (Bearer)Кандидат, резюме, статус воронки100 req/min
FriendWorkOAuth2 + refreshКандидат, отклик, события воронки60 req/min
Поток (Skillaz)API-ключ + подписьКандидат, вакансия, оффер, документыпо договору
E-StaffSOAP + сессионный ключКандидат, резюме, историябез жёстких

Поток: бот парсит резюме → создаёт кандидата в ATS (POST /candidates) → прикрепляет файл (multipart) → ставит на нужный этап воронки → подписывается на webhook этапов и шлёт кандидату сообщение, когда рекрутер двигает его в ATS. При превышении лимитов — экспоненциальный backoff и очередь на стороне коннектора. Дубли отсекаем по email + телефону.

Бронирование интервью с календарём

Бот сам подбирает свободные слоты в календарях участников и фиксирует встречу.

Поддерживаемые календари:

  • Microsoft Outlook / Exchange — Microsoft Graph API (/me/calendar/getSchedule, /events).
  • Yandex.Календарь — CalDAV или Yandex 360 API.
  • Google Calendar — Google Calendar API (freebusy.query, events.insert).

Алгоритм: берём календари рекрутера и руководителя на 5 рабочих дней вперёд → freebusy с шагом 30 мин в рабочее время (10:00–18:00 локали участника) → пересекаем свободные интервалы → показываем кандидату 6–8 ближайших слотов.

Часовые пояса — главная боль. Храним всё в UTC, конвертируем в локаль участника, учитываем переход на летнее/зимнее время. Напоминания: за 24 ч — кандидату и интервьюерам с кнопками «перенести/отменить»; за 1 ч — повтор со ссылкой на видео-комнату; за 15 мин — финальный пинг. Отмена освобождает слот и автоматически предлагает кандидату 3 новых; перенос — двусторонний.

Опросы eNPS и exit-интервью

eNPS (Employee Net Promoter Score) — индекс лояльности. Раз в квартал бот шлёт один вопрос: «Насколько вероятно, что вы порекомендуете нашу компанию как работодателя по шкале 0–10?» + необязательный комментарий. Расчёт: % промоутеров (9–10) − % критиков (0–6). Норма для российского ИТ — 20–40, выше 50 — отлично.

Анонимизация. Ответы пишутся в БД без user_id, только с привязкой к подразделению размером ≥ 7 человек — иначе по составу можно вычислить автора и откровенных ответов не будет. Exit-интервью запускается при смене статуса на «увольняется»: 8–10 вопросов про причину ухода, что нравилось/мешало, готовность вернуться. Результаты — только HR-директору, без линейного руководителя ушедшего. Дашборд — динамика eNPS по кварталам, разрез по подразделениям и стажу, корреляция с retention.

Ролевая модель и доступы

Один бот, разные интерфейсы — у каждой роли свой набор экранов. Роль определяется по справочнику сотрудников из 1С + корпоративному SSO.

РольЧто видит и делает
КандидатПрофиль, статус отклика, скрининг, слоты на интервью
Новичок (90 дней)Чек-лист онбординга, контакты, документы, опросы пульса
СотрудникЗаявки на отпуск, справки 2-НДФЛ, командировки, eNPS
Руководитель+ согласования, дашборд по команде, 1:1, смотр кандидатов
HR / рекрутерАдминка, воронка, метрики, ручной режим работы с кандидатами
HR-директорСводный дашборд, eNPS, exit-интервью, KPI

Переключение ролей — автоматическое при смене статуса в HR-системе (кандидат → новичок → сотрудник → бывший). Доступ к чужим данным по принципу минимальных привилегий, любое расширение прав логируется и согласуется HR-директором.

Защита персональных данных в HR-боте

HR-бот работает с чувствительными ПДн: ФИО, паспорта, СНИЛС, медицинские справки. Базовая гигиена — данные хранятся на российских серверах (152-ФЗ, 242-ФЗ), доступ по ролям с журналом действий, файлы в защищённом S3-совместимом хранилище, согласия на ПДн собираются явно при первом взаимодействии. Сверх этого — режим 86–90 ТК РФ и подзаконные акты РКН:

  • Минимизация. Паспорт — не на этапе отклика, а только на этапе оффера. Резюме отказников хранится не более 6 месяцев (или до 3 лет с явным согласием на резерв).
  • Шифрование. Личные дела at rest (AES-256, ключи в KMS) и in transit (TLS 1.2+); сканы паспортов и СНИЛС — отдельный bucket со строгим ACL.
  • Журнал доступа. Кто, когда, какое поле смотрел/менял — append-only / WORM, срок хранения 3 года. В дашборды идут хэши и агрегаты, не ФИО.
  • Сроки хранения по ТК при увольнении: 75 лет для личных карточек, 5 лет для приказов, с ограничением доступа узкому кругу.
  • Уведомление РКН об обработке ПДн обязательно; отдельно — о трансграничной передаче при использовании зарубежных сервисов.

Штрафы по 152-ФЗ для юрлиц — до 18 млн рублей за повторное нарушение, плюс репутационный ущерб.

Что не стоит автоматизировать

Несколько процессов, которые лучше оставить людям:

  • Финальные собеседования. Бот может назначить, но не провести.
  • Сложные конфликты. Любой намек на жалобу или конфликт — мгновенно к человеку.
  • Мотивационные разговоры. Это эмоциональный канал, бот тут не работает.
  • Решения по увольнению. Очевидно.

Бот хорош на стандартизированных задачах, и плох — на эмоциональных и нестандартных.

Метрики и KPI HR-бота

Что отслеживать: время от отклика до первого живого общения, время закрытия вакансии, стоимость найма, конверсии воронки, доля типовых HR-запросов без участия человека, eNPS, доля доходящих до 90-го дня. Ниже — типовые значения «до и после» внедрения по проектам в компаниях 100–500 человек, разброс по отраслям ±30%.

МетрикаДоПослеЭффект
Время первого ответа кандидату8–24 ч< 2 минx100–500
Время закрытия линейной вакансии18–25 дней9–12 дней−50%
Стоимость найма, линейный / ИТ18 / 95 тыс. ₽9 / 65 тыс. ₽−30…50%
Конверсия отклик → интервью → оффер8% / 22%14% / 28%+75 / +27%
Доля доходящих до 90-го дня78%89%+14%
Уходимость на испытательном (90d)22%11%−50%
Время на типовой HR-запрос25 мин1 минx25
Доля HR-запросов без участия человека0%65–80%
eNPS+12+28+16 п.п.

Срок окупаемости HR-бота при штате 100+ — 4–7 месяцев.

Итого

HR-бот в MAX — это инструмент сразу для трех задач: подбор, онбординг и внутренний сервис. Срок разработки — от 2 недель для одного блока до 1–2 месяцев для полной системы с интеграцией в 1С:ЗУП. Главное — четко определить процессы, которые автоматизируются, и оставить людям то, что требует эмпатии.

Частые вопросы

Какие задачи закрывает HR-бот в MAX?

Три блока. Подбор и скрининг — приём отклика и резюме, скрининговые вопросы (опыт, готовность к командировкам, английский), автоматическое отсеивание не подходящих кандидатов, запись на собеседование с напоминаниями. Онбординг новых сотрудников — структурированный план первых дней, документы и инструкции, контакты команды, опросы вовлечённости через неделю/месяц/три. HR-сервис для действующих — заявки на отпуск (с интеграцией в 1С:ЗУП), справки 2-НДФЛ, командировки, заявки в IT, запись к корпоративному психологу, анонимные опросы.

Как HR-бот помогает в подборе кандидатов?

Забирает рутинную часть рекрутера. Кандидат заполняет короткую форму, прикрепляет резюме. Бот задаёт 3–5 скрининговых вопросов («опыт от X лет», «готовы ли к командировкам», «уровень английского»). Кандидаты, не прошедшие фильтры, получают вежливый автоматический отказ; релевантные — в работу к рекрутеру с уже собранным контекстом. Бот предлагает свободные слоты в календаре HR для собеседования и отправляет напоминания за день и за час. Это не замена рекрутера, а очистка его дня от рутины.

Как организовать онбординг через HR-бота в MAX?

Бот превращается в личного гида первой недели. Структурированный план первых дней — бот выдаёт чек-лист по дням и отмечает выполненное. Документы и инструкции — положения, регламенты, NDA в одном месте. Контакты команды — кто отвечает за оборудование, к кому идти с доступами. Опросы вовлечённости — через неделю, через месяц, через три. Параллельно HR видит, кто завис на каком этапе, и точечно помогает. Это снимает классическую боль новичка «не знаю, к кому идти», и ускоряет выход на полную продуктивность.

Как HR-бот интегрируется с 1С:ЗУП и кадровыми системами?

Через отдельный коннектор-сервис. Самый сложный блок — интеграция с 1С:ЗУП, потому что у каждой компании она настроена по-своему. Бывает, что проще добавить отдельный коннектор, чем подстраиваться под существующий обмен. Технически HR-бот состоит из бот-фронта (сценарии, FSM, экраны), БД (кандидаты, сотрудники, заявки, документы), интеграций (1С:ЗУП, кадровая система, корпоративный календарь, файловое хранилище), уведомлений (HR, руководители, сотрудники), админ-панели (веб-интерфейс для рекрутеров).

Как защищать персональные данные в HR-боте?

HR-бот по определению работает с ПДн: ФИО, паспорта, СНИЛС, медицинские справки. Все данные хранятся на российских серверах (152-ФЗ, 242-ФЗ). Доступ — по ролям с журналом действий: кто, когда и какие данные смотрел. Файлы — в защищённом S3-совместимом хранилище со сроками хранения по политике компании (обычно 5 лет для финансовых документов). Согласия на обработку ПДн собираются явно при первом взаимодействии. Это не бюрократия, а защита от штрафов 152-ФЗ и от утечек, которые в HR-сегменте особенно болезненны.

Какие задачи в HR не стоит автоматизировать ботом?

Эмоциональные и нестандартные. Финальные собеседования — бот может назначить, но не провести. Сложные конфликты — любой намёк на жалобу или конфликт мгновенно к человеку. Мотивационные разговоры — это эмоциональный канал, бот тут не работает. Решения по увольнению — очевидно. Бот хорош на стандартизированных задачах (приём заявки, оформление справки, ответы по регламенту) и плох — на эмоциональных и нестандартных, где нужна эмпатия. В компании 100+ человек грамотно сделанный бот экономит несколько часов HR-специалиста в день.

Как бот парсит PDF и DOCX резюме и матчит их с вакансией?

Текст из PDF извлекается через pdfplumber или PyMuPDF (включая многоколоночную верстку), из DOCX — через python-docx. Затем по регуляркам и эвристикам выделяются ФИО, телефон, email, города; через словарь из 300–500 ключевых слов на роль — навыки и инструменты; через dateparser — даты опыта работы и подсчёт суммарного стажа. Каждое совпадение имеет вес, итоговый скор считается как взвешенная сумма по навыкам, опыту и зарплатной вилке. Резюме со скором ниже 0.4 идут в архив, 0.4–0.7 — в очередь рекрутера, выше 0.7 — на интервью с приоритетом. Это снимает с рекрутера ручной разбор сотен резюме в день.

Какие способы интеграции HR-бота с 1С:ЗУП существуют?

Три варианта. HTTP-сервисы 1С — публикуем расширение конфигурации с REST-эндпоинтами /hs/hr/*, авторизация Basic или JWT, самый прозрачный путь. OData — встроен в платформу, но громоздкий и медленный, годится только для редкого чтения. Файловый обмен XML/CSV через каталог + регламентное задание — устаревший, но иногда единственный в закрытом контуре. Синхронизируются: кандидат → физлицо при оффере, штатные позиции, сотрудники, заявления на отпуск с автоматическим расчётом отпускных, командировки, справки 2-НДФЛ. Грабли — разные конфигурации (ЗУП 3.1, КОРП, ЗГУ, УХ как часть ERP), версионность релизов 1С, лицензии (каждая параллельная HTTP-сессия = клиентская лицензия).

Что особенного в защите ПДн именно в HR-боте?

Помимо 152-ФЗ работают статьи 86–90 ТК РФ. Минимизация — паспорт запрашиваем не на этапе отклика, а на этапе оффера. Резюме отказников — хранение не более 6 месяцев (или до 3 лет с явным согласием на резерв). Шифрование at rest (AES-256, ключи в KMS) и in transit (TLS 1.2+); сканы паспортов и СНИЛС — отдельный bucket со строгим ACL. Журнал доступа append-only/WORM, срок хранения 3 года. Псевдонимизация в аналитике — в дашборды идут хэши и агрегаты, не ФИО. Уведомление РКН об обработке ПДн обязательно, отдельно — о трансграничной передаче. Штрафы по 152-ФЗ для юрлиц — до 18 млн рублей за повторное нарушение.