Лето. Пора отпусков. Многие в преддверии этого периода заранее расслабляются, но только не кадровики с бухгалтерами. Потому что расчет и оформление отпуска — это боль. И чем больше коллектив и разнообразнее в нем задачи, тем больнее.

Привет, Хабр. Меня зовут Влад Кармаков, CEO Siberian.pro. Сегодня расскажу, как мы разработали и внедрили у себя агентскую систему, которая взяла на себя большую часть проблем с отпусками. Работает она автоматически в виде локального AI-агента, подключенного к корпоративному мессенджеру (Mattermost).
В чем проблема с отпусками?
В теории все просто: 28 календарных дней в год. Собственно, в документах, которые подписывают наши работники, именно так это и обозначено. Но реальность вносит коррективы, существенно затрудняющие автоматизацию кадровых процессов.

1. Для расчета отпускных нужно сделать расчет среднего заработка за 12 месяцев. А там — премии, индексации, повышение рейта, больничные, дни без сохранения и т.д.
2. Куча исключений из общих правил. Кто-то работал неполный месяц. Кого-то перевели. Кто-то совмещал.
3. Сотрудники не блещут постоянством. «Нет, давайте все же с 24-го числа оформим». А 24-ое послезавтра. А еще они болеют, меняют планы или вдруг резко становятся незаменимы, потому что аврал.
4. Согласования — отдельная боль. Есть график отпусков. Скажем, нельзя всех менеджеров отпустить отдыхать одновременно. Плюс документы для согласований: уведомление самого сотрудника, уведомление руководителя, приказ на отпуск, расчеты отпускных. Все это нужно оформлять корректно и в срок.
6. Больничный во время отпуска. Нужно учитывать и переносить, а также делать перерасчет.
7. Контроль остатков отпусков. Нужно следить, чтобы сотрудник использовал положенный отпуск. Work-life balance для работника и отсутствие проблем с трудовой инспекцией для организации.
8. Лето. No comments.
И не забудем, что любые проблемы с отпусками — это в будущем потенциальные проблемы с трудовой инспекцией, налоговой или вообще судебные иски.
У нас в Siberian.pro не так много сотрудников, но наши кадровики все описанные трудности тоже испытывают в той или иной мере. И тратят на это десятки часов (нервы учету не поддаются).
Поэтому мы разработали ИИ-бота, который взял на себя все фазы оформления отпуска: заявление работника, согласование у руководителя, подписи, расчет отпускных и формирование всех необходимых документов.
Как работает ИИ-ассистент по оформлению отпусков
С позиции работника ИИ-ассистент по отпускам — это простой чат-бот, подключенный к Mattermost.
Чтобы оформить отпуск, достаточно написать об этом боту. Поскольку внутри у бота неонка нейросеть, то никакого особого формата соблюдать не нужно, пишем в свободной форме, ИИ-шка все расшифрует и поймет как надо.

Аналогично оформляется больничный.

Можно взять отгул за свой счет:

Раньше вся эта коммуникация шла через кадровика и через руководителей юнитов.
Однако для кадровой службы и бухгалтерии процесс согласования отпусков — это лишь верхушка айсберга. В действительности все сложнее.
Порядок по оформлению отпусков включал работу в шести разных инструментах.
Таблица отпусков в Google Sheets. Здесь кадровик вносит планы на отпуск сотрудников и отмечает фактические и запланированные.
Таблица сотрудников. Здесь хранятся данные о сотрудниках и их форме трудоустройства. Используется для расчета отпускных и в целом для финансовой отчетности компании.
Сервис облачной бухгалтерии. Здесь формируются отчеты для налоговой и официально фиксируются отпуска.
Jira Tempo. Отпуска должны быть зарезервированы и в Tempo. Затем эти данные используются для планирования расходов.
Финансовый учет компании. Сюда стекаются все данные о тратах. Здесь бухгалтерия считает начисления и отпускные.
Формальный документ согласования отпуска. За 2 недели до начала отпуска, создается цифровой документ, в котором сотрудник и его руководитель подписывают, что согласны с датами отпуска.
Такое количество разных инструментов — это неудобно. Плюс со временем накапливается неконсистентность, что-то где-то начинается расходиться и править это все тоже приходится руками. Короче, неудобно.
Поэтому для отдела кадров мы разработали простой личный кабинет, в котором можно посмотреть все данные по отпускам и собрать отчеты, по сути объединив четыре из шести инструментов в один.

