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

HR-бот в Telegram: автоматизация подбора и онбординга

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

  • Telegram
  • HR
  • автоматизация
  • сценарии

HR-бот в Telegram — это инструмент, который снимает с рекрутера и HR-партнёра рутину: первичный скрининг кандидатов, рассылка тестовых, онбординг новичков, опросы вовлечённости и сбор обратной связи. На объёме найма от 30–50 позиций в год бот окупается за квартал, а на крупных компаниях — экономит сотни часов в месяц. Telegram удобен тем, что у 90% активного населения России мессенджер уже стоит, push-уведомления стабильно доходят, а интерфейс кнопок и форм покрывает 80% типовых HR-задач без отдельного приложения.

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

Если разложить функции по жизненному циклу сотрудника, получается два контура: внешний (работа с кандидатами) и внутренний (сервис для своих).

Внешний контур — рекрутинг:

  1. Приём отклика по ссылке из вакансии (hh.ru, Habr Career, корп-сайт, Telegram-канал).
  2. Первичная квалификация: 5–8 вопросов под вакансию.
  3. Парсинг резюме и AI-скоринг под требования.
  4. Запись на собеседование с автоподбором слота в календаре рекрутера.
  5. Отправка и приём тестовых заданий с дедлайнами.
  6. Передача «горячих» кандидатов в Huntflow / Поток / E-Staff / FriendWork.

Внутренний контур — HR-сервисы для сотрудников:

  1. Адаптация (онбординг): чек-лист первого дня, недели, месяца.
  2. Заявления: отпуск, удалёнка, командировка, компенсации.
  3. Справки: 2-НДФЛ, о доходах, для визы, с места работы.
  4. Бронирование переговорок и парковочных мест.
  5. Регистрация больничного и больничных листов.
  6. 360 feedback, eNPS, pulse-surveys.
  7. Корпоративные коммуникации: дни рождения, новости, оповещения о ЧС.

Каждый блок можно реализовать отдельно или собрать как единый продукт. Чаще всего стартуют с рекрутинга — там быстрее окупаемость и проще измерить эффект.

Внешний контур: от вакансии до оффера

Типовая воронка через бота выглядит так. В тексте вакансии (на любой работной площадке) добавляется ссылка t.me/yourcompany_hr_bot?start=vacancy_42. Кандидат жмёт «откликнуться» — попадает в бот, бот видит deep-link параметр vacancy_42 и сразу подгружает контекст конкретной вакансии: название, требования, скрининговые вопросы, шаблон оффера.

Дальше — диалог:

  • приветствие, согласие на обработку ПДн (ст. 86 ТК, 152-ФЗ — кандидат подписывает отдельной кнопкой);
  • 5–8 квалификационных вопросов (опыт, локация, ожидания по ЗП, релокация, English level, ключевые скиллы);
  • запрос резюме (PDF/DOCX до 10 МБ);
  • автоматический скоринг: по результатам кандидат либо получает вежливый отказ с сохранением в кадровый резерв, либо приглашение выбрать слот для интервью.

Важный нюанс — Telegram даёт лучшую конверсию по отклику и time-to-screen в сравнении с классической анкетой на сайте: меньше форм, привычный интерфейс, мгновенные уведомления.

Скрининг и парсинг резюме

После загрузки резюме бот вытаскивает структурированные поля и матчит их по требованиям вакансии. Без этого модуля бот превращается в очередную форму, а с ним — в фильтр, который убирает 50–70% нерелевантного потока ещё до того, как до резюме дойдут глаза рекрутера.

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

def score_candidate(resume_text: str, vacancy: Vacancy) -> CandidateScore:
    skills_found = extract_skills(resume_text, vacancy.skills_dict)
    experience_years = extract_experience_years(resume_text)
    expected_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 expected_salary <= vacancy.salary_max else 0.5

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

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

Handler квалификации на python-telegram-bot

Минимальный пример обработчика одного шага скрининга — выбор грейда из инлайн-клавиатуры:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import ContextTypes, ConversationHandler

GRADE_JUNIOR, GRADE_MIDDLE, GRADE_SENIOR = "junior", "middle", "senior"

async def ask_grade(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    kb = InlineKeyboardMarkup([
        [InlineKeyboardButton("Junior (до 2 лет)", callback_data=GRADE_JUNIOR)],
        [InlineKeyboardButton("Middle (2–5 лет)", callback_data=GRADE_MIDDLE)],
        [InlineKeyboardButton("Senior (5+ лет)", callback_data=GRADE_SENIOR)],
    ])
    await update.message.reply_text("Ваш текущий уровень?", reply_markup=kb)
    return "AWAIT_GRADE"

async def on_grade(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()
    ctx.user_data["grade"] = query.data
    if query.data == GRADE_JUNIOR and ctx.user_data["vacancy"].min_grade != GRADE_JUNIOR:
        await query.edit_message_text("Спасибо! Сейчас открыты только позиции от middle. Сохраним резюме в резерв.")
        return ConversationHandler.END
    return await ask_salary(update, ctx)

В реальности — десяток таких хендлеров плюс машина состояний (ConversationHandler или собственная FSM на Redis с TTL 7 дней, чтобы кандидат мог вернуться и продолжить с того же шага).

Запись на собеседование с календарём

Бот сам подбирает свободные слоты в календарях участников и фиксирует встречу — без переписки «когда вам удобно». Поддерживаемые календари:

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

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

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

Тестовые задания через бота

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

  • даёт ссылку на задание или прикладывает файл;
  • считает время выполнения, фиксирует дедлайн (по умолчанию 48–72 часа);
  • принимает ответ (текст, файл до 50 МБ, ссылку на репозиторий или Google Doc);
  • автоматически проверяет тривиальные вопросы (тест с вариантами, юнит-тесты в CI для дев-задач);
  • передаёт сложные ответы рекрутеру/тимлиду на ручную оценку.

Для дев-вакансий часто прикручивают автотесты в CI: кандидат шлёт ссылку на репозиторий, GitHub Actions / GitLab CI прогоняют скрытые тесты, бот возвращает кандидату «принято / нужно доработать», а рекрутеру — балл и лог. Время от сдачи до фидбэка падает с 3–5 дней до 10 минут.

Передача в ATS: Huntflow, Поток, FriendWork, E-Staff

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

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

Пример отправки кандидата в Huntflow после успешного скрининга:

import httpx

async def push_to_huntflow(candidate: Candidate, vacancy_id: int, account_id: int):
    headers = {"Authorization": f"Bearer {HUNTFLOW_TOKEN}"}
    async with httpx.AsyncClient(base_url="https://api.huntflow.ai/v2", headers=headers) as client:
        applicant = await client.post(f"/accounts/{account_id}/applicants", json={
            "first_name": candidate.first_name,
            "last_name": candidate.last_name,
            "phone": candidate.phone,
            "email": candidate.email,
            "money": candidate.expected_salary,
            "tags": ["from-tg-bot", f"score-{candidate.score:.2f}"],
        })
        applicant_id = applicant.json()["id"]

        with open(candidate.resume_path, "rb") as f:
            await client.post(f"/accounts/{account_id}/applicants/{applicant_id}/resume",
                              files={"file": f})

        await client.post(f"/accounts/{account_id}/applicants/{applicant_id}/vacancy", json={
            "vacancy": vacancy_id,
            "status": HUNTFLOW_STATUS_NEW,
        })

При превышении лимитов — экспоненциальный backoff и очередь на стороне коннектора. Дубли отсекаем по email + телефону. На webhook-события воронки бот шлёт кандидату уведомление в Telegram («ваше резюме посмотрел рекрутер», «приглашаем на интервью»), и кандидат остаётся в курсе без писем «куда подевался отклик».

Адаптация: онбординг новичка

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

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

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

Внутренний контур: HR-сервисы

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

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

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

Опросы eNPS и pulse-surveys

Telegram даёт открываемость 70–90% против 20–40% у email-рассылок, поэтому опросы там работают эффективнее. Минимум:

  • pulse-survey раз в 2–4 недели по 1–3 вопроса;
  • eNPS раз в квартал;
  • exit-интервью при увольнении (8–10 вопросов про причину ухода);
  • 360 feedback по запросу руководителя или раз в полгода;
  • ad-hoc опросы по конкретным изменениям (новый офис, бенефиты, реорганизация).

Анонимизация — критична. Ответы пишутся в БД без user_id, только с привязкой к подразделению размером ≥ 7 человек — иначе по составу можно вычислить автора и откровенных ответов не будет. Пример хендлера анонимного опроса:

async def submit_anonymous_survey(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    user_id = update.effective_user.id
    employee = await hr_repo.get_employee_by_tg(user_id)
    if employee.department_size < 7:
        bucket = "company"  # схлопываем мелкие отделы
    else:
        bucket = employee.department_id

    await survey_repo.insert(SurveyAnswer(
        survey_id=ctx.user_data["survey_id"],
        bucket=bucket,
        seniority_band=bucket_seniority(employee.hire_date),
        answers=ctx.user_data["answers"],
        # user_id НЕ сохраняется
    ))
    await update.message.reply_text("Спасибо, ваш ответ записан анонимно.")

Дашборд — динамика eNPS по кварталам, разрез по подразделениям и стажу, корреляция с retention. Норма для российского ИТ — eNPS 20–40, выше 50 — отлично.

Корпоративные коммуникации

Бот удобен как канал односторонних оповещений: дни рождения коллег, новости, изменения регламентов, оповещения о ЧС («сегодня после 18:00 закроют главный вход»). Преимущество перед email — гарантированная доставка и push на телефон. Преимущество перед общим Telegram-каналом — таргетинг по отделу, должности, локации (московский офис vs питерский).

Интеграция с HRM/HRIS

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

СистемаЧто синхронизируетсяСпособ обмена
1С:ЗУП 3.1 / КОРПСотрудники, должности, отпуска, справки, табельHTTP-сервисы 1С (REST /hs/hr/*) или OData
1С:КА / 1С:ERPПолный кадровый блок + расчёт ЗПHTTP-сервисы, реже шина данных
Huntflow / ПотокКандидаты, вакансии, статусы воронкиREST API
БОСС-КадровикСотрудники, оргструктураSOAP, файловый обмен
SAP HR / SuccessFactorsСотрудники, оргструктура, целиOData, SAP RFC
Talantix / FriendWorkКандидатыREST API, webhook

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

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

Доступ для сотрудников: верификация

Кандидат начинает диалог с ботом без авторизации — он по определению ещё не сотрудник. А вот доступ к внутренним сервисам (отпуска, справки, eNPS) требует надёжной привязки Telegram ID к карточке сотрудника в кадровой системе. Варианты:

  1. Telegram Login Widget на корпоративном портале — сотрудник логинится через SSO, привязывает Telegram, бот получает связку corp_id ↔ tg_id.
  2. Верификация по корпоративному email — бот шлёт код на name@company.ru, сотрудник вводит его в чате. Простой и работает без портала.
  3. Привязка через HR — на онбординге в день 1 HR показывает QR с deep-link, новичок сканирует и сразу получает доступ.
  4. Корпоративный SSO (Keycloak, ADFS, Astra Linux Directory) — для критичных операций (смена банковских реквизитов, увольнение) — повторная авторизация через SSO с MFA.

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

Защита персональных данных и 152-ФЗ

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

Чек-лист соответствия 152-ФЗ для HR-бота:

ТребованиеЧто делать
Согласие на обработку ПДнОтдельная кнопка перед первым шагом, текст согласия — приложение к политике
Согласие кандидата (ст. 86 ТК)Отдельный текст с указанием цели — рассмотрение на вакансию
Локализация на территории РФБД и файловое хранилище — российские провайдеры (Yandex Cloud, Selectel, VK Cloud)
Уведомление РКНПодача формы об обработке ПДн до старта эксплуатации
Трансграничная передачаОтдельное уведомление РКН + согласие, если бот ходит в зарубежные API (Telegram сервера в РФ нет)
Сроки храненияРезюме отказников — 6 месяцев (или 3 года с явным согласием на резерв); личные карточки — 75 лет
Шифрование at restAES-256, ключи в KMS; сканы паспортов — отдельный bucket со строгим ACL
Шифрование in transitTLS 1.2+ везде, включая внутренние API
Журнал доступаAppend-only / WORM, кто/когда/какое поле смотрел, срок 3 года
Право на удалениеКнопка «удалить мои данные» в боте, обработка за 30 дней

Штрафы по 152-ФЗ для юрлиц — до 18 млн рублей за повторное нарушение (с 2024 года), плюс репутационный ущерб и риск блокировки персональных данных по решению РКН.

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

Что отслеживать: time-to-hire, % принятых офферов, конверсия отклик → собес → оффер, eNPS, доля HR-запросов без участия человека (% самообслуживания). Ниже — типовые значения «до и после» внедрения по проектам в компаниях 100–500 человек, разброс по отраслям ±30%.

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

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

Сценарии для разных ниш

ИТ. Акцент на скрининге технических скиллов, автотестах в CI, быстром фидбэке после тестового. Календарная интеграция критична — разработчики не любят переписки. Тестовые задания через бот с ограничением по времени.

Ритейл. Массовый найм линейного персонала (кассиры, продавцы, мерчандайзеры). Бот закрывает воронку целиком: отклик → анкета → видео-интервью на 2 минуты → запись на групповое собеседование в магазине. Геопривязка к ближайшей точке, расписание смен.

Производство. Обязательны проверки медкнижки, прав, допусков, инструктажа по охране труда. Бот собирает копии, проверяет сроки действия, напоминает за месяц до окончания. Высокая текучка — массовая адаптация, чек-листы первой смены.

Медицина. Жёсткие требования по образованию и сертификации. Бот валидирует диплом по реестру Росздравнадзора, проверяет действующий сертификат специалиста или аккредитацию. Интеграция с Медицинской информационной системой (МИС) клиники.

Риски и контроль

  • SSO для критичных операций. Смена банковских реквизитов, подписание оффера, увольнение — только через корпоративный SSO с MFA. Telegram-аккаунт могут угнать.
  • Аудит-лог. Каждое действие сотрудника и HR в боте — в append-only журнал с сохранением 3 года. На случай разбирательств с трудинспекцией или РКН.
  • Разграничение ролей. Кандидат, новичок, сотрудник, руководитель, HR, HR-директор — разные интерфейсы. Переключение при смене статуса в кадровой системе автоматическое.
  • Эскалация. Любое слово «жалоба», «конфликт», «увольняюсь», «юрист» в чате — автоматическая передача живому HR-партнёру в течение 5 минут.
  • Резерв канала. Если Telegram недоступен (блокировка, сбой), критичные уведомления (зарплата, отпуск согласован) дублируются на корп-почту и SMS.

Чего избегать

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

Итого

HR-бот в Telegram автоматизирует первичный скрининг, тестовые, онбординг, обучение, опросы и внутренние HR-сервисы. На объёме от 30 наймов в год и от 50 сотрудников окупается экономией HR-часов и снижением time-to-productivity. Сроки разработки — 4–8 недель для одного блока, 2–3 месяца для полной системы с интеграцией в 1С:ЗУП и Huntflow. Бюджет — от 250 000 ₽ за минимальный рекрутинговый бот до 1,5–2 млн ₽ за полнофункциональный продукт с админ-панелью и тонкой интеграцией с кадровой системой.

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

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

Два контура. Внешний (рекрутинг): приём отклика по ссылке из вакансии, квалификационные вопросы, парсинг резюме, AI-скоринг, запись на собеседование с автоподбором слота, отправка и приём тестовых, передача горячих кандидатов в Huntflow / Поток / E-Staff / FriendWork. Внутренний (сервисы для сотрудников): онбординг с чек-листом первого дня/недели/месяца, заявления на отпуск/удалёнку/командировку, справки 2-НДФЛ и о доходах, бронирование переговорок, регистрация больничного, eNPS и pulse-surveys, корпоративные коммуникации. На объёме найма от 30–50 позиций в год бот окупается за квартал.

Как организовать первичный скрининг кандидатов через бота?

Кандидат приходит по deep-link из вакансии вида t.me/company_hr_bot?start=vacancy_42, бот сразу подгружает контекст конкретной вакансии. Дальше: согласие на обработку ПДн (ст. 86 ТК, 152-ФЗ), 5–8 квалификационных вопросов (опыт, локация, ожидания по ЗП, релокация, English level, ключевые скиллы), запрос резюме PDF/DOCX до 10 МБ, парсинг через pdfplumber / PyMuPDF / python-docx, AI-скоринг по требованиям. Резюме со скором ниже 0.4 — автоматический вежливый отказ и сохранение в кадровый резерв на 6 месяцев, 0.4–0.7 — в очередь рекрутера, выше 0.7 — на интервью с приоритетом. Это снимает с рекрутера 50–70% входного потока и сокращает time-to-screen с 2–3 дней до часа.

Как HR-бот интегрируется с Huntflow, Потоком и другими ATS?

Бот не дублирует кандидатскую базу, а работает как канал в существующую ATS. Huntflow — REST API с Bearer-токеном, лимит 100 req/min, передаётся кандидат, резюме, статус воронки. Поток (Skillaz) — API-ключ + подпись, лимиты по договору, передаётся кандидат, вакансия, оффер, документы. FriendWork — OAuth2 с refresh-токенами, лимит 60 req/min. E-Staff — SOAP с сессионным ключом. Алгоритм: бот парсит резюме → создаёт кандидата (POST /candidates) → прикрепляет файл (multipart) → ставит на нужный этап воронки → подписывается на webhook этапов и шлёт кандидату сообщение, когда рекрутер двигает его в ATS. Дубли отсекаем по email + телефону, при превышении лимитов — экспоненциальный backoff.

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

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

Как обеспечить безопасность HR-данных в Telegram-боте?

HR-данные относятся к чувствительным ПДн под 152-ФЗ. Чек-лист: согласие на обработку ПДн отдельной кнопкой перед первым шагом; отдельное согласие кандидата по ст. 86 ТК; локализация БД и файлов на российских серверах (Yandex Cloud, Selectel, VK Cloud) по 242-ФЗ; уведомление РКН об обработке ПДн до старта эксплуатации; шифрование at rest (AES-256, ключи в KMS) и in transit (TLS 1.2+); сканы паспортов и СНИЛС — отдельный bucket со строгим ACL; журнал доступа append-only/WORM на 3 года; сроки хранения по ТК (резюме отказников 6 месяцев или 3 года с согласием на резерв, личные карточки 75 лет); кнопка «удалить мои данные». Штрафы по 152-ФЗ для юрлиц — до 18 млн рублей за повторное нарушение.

Как сотрудник получает доступ к внутренним функциям бота?

Кандидат начинает диалог без авторизации, а внутренние сервисы (отпуска, справки, eNPS) требуют надёжной привязки Telegram ID к карточке сотрудника. Варианты: Telegram Login Widget на корпоративном портале с SSO; верификация по корпоративному email с одноразовым кодом; привязка через HR на онбординге через QR с deep-link; для критичных операций (смена банковских реквизитов, увольнение) — повторная авторизация через корпоративный SSO с MFA. Доступ к чужим данным по принципу минимальных привилегий, любое расширение прав логируется и согласуется HR-директором.

Какие метрики отслеживать у HR-бота и за сколько он окупается?

Ключевые метрики: time-to-hire, % принятых офферов, конверсия отклик → собес → оффер, eNPS, доля HR-запросов без участия человека (% самообслуживания). Типовые значения «до и после» в компаниях 100–500 человек: время первого ответа кандидату с 8–24 часов до менее 2 минут (x100–500), time-to-hire линейной вакансии с 18–25 до 9–12 дней (−50%), стоимость найма −30…50%, конверсия отклик → интервью с 8% до 14%, доля доходящих до 90-го дня с 78% до 89%, eNPS с +12 до +28, доля самообслуживания HR-запросов 65–80%. Срок окупаемости при штате 100+ — 4–7 месяцев. На штате 500+ только справки и заявки на отпуск экономят 1–2 ставки HR-партнёра.