Как я сделал Telegram-бота для аналитики после десятков попыток найти готовое решение

Идея этого бота появилась из раздражения, мне тупо надоело тратить время и сводить данные каждый раз руками. Я тратил на это кучу времени.

Да со временем я начал использовать разные функции в Excel но всё равно, это напрягало.

У меня регулярно повторялась одна и та же история. Приходит выгрузка из CRM, открываю Excel, а там сотни строк и десятки или даже сотни столбцов. Дальше начинается привычный ритуал: найти нужные поля, понять, где актуальный статус, где архивный, сверить источники, посчитать заявки, целевую аудиторию, оплаты, причины отказов, собрать воронку.

Через какое-то время появляется отчёт.

И каждый раз я думал: почему я вообще до сих пор делаю это руками?

Сначала я пытался найти готовое решение

это типо я. злюсь на сложные excel таблицы
это типо я. злюсь на сложные excel таблицы

Мне казалось, что такой инструмент уже точно должен существовать.

Я искал сервисы для анализа Excel, инструменты для маркетинговой аналитики, решения для автоматического создания отчётов, различные ИИ-сервисы для работы с таблицами.

Почти везде возникала одна из двух проблем.

Либо сервис хорошо работает только с заранее подготовленной таблицей определённой структуры.

Либо он умеет анализировать файл как текст, но плохо понимает реальную CRM-логику.

А мои таблицы выглядели совсем иначе.

Сегодня выгрузка из одной CRM. Завтра из другой. В одном файле канал называется Instagram, в другом ig, в третьем он вообще записан в дополнительном поле. Где-то есть поле «Тип заявки», где-то рядом лежит его архивная версия. У сделки может быть бюджет, сумма оплаты, дата оплаты и ещё отдельное поле эквайринга.

Любой универсальный сервис в какой-то момент начинал либо путаться, либо требовал, чтобы я сначала сам подготовил данные.

Получался странный круг.

Чтобы автоматизировать анализ таблицы, сначала нужно вручную подготовить таблицу для автоматического анализа.

В этот момент я впервые подумал: возможно, проще сделать инструмент под свою реальную работу.

Как я сделал Telegram-бота для аналитики после десятков попыток найти готовое решение

Первая версия выглядела очень просто

В голове всё было довольно очевидно.

Я загружаю Excel в Telegram-бот.

Бот читает таблицу.

Находит нужные показатели.

Выдаёт отчёт.

Казалось, что основная работа займёт несколько дней.

Первая версия действительно появилась быстро.

Она умела получить файл, прочитать строки и найти часть показателей. Я увидел первый автоматический отчёт в Telegram и подумал, что основная задача практически решена.

Потом загрузил второй файл.

И всё начало ломаться.

Таблицы оказались гораздо сложнее, чем я думал

Именно здесь проект стал по-настоящему интересным.

Когда человек смотрит на Excel, он очень быстро понимает контекст.

Например, видит две колонки:

Тип заявки

и

(Архив) Тип заявки.

Для человека очевидно, какое поле сейчас важнее.

Для программы это просто два столбца с похожими названиями.

Таких ситуаций оказалось огромное количество.

В одной CRM должность клиента находится в карточке сделки. В другой она записана в контакте. В третьей одновременно существует несколько полей с должностью.

Источники трафика тоже оказались отдельной историей.

Instagram мог быть записан как:

Instagramiginstsmm_instsmm_inst_direct

При этом мне в итоговом отчёте нужно видеть нормальную аналитику по каналам, без десятков технических названий.

Постепенно я понял, что задача вообще не про «прочитать Excel».

Сначала бот должен понять, что именно находится перед ним.

Так появилась логика распознавания таблиц

Как я сделал Telegram-бота для аналитики после десятков попыток найти готовое решение

Я начал строить обработку в несколько этапов.

Сначала бот анализирует структуру таблицы.

Потом пытается определить, где находятся заявки, статусы, каналы, оплаты, целевая аудитория, города, должности и другие данные.

После этого значения нормализуются.

Только затем начинается расчёт показателей и построение отчёта.

Именно этот момент сильно изменил весь проект.

Telegram-бот для аналитики постепенно превратился в инструмент, который может работать с разными Excel-файлами и CRM-выгрузками.

Сейчас бот собирает:

заявки, бюджет сделок, платежи, каналы привлечения, целевую и нецелевую аудиторию, этапы воронки, причины отказов, города, должности и качество заполнения данных.

Вместо огромной таблицы получается структурированный маркетинговый отчёт.

Самые неприятные ошибки выглядели вполне правдоподобно

Это отдельная проблема аналитики.

Если программа падает с ошибкой, всё понятно.

Гораздо опаснее ситуация, когда она выдаёт красивый отчёт с неправильной цифрой.

На одном из тестов я загрузил реальную CRM-выгрузку примерно на 350 сделок.

Внешне отчёт выглядел нормально.

Начал проверять вручную.