По каждому сотруднику наш бухгалтер и HR видят, когда запланирован отпуск, согласован или нет, а также разные технические моменты.
К слову, я тут пишу «разработали», но на самом деле это был вайбкодинг по спецификациям. Методику недавно описывал в этой статье.
Получилось очень просто, интуитивно понятно, и — самое главное — эффективно. Нагрузка на бухгалтерию по части расчета больничных и отпусков сократилась на 90%. Хотя некоторые нюансы остались, я о них расскажу в конце статьи. А пока перехожу к тому, как мы разработали корпоративный ИИ-ассистент для кадровика.
Реализация ИИ для HR
Грубая схема реализации выглядит так:

Сотрудники и руководители общаются с ИИ-ботом прямо в Mattermost. Бот создали на основе ZeroClaw плюс MCP-сервер для получения HR- и финансовых данных из электронных таблиц организации. Для бэкенда выбрали Supabase.
Почему ZeroClaw, а не OpenClaw, с которым мы раньше уже работали (я рассказывал об этом)? Причин несколько:
ZeroClaw намного менее требователен к ресурсам. Размер всего 10 МБ позволяет запускать множество инстансов агента, не думая о возможных тормозах. В будущем это будет важно, когда решение начнем масштабировать на другие процессы в организации. Плюс можно будет запустить индивидуального ассистента для каждого сотрудника.
Поддержка Mattermost уже в базе.
Написан на Rust, быстрый.
Стратегия deny-by-default, принятая в ZeroClaw, подразумевает отклонение всех запросов, кроме явно одобренных. Для развертывания в корпоративном контуре это лучший вариант.
Далее чат с ботом в Mattermost вызывает одну из подключенных к ZeroClaw моделей. Задача не сложная, поэтому можно использовать практически любые модели. Например, можно рекомендовать опенсорсный gpt-oss-120B.
Ассистент обрабатывает запрос в свободной форме от пользователя и формирует команду для бэкенда. Здесь есть важный момент, связанный с аутентификацией пользователя.
Идентифицировать пользователя по имени бот не должен, это небезопасно. Кроме того, нельзя позволить боту ввести себя в заблуждение промптами. Поэтому для идентификации пользователя диалог не используется вовсе. Mattermost id пользователя берется напрямую из обвязки ZeroClaw и передается в MCP для получения данных о пользователе из Supabase. При этом для дополнительной безопасности у бота нет прямого MCP-доступа к Supabase с полными правами доступа. Вместо этого мы реализовали кастомные MCP-инструменты, каждый из которых точечно выполняет какое-то одно действие, причем с привязкой к идентификатору.
Получается, что как бы пользователь ни упрашивал бота дать ему данные по другому сотруднику, бот физически не сможет этого сделать.
Расчет оставшихся дней отпуска и размера отпускных считается функцией на стороне бэкенда по логике Трудового кодекса. Данные по текущим сотрудникам лежат в Supabase (PostgreSQL), которая развернута в облаке самого сервиса.
Имя сотрудника определяется по Mattermost id с учетом сказанного выше.
Ассистент получает из Supabase данные для этого сотрудника.
Ассистент инициирует расчеты и получает ответ.
Ответ форматируется LLM и показывается пользователю в чате с ботом.



В процессе разработки бота возникло несколько сложностей, преимущественно связанных с интеграцией бота в Mattermost. Например, ZeroClaw работает с MM только в рамках одного канала. А нам надо, чтобы каждый сотрудник мог написать HR-боту и запланировать себе отпуск. Пришлось пилить свою доработку для ZeroClaw и делать pull-request. Сейчас она уже вошла в официальный релиз ZeroClaw.
А еще бот по умолчанию не знал, какой конкретный пользователь в Mattermost ему пишет. Тоже пофиксили на месте и тоже отправили pull-request разработчикам ZeroClaw, который тоже был зарелизен.
Это что касается левой части диаграммы — про взаимодействие бота с сотрудниками. Теперь про разработку админ-панели для кадровика.
Технически, панель управления — это веб-приложение, которое ходит напрямую в Supabase, а затем заполняет интерфейс актуальными данными. Плюс создание, чтение, редактирование и удаление записей.
Что умеет панель управления?
Выводит актуальные данные о сотрудниках из Supabase.
Выводит таблицу отпусков, больничных и отгулов с указанием статуса согласования по месяцам.
Показывает оставшиеся дни отпуска сотрудника на конец года.
Есть группировки сотрудников по разным признакам. Например, по формату трудоустройства.
Есть цветовое кодирование. Например, серым выделяются ячейки, где сотрудник еще не трудоустроен или уже уволен.
Позволяет изменять статус отпуска.
Первые же прогоны демки ИИ-ассистента по отпускам показали, что так действительно удобнее. Не рядовым сотрудникам — для них-то вся эта история возникает на 10 минут один-два раза в год — а кадровым специалистам и HR. На момент написания статьи решение уже работает штатно.
Конечно, в реальности не все было так уж гладко. Например, как оказалось, в России не существует единой методики по расчету отпуска. Нет, кадровики-то все умеют считать правильно (видимо, на морально-волевых), но вот сам алгоритм расчета — его просто не существует в формализованном виде в каком-то одном месте. Да, даже в ТК. Удивительно, но факт.
Что пока не реализовано
В планах закончить интеграции с Tempo в виде скилла для ИИ-ассистента. Т.е. подключить его смогут все, кому это нужно. А остальные будут пользоваться ботом в Mattermost.
Старый вариант работы на основе таблиц пока оставили для обратной совместимости. Более того, измененные данные из Supabase вносятся в эти таблицы обратно, чтобы была возможность отследить правильность расчетов или выполнить все вручную, если вдруг какой-то из сервисов в основе чат-бота отвалится.
В процессе внедрения также находится скилл для трекинга часов работы. Ему можно будет сказать, например, «Затрекай мои звонки за сегодня» и он сам разберется с темой звонка, продолжительностью и сам его отнесет к правильной задаче.
Доступ к базе знаний компании тоже сейчас в процессе интеграции с ботом. Любой сотрудник сможет в мессенджере узнать важную информацию по своему проекту, идущим пресейлам или общие моменты, касающиеся работы.
В перспективе, надеюсь, сможем развернуть целую систему ИИ-скиллов для сотрудников, но об этом я подробно расскажу в другой раз.
Что еще можно сделать
Во-первых, вместо Mattermost можно подставить любой другой мессенджер. Slack, Макс, Telegram, да хоть KakaoTalk.
Во-вторых, описанный сценарий — это лишь один из вариантов взаимодействия сотрудников. А реализовать можно десятки других:
автоматический трекинг задач;
составление работником расписаний и внесение задач в календарь;
автоматическое развертывание сервера под проект по запросу devops;
поиск по базе знаний компании (RAG);
решение индивидуальных задач каждого сотрудника в рамках его роли;
ИИ-ассистенты для автоматизации типичных действий в отделах компании. Например, как наш Агент Клавдий для маркетинга.
Как видите, ИИ для компаний имеет широкий спектр применения. А стоимость внедрения такого ИИ в бизнес при этом вполне доступная.
Итого
Было: ручное планирование отпусков с уведомлениями в мессенджере, подтверждением вручную, ручным же согласованием у руководителя, внесением изменений в несколько локальных документов и в облачную бухгалтерию.
Стало: автоматическое выполнение всех описанных фаз с помощью ZeroClaw бота. Времени уходит на 90% меньше.
На разработку ушло чуть меньше 200 человеко-часов. Стоимость токенов низкая, за неделю интенсивных тестовых прогонов всех возможных сценариев удалось потратить аж целый один доллар. В реальности, думаю, примерно столько будет тратиться за год. В масштабах большой компании (от 1000 сотрудников) в месяц будет тратиться пара долларов или около того. Или вообще бесплатно, если использовать опенсорсные модели.
Цель всего вышеописанного была в том, чтобы на примере реального процесса в компании внедрить ИИ-бота для ускорения и удешевления этого процесса. Потренировавшись таким образом на кошках, мы начали лучше понимать, как выполнить ИИ-трансформацию компании в целом, какие данные и навыки для этого потребуются, сколько времени это займет и какие результаты стоит ожидать. И это главный итог.
В последнее время я много пишу про ИИ-трансформацию бизнеса у себя на канале. Забегайте!
