Автоматизируем найм новых сотрудников в логистике с помощью чат-бота
Краткое описание проекта
Наш клиент – логистическая компания, и осень – это активное время для HR-отдела. Перед нами стояла задача создать чат-бота, способного автоматизировать процесс подбора новых сотрудников и разгрузить HR-отдел.
В процессе плотной работы с клиентом мы выявили ряд основных требований:
- Бот должен и сам быть рекрутером: самостоятельно проводить первичный скрининг и изменять статус кандидата внутри системы заказчика. Требуется глубокая интеграция с HuntFlow – рекрутеры клиента работают на этой платформе.
- Бот должен запускать скрининг сразу после подключения рекрутером кандидата к вакансии в HuntFlow, если время по часовому поясу потенциального сотрудника находится в интервале от 9:00 до 21:00. Если же время у кандидата в момент подключения к вакансии вечернее или ночное – нужно отложить интервью до утра следующего дня.
- Бот должен уведомлять кандидата о новом этапе сразу – как только рекрутер создает встречу в календаре HuntFlow – и напоминать кандидату о новых этапах за 2 часа до назначенного в событии времени.
- Конечный канал – WhatsApp. Чат-бот инициирует общение с помощью сервиса рассылок Chatme.ai.
- Чат-бот создается на платформе Chatme.ai.
Мы приступили к реализации.
Интеграция с HuntFlow и реализация
HuntFlow – система, позволяющая автоматизировать процесс подбора персонала от заявки на вакансию в конкретном городе до прохождения новичком испытательного срока.
Проект создавался для четырех вакансий. У каждой вакансии 4 этапа:
- Скрининг – для каждой вакансии свои вопросы;
- Следующие 3 этапа – Групповое интервью, Тестовый день, Трудоустройство – одинаковые для всех вакансий.
Весь проект разделен на 6 разных ботов – один бот отвечает за триггер рассылки потенциальному кандидату, второй – для того чтобы отложить рассылку на рабочее время, остальные 4 – отвечают за контент по каждой вакансии.
Для того чтобы запустить рассылку на кандидата, чат-боту нужно получить информацию о его добавлении на вакансию в HuntFlow. Это реализовано с помощью отправки HTTP-запроса на вебхук Chatme.ai.
Так выглядит сценарий бота-триггера рассылок
Бот-триггер рассылок определяет часовой пояс кандидата и проверяет условие, нужно ли отложить рассылку на утро. На платформе Chatme.ai по вебхуку получаем информацию о том, из какого города кандидат, затем определяем часовой пояс с помощью запроса в сервис Dadata. Создаем строку в формате “+00:00”, вызываем с помощью функции now() время на момент сейчас и преобразовываем его в нужный часовой пояс с помощью выражения:
{% set utc_timezone = ("2000-01-01T00:00:00+00:00" | string_to_time("%Y-%m-%dT%H:%M:%S%z")).tzinfo %}{% set timezone = (("2020-01-01T00:00:00" + tz) | string_to_time("%Y-%m-%dT%H:%M:%S%z")).tzinfo %}{{ now().replace(tzinfo=utc_timezone).astimezone(timezone) }},
где tz – строка вида “+00:00”.
Затем проверяем время сейчас в городе кандидата: если время рабочее – отправляем запрос на рассылку и подключаем бота для конкретной вакансии; если время ночное – подключаем бота, откладывающего рассылку на утро.
Сценарий бота, откладывающего рассылку
Этот бот получает данные о кандидате с помощью коннектора к Webim, и сразу запускает таймер на 1 час с подсчетом времени на момент сейчас по часовому поясу кандидата. Каждый час до 9 утра бот выполняет одну и ту же операцию и после наступления 9 утра отправляет рассылку. Таймер выключается.
Вы спросите, зачем нужен был второй бот для того, чтобы откладывать рассылку? Технически бот-триггер рассылок работает в одном уникальном чате, и может отложить только одну рассылку – только так мы смогли подключить вебхук HuntFlow в платформу. Бот, откладывающий рассылку, создает столько чатов, сколько запросов получил от бота-триггера рассылок.
Затем мы приступили к созданию ботов со сценариями под конкретные вакансии.
Бот для вакансии «Менеджер клиентского отдела»
Сначала мы создали один чат-бот, затем экспортировали конфигурационный файл бота, импортировали в платформу и изменили вопросы для остальных трех вакансий – благодаря чему сэкономили время на сборке.
Боты для вакансий работают по сценарию «воронки»: первичный скрининг запускается сразу, по ответам на вопросы бот определяет, подходит кандидат или нет.
По итогам скрининга бот изменяет статус кандидата в HuntFlow на «Резюме отобрано чат-ботом» или «Отказ от чат-бота» и прикрепляет в комментарий диалог кандидата с ботом – все это с помощью HTTP-запросов к HuntFlow.
Далее мы запускаем таймер на мониторинг статусов по кандидату в HuntFlow. Таймер – это отдельный сценарий, выполняющийся при соблюдении условий после наступления определенного события в чате через заданный промежуток времени. Каждые 5 минут отправляется HTTP-запрос в HuntFlow на получение данных по кандидату и проверки статуса. Как только бот получает статус «Групповое интервью» и дату/время события, бот отправляет уведомление кандидату, и включается новый таймер, определяющий, наступил ли тот момент, когда до времени группового кандидата осталось 2 часа (время, за которое нужно выслать напоминание). Эта проверка выполняется с помощью low-code выражения:
{{ (date_for_sravnenie - now()).total_seconds() < (3600 * 2) }},
где date_for_sravnenie – дата события для кандидата переведенная в часовой пояс UTC, now() – время на момент сейчас в часовом поясе UTC.
Когда условие выполняется, кандидату отправляется напоминание. Аналогичный процесс выстроен для нескольких этапов рекрутинга.
Схематично интеграцию Chatme.ai и HuntFlow можно представить так:
Результаты
Сейчас мы готовим проект к запуску, параллельно вносим улучшения в сценарий бота, чтобы сделать его еще более удобным для HR-отдела клиента. Ожидается, что в месяц через бота будет проходить не менее 20000 кандидатов на все 4 вакансии в разных городах, план найма на каждую вакансию в каждом городе – 1-2 человека.