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_SLOT → CONFIRM.
Ветки: 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 — на интервью с приоритетом.
Типовые вопросы скрининга по ролям
Шаблоны вопросов с весами для скоринга. Веса подбираются под вакансию, ниже — отправная точка.
| Категория | Разработчик | Менеджер | Линейный персонал |
|---|---|---|---|
| Опыт в профиле (лет) | 3 | 3 | 1 |
| Ключевой инструмент | 5 (Python/Go/Java) | 3 (CRM, BI) | 2 (касса, склад) |
| Английский | 2 (B2) | 3 | 0 |
| Командировки / ночные смены | 1 / 0 | 3 / 0 | 2 / 4 |
| Удалёнка / гибрид / офис | 3 | 2 | 0 (офис) |
| Smoke-задача / тест | 5 (live-coding) | 3 (кейс) | 2 |
| Сертификации, мед-книжка, права | 1 | 1 | 2 |
| Попал в зарплатную вилку / срок выхода | 4 / 2 | 4 / 3 | 5 / 4 |
| Соц. пакет (ДМС, обеды) важен? | 1 | 2 | 3 |
Сумма нормализуется; минимальный проходной балл — 60% от максимума, порог настраивает рекрутер.
Блок 2. Онбординг новых сотрудников
Первая неделя на новом месте — это вечные «а где взять?», «к кому идти за?», «как оформить?». HR-бот превращается в личного гида:
- Структурированный план первых дней. Бот выдает чек-лист по дням и отмечает выполненное.
- Документы и инструкции. Положения, регламенты, NDA — все в одном месте.
- Контакты команды. «Кто отвечает за оборудование», «к кому идти с доступами».
- Опросы вовлеченности. Через неделю, через месяц, через три.
Параллельно 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, бот не дублирует кандидатскую базу, а работает как канал в существующую систему.
| Система | Авторизация | Что передаётся | Лимиты |
|---|---|---|---|
| HuntFlow | API-токен (Bearer) | Кандидат, резюме, статус воронки | 100 req/min |
| FriendWork | OAuth2 + refresh | Кандидат, отклик, события воронки | 60 req/min |
| Поток (Skillaz) | API-ключ + подпись | Кандидат, вакансия, оффер, документы | по договору |
| E-Staff | SOAP + сессионный ключ | Кандидат, резюме, история | без жёстких |
Поток: бот парсит резюме → создаёт кандидата в 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 млн рублей за повторное нарушение.