
Всем привет! Меня зовут Александр, я руковожу направлением аналитики страховой вертикали в Банки.ру. Наша вертикаль живёт в отчётах и данных: продажи ОСАГО и КАСКО, ипотечное страхование, кроссы, пролонгация, воронки, кэшбэк и сверки с партнёрами.
И каждый день в рабочем мессенджере на меня прилетает поток одного и того же жанра: «где посмотреть КВ по ОСАГО за сентябрь?», «почему упало одобрение у страховой?», «сделай выгрузку по регионам», «это у нас баг или так и задумано?». КВ здесь комиссионное вознаграждение.
Постепенно аналитик превращается в справочное бюро. Ответы есть, но живут они в голове, в SQL-запросах и в вики, а вопросы приходят в личку и в каналы в любой момент, в том числе пока ты на встрече. Я решил посадить на эту очередь ИИ-ассистента. Условие одно и жёсткое: ассистент не выдумывает. В аналитике выдуманная цифра хуже отсутствия ответа, потому что по ней примут решение.
Сразу оговорюсь: я не разработчик. Всю обвязку вокруг модели, около 2 500 строк на Python, я собирал вместе с ИИ-ассистентом.
Ниже расскажу, как бот устроен, какие правила не дают ему врать и как он им учится.
Цель и факт
Цель я поставил такую: закрывать без меня примерно 70% рабочих вопросов и не выдать ни одной выдуманной цифры.
Бот отвечает коллегам с 1 октября 2026 года. Возьму два последних полных рабочих дня: в личку пришло 27 рабочих запросов, в среднем 13,5 в день. Бот ответил на 25 из них, это 93% при цели 70%.
Ещё около 30 сообщений по делу в день приходит в рабочие каналы: на обращённые к нему бот отвечает, остальное собирает мне в сводку.

Теперь о скорости. Первая реакция на запрос в личку приходит через 3 минуты по медиане: 18 из 26 запросов получили ответ в пределах 5 минут. Это либо готовый ответ, либо «взял в работу, вернусь через 20–40 минут». Полный ответ на аналитический запрос занимает от десятков минут до нескольких часов: бот не достаёт готовую цифру, а считает.
Честная оговорка: «ответил» не всегда значит «закрыл без меня». Всё, что требует решения, согласования или уходит наружу, бот отдаёт мне. Ошибки тоже были, и каждая превратилась в правило, о них ниже.
Как это выглядит
Коллеги пишут как обычно: мне в личку или в рабочий канал. В каналах и в своей личке бот пишет от отдельного аккаунта «Страховед». В моей личке он пока отвечает от моего имени, но каждое сообщение помечено плашкой «БОТ» и подписью «ассистент Блинова». Так никто не путает, где я, а где он. Отвечает бот в ту же ветку, где задан вопрос.
Первое, чему пришлось научить бота: не бросаться считать. Вот реальный диалог, коллега просит «посещаемость страницы, MAU, DAU, клики и т. д.».

Бот сначала спрашивает цель, потому что от неё зависит, что считать. Потом детали: страница, период, метрики, разрезы, формат. Когда ответ размытый («всё остальное ок» на вопрос с тремя вариантами), он переспрашивает ещё раз, а не выбирает сам. В конце самое важное: данные готовы, но они раскрывают наш трафик и уходят партнёру, поэтому бот не отдаёт их без согласования руководителя.
Если бот уже занят другим вопросом, он не молчит: ставит 👀 и пишет, каким по очереди взял запрос и когда примерно вернётся. Вечером и в выходные отвечает «увидел, вернусь утром». Исключение одно: если я сам позвал его в разговор, он работает в любое время.
А так выглядит обычный аналитический ответ: коротко, таблица, «Итого», единицы у каждой цифры, полный разрез во вложенном Excel.

Что под капотом

Компонент | Что делает | Цифры |
Наблюдатель | Раз в минуту читает личку, рабочие каналы и мои «Сохранённые». Склеивает пачку сообщений в один запрос, ставит 👀 и пишет, каким по очереди взят вопрос. Ночью и в выходные отвечает «увидел, вернусь утром». | В личке отвечает всем коллегам; 11 каналов: в 3 отвечает, 8 только читает |
Классификатор | Делит сообщения на классы: ANALYZE (вопрос по данным), ESCALATE (решение или согласование за меня), CONTINUE (ответ на вопрос бота), SKIP (болтовня), UNSURE (не уверен). Это правила, а не языковая модель: быстро, предсказуемо, тестируемо. | 5 классов; регресс на 71 реальной фразе из переписки |
Аналитик | Языковая модель (Claude в Claude Code) разбирает вопрос и пишет запрос. Число берётся только из запроса к базе, BI или Метрике, а не «из головы». Тяжёлые расчёты уходят фоновым агентам. Они готовят только черновик, а главный агент перепроверяет цифры и отправляет. | Перед отправкой пересчёт минимум 3 цифр |
Знания | Вики вертикали, мои правила, пары «вопрос коллеги → мой реальный ответ» за 60 дней, справочник «кто за что отвечает», предпочтения конкретных коллег по формату. | Вики 841 стр.; 64 правила; 635 пар «вопрос → ответ»; обучение на 7 545 сообщениях |
Самопроверка | Перед отправкой черновик проходит автоматический чек на ошибки, которые бот уже однажды допускал. Через 5 минут после отправки бот перечитывает свой пост. | |
Обучение | Каждое утро в 07:00 бот сверяет свои решения с моими реальными ответами: где ответил я, а не он, и где он ответил лишнее. Ещё он читает новое на общем диске и в вики. Итог присылает мне. |
Всё, кроме модели, это обычный Python: наблюдатель, классификатор, проверки и обучение.

Отдельная часть знаний это карта «кто за что». Не на каждый вопрос должен отвечать аналитик: выгрузки и сверки ведёт один коллега, доработка отчётов идёт задачей в BI, вопросы по КАСКО решает третий коллега. Такие вопросы бот не берёт на себя, а подсказывает, к кому идти. Карту он собрал из моих реальных ответов за 60 дней.
Главное: как бот не врёт
Число только из запроса. Модель понимает вопрос и пишет SQL, а цифру даёт база. Если данных нет, бот так и пишет и называет, у кого они есть.
Всегда источник. Название отчёта и ссылка, таблица или запрос. Ответ без источника считается гипотезой, и бот прямо об этом говорит.
Не уверен, значит спроси. Не тот продукт, не тот период, размытая метрика: бот переспрашивает. По акциям и спорным вопросам говорит «пошёл уточнять» и идёт к ответственному.
Решения принимает не он. Сроки, согласования, оценки, данные партнёрам, персональные данные бот сразу отдаёт мне сводкой с черновиком ответа.
Сравнивать честно. Только на сопоставимой базе: если способ доступен у 5 страховых из 20, сравниваем на этих пяти.
Пример из первой недели. Коллега спросила, почему упала доля одобрений по ОСАГО. Первая версия ответа считала одобрением и промежуточный статус оффера, и картина получилась неверной. После пересчёта на правильной базе вышло 77,0% против 83,4% месяцем раньше, то есть минус 6,4 п.п. Главный вклад дала одна страховая, у которой одобрения просели с конкретной даты. Ошибку нашёл я, а бот получил правило и проверку, которая теперь ловит такой черновик до отправки.

Откуда в боте берутся правила
Бот сам себя не переписывает. Правила дописываю я после разбора: поймал ответ, который не сходится с реальностью → понял, какой проверки не хватило → записал правило с историей в файл, который бот читает при каждом запуске. Дальше правило превращается в тест или в автоматическую проверку перед отправкой. Самообучающийся агент может закрепить и неверный вывод, поэтому человек в контуре обязателен.
За первую неделю набралось 64 правила. Вот несколько, которые выросли из реальных проколов:
Промежуточный статус не равен одобрению. Бот посчитал промежуточный статус оффера одобрением, и доля одобрений завысилась примерно на 6 п.п. Теперь набор статусов зафиксирован, а такое «одобрение» в черновике блокируется.
Названия партнёров берутся только из справочника. Фоновый агент угадал название страховой по коду и ошибся. Теперь названия берутся только из справочника партнёров.
Регион пишется названием, а не кодом. «Регион 54» человеку ничего не говорит, и проверка перед отправкой такой текст не пропустит.
В таблице все месяцы и «Итого». После замечания «половины месяцев не хватает» пропуски месяцев ловятся автоматически.
Ответ в ту же ветку и в формате человека. Одному коллеге нужен только Excel или дашборд, другому сначала цель запроса. Предпочтения хранятся по каждому коллеге.
Не додумывать. «Всё остальное ок» на вопрос с вариантами не считается ответом. Лучше пять раз уточнить, чем посчитать лишнее и потратить время.
Чего бот не делает без меня
не принимает решений и не согласовывает за меня, а сразу присылает мне сводку;
не отдаёт данные наружу и не раскрывает персональные данные без моего явного «ок»;
задачи в трекере и сообщения новым адресатам отправляет только по моей команде;
ничего не удаляет и не меняет в базах, только читает;
секреты и тексты переписки хранит только локально, на общий диск их не кладёт;
молчит в каналах, где ему разрешено только читать, и не вмешивается в мою живую переписку с коллегой.
Модель работает через корпоративный доступ Банки.ру к Claude, а не через личную подписку. По публичным коммерческим условиям Anthropic данные корпоративных клиентов не используются для обучения моделей. Пароли и токены в запросы к модели не попадают, а персональные данные клиентов бот никуда не выгружает и не пересылает.
Ограничения, честно
Пока бот работает в сессии на моём компьютере. В каналах и своей личке он уже пишет от отдельного аккаунта «Страховед», а в моей личке пока отвечает от моего имени с плашкой «БОТ».
Классификатор на правилах иногда ошибается с новыми формулировками. Однажды он принял вопрос за «планирование» и промолчал. Каждый такой промах становится новой фразой в регрессе.
Сложная аналитика занимает часы, а не секунды, и коллег об этом приходится предупреждать.
Что забрать к себе
Модель планирует и пишет запрос, а цифру даёт база.
Сначала цель и детали, потом расчёт. Размытый ответ означает, что пора переспросить.
Всё, что решает или уходит наружу, идёт через человека.
Каждая ошибка становится правилом, тестом или автоматической проверкой перед отправкой.
Помечайте бота: люди должны видеть, кто им отвечает.
Считайте факт против цели, а не по ощущениям.
С чего начать
Начните с самого дешёвого: наблюдатель за личкой, простой классификатор «вопрос по данным / решение / болтовня» и правило «нет источника, нет ответа». Отвечайте сначала одному-двум коллегам, остальное собирайте себе сводкой. 1 октября мой бот утром отвечал одному коллеге, к вечеру уже 14, а с 12 октября отвечает в личке всем. Дальше добавляйте регресс на реальных фразах и ежедневную сверку решений бота с вашими.
Спасибо, что дочитали! Если пробовали что-то похожее, расскажите в комментариях, на каких граблях спотыкался ваш бот. Возможно, это станет следующим правилом :)

