HR-бот в Telegram — это инструмент, который снимает с рекрутера и HR-партнёра рутину: первичный скрининг кандидатов, рассылка тестовых, онбординг новичков, опросы вовлечённости и сбор обратной связи. На объёме найма от 30–50 позиций в год бот окупается за квартал, а на крупных компаниях — экономит сотни часов в месяц. Telegram удобен тем, что у 90% активного населения России мессенджер уже стоит, push-уведомления стабильно доходят, а интерфейс кнопок и форм покрывает 80% типовых HR-задач без отдельного приложения.
Какие задачи закрывает HR-бот
Если разложить функции по жизненному циклу сотрудника, получается два контура: внешний (работа с кандидатами) и внутренний (сервис для своих).
Внешний контур — рекрутинг:
- Приём отклика по ссылке из вакансии (hh.ru, Habr Career, корп-сайт, Telegram-канал).
- Первичная квалификация: 5–8 вопросов под вакансию.
- Парсинг резюме и AI-скоринг под требования.
- Запись на собеседование с автоподбором слота в календаре рекрутера.
- Отправка и приём тестовых заданий с дедлайнами.
- Передача «горячих» кандидатов в Huntflow / Поток / E-Staff / FriendWork.
Внутренний контур — HR-сервисы для сотрудников:
- Адаптация (онбординг): чек-лист первого дня, недели, месяца.
- Заявления: отпуск, удалёнка, командировка, компенсации.
- Справки: 2-НДФЛ, о доходах, для визы, с места работы.
- Бронирование переговорок и парковочных мест.
- Регистрация больничного и больничных листов.
- 360 feedback, eNPS, pulse-surveys.
- Корпоративные коммуникации: дни рождения, новости, оповещения о ЧС.
Каждый блок можно реализовать отдельно или собрать как единый продукт. Чаще всего стартуют с рекрутинга — там быстрее окупаемость и проще измерить эффект.
Внешний контур: от вакансии до оффера
Типовая воронка через бота выглядит так. В тексте вакансии (на любой работной площадке) добавляется ссылка 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, бот не дублирует кандидатскую базу, а работает как канал в существующую систему. Ключевые системы российского рынка:
| Система | Авторизация | Что передаётся | Лимиты |
|---|---|---|---|
| Huntflow | API-токен (Bearer) | Кандидат, резюме, статус воронки, теги | 100 req/min |
| Поток (Skillaz) | API-ключ + подпись | Кандидат, вакансия, оффер, документы | по договору |
| FriendWork | OAuth2 + refresh | Кандидат, отклик, события воронки | 60 req/min |
| E-Staff | SOAP + сессионный ключ | Кандидат, резюме, история | без жёстких |
Пример отправки кандидата в 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 к карточке сотрудника в кадровой системе. Варианты:
- Telegram Login Widget на корпоративном портале — сотрудник логинится через SSO, привязывает Telegram, бот получает связку
corp_id ↔ tg_id. - Верификация по корпоративному email — бот шлёт код на
name@company.ru, сотрудник вводит его в чате. Простой и работает без портала. - Привязка через HR — на онбординге в день 1 HR показывает QR с deep-link, новичок сканирует и сразу получает доступ.
- Корпоративный 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 rest | AES-256, ключи в KMS; сканы паспортов — отдельный bucket со строгим ACL |
| Шифрование in transit | TLS 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-партнёра.