Выяснилось, что одна оплата посчиталась дважды.

У сделки одновременно была сумма платежа и подтверждённая сумма эквайринга. Бот воспринял их как две разные оплаты.

В другом случае архивное поле получило больший приоритет, чем актуальное.

Ещё в одном тесте часть статусов CRM неправильно попала в этапы воронки.

И вот здесь я понял ещё одну важную вещь.

Нельзя проверить такой продукт несколькими тестовыми таблицами и считать работу законченной.

Нужны постоянные реальные проверки.

Каждая найденная ошибка теперь становится новым тестом

Мой процесс разработки постепенно изменился.

Я загружаю реальный Excel.

Получаю отчёт.

Потом вручную сверяю основные цифры.

Количество заявок.

Целевые лиды.

Платежи.

Статусы.

Каналы.

Воронку.

Если нахожу расхождение, сначала разбираюсь, почему оно возникло.

После исправления добавляю автоматический тест именно на эту ситуацию.

Получается довольно интересный эффект.

Каждая ошибка, которую я когда-то нашёл, становится дополнительной защитой для следующих версий.

Со временем таких тестов стало очень много.

И сейчас перед обновлением бот прогоняет целый набор проверок по Excel, CRM, платежам, каналам, статусам, воронке и отчётам.

Потом я добавил ИИ и получил новый набор проблем

Когда базовая аналитика стала работать достаточно стабильно, захотелось сделать следующий шаг.

Пусть бот не только показывает цифры, но ещё и объясняет, что в них важно.

Например:

где находится основной провал воронки,

какой канал даёт много заявок,

какие причины отказов встречаются чаще,

где качество данных мешает нормальному анализу.

Я подключил ИИ.

Первый результат выглядел впечатляюще.

Потом я начал проверять цифры.

И быстро увидел новую проблему.

Модель могла сама округлить процент.

Могла посчитать новый показатель.

Могла связать два факта и сделать вывод, который выглядит логично, хотя прямого подтверждения в данных нет.

Один из последних тестов вообще получился почти комичным.

ИИ сформировал нормальную мысль, потом разбил её переносами строк.

Бот воспринял эти переносы как три отдельных вывода.

В результате в отчёте появились фразы вроде:

«Наиболее частая причина потери»

потом отдельной строкой:

«ЦА. При этом 71 заявки...»

То есть технически ИИ сработал успешно.

Для человека результат выглядел бессмысленно.

Пришлось придумать проверку самого ИИ

После этого я поменял подход.

Теперь ИИ получает уже готовый аналитический отчёт.

CRM-данные он не рассчитывает.

Платежи не считает.

Статусы не определяет.

Эта часть остаётся за обычной программной логикой.

ИИ отвечает только за интерпретацию.

При этом каждый его вывод должен иметь подтверждение внутри отчёта.

Если модель использует число, бот проверяет, есть ли это число в конкретных данных, на которых построен вывод.

Если подтверждения нет, такой вывод пользователю не показывается.

Мне кажется, именно здесь проект окончательно перестал быть экспериментом с ИИ и начал превращаться в нормальный рабочий инструмент.

Почему Telegram оказался удобным форматом

Я специально не хотел делать отдельный сложный сервис.

В работе и так достаточно кабинетов, систем, CRM и панелей.

Мне хотелось максимально простого сценария.

Открыл Telegram.

Отправил таблицу.

Выбрал проект.

Проверил данные.

Получил отчёт.

Для регулярной аналитики этого вполне достаточно.

Особенно если нужно быстро подготовиться к встрече, проверить CRM-выгрузку или собрать ежемесячный маркетинговый отчёт.

Что получилось в итоге

Сейчас мой Telegram-бот для аналитики умеет принимать Excel и таблицы, распознавать структуру данных и собирать отчёты по маркетингу и продажам.

Он показывает заявки, каналы, целевую аудиторию, воронку, платежи, причины отказов, города, должности и проблемы качества данных.

После этого ИИ анализирует уже готовый отчёт и формирует короткие управленческие выводы.

Самое интересное для меня здесь даже не финальный продукт.

Интереснее путь.

Изначально я просто хотел перестать вручную собирать одни и те же отчёты из таблиц.

Потом столкнулся с реальными CRM-данными.

Потом понял, насколько сложно сделать универсальную обработку Excel.

Потом пришлось разбираться с дублями, архивными полями, статусами, оплатами и каналами.

Затем появился ИИ.

После этого пришлось строить систему проверки уже для самого ИИ.

И проект до сих пор развивается именно таким способом.

Новая таблица.

Новый тест.

Новая ошибка.

Новое исправление.

Наверное, именно так для меня сейчас выглядит нормальная разработка рабочего инструмента: сначала решить свою собственную проблему, потом постоянно проверять решение на реальности.

И если раньше на подготовку некоторых отчётов уходили часы, сейчас большую часть этой работы я могу просто отправить боту. Ссылка тут^

1