Краткое описание проекта
Наш клиент – логистическая компания, и осень – это активное время для 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 человека.
Комментарии (6)
ssh1922
03.10.2022 14:57Это уже целая фабрика ботов получается в рамках одного кейса. Выглядит круто, конечно.
IvanSTV
это ж что это за компания, где хантинг требует до 20000 вакансий в месяц? И что это за текучка такая массивная, чтобы это действительно требовалось? Навернякак говноработа.
Если практика первичного отбора ботом по ответам реально приживется, то вангую, что появятся и чат-боты. которые будут успешно проходить этот отбор. Боты станут беседовать с ботами.
chatme Автор
20000 - это объем откликов на все вакансии в разных городах РФ, массовые вакансии
а bot-to-bot communication уже существует)
IvanSTV
Назовите же мне эту логистическую компанию. Я реально не знаю в РФ компании, которой требовались бы такие объемы по откликам. Крупный 3PL типа FM Logistics с курьеркой вываливает в месяц сотню-другую вакансий по всей России. Большинство вечных вакансий - откровенно говновакансии. Они хотят сказать, что у них по сотне и более откликов на одну вакансию, и при этом они не закрываются более чем месяц?
chatme Автор
200-400 откликов на вакансию, сроки закрытия мы здесь не уточняли, менее месяца, но высокая текучка
Федеральная курьерская служба
IvanSTV
федеральная курьерская помойка, собирающая отбросы.
В свое время в FEDEX одного курьера нанимал в среднем раз в полтора-два года. Потому что условия работы и заработок были таковы, что текучки почти не было. Major буквально недавно (года два назад) имел более сотни вакансий, но основная масса их была управленческие или технические. А курьеров\водителей - то есть, массовых вакансий, там в общей массе было очень немного. Например, когда я туда пытался впихнуться в логистику, там реальных вакансий курьеров не было вообще, а логистов было только 2 на весь регион - Москва и область, из них одна мне вообще никак не подходила. Я полагаю, что сильно завышенные запросы, и реальное количество откликов на вакансию сильно меньше. Но в таком случае чат-бот ничего не должен решать (!). а просто передавать информацию. Потому что при 5 откликах на управленческую вакансию он. отсеяв по формальным признакам, например, 2, уже выдает сильный риск отсева годного кандидата. Масштабируя, ошибка будет уже достаточно серьезная.