Блог

Product10 min read

Почему мы создали ИИ-бота для Odoo (и чему это нас научило)

После внедрения Odoo в более чем 50 компаниях мы заметили закономерность, которая нас беспокоила. Мы тратили месяцы на настройку системы, миграцию данных, обучение пользователей и развёртывание. А полгода спустя CEO — тот самый человек, который утвердил проект, — по-прежнему просил ассистента вытащить цифры из Odoo. Он никогда не заходил туда сам. И не потому, что система была плохой, а потому что открыть браузер, пройти по нужному меню, настроить фильтры и прочитать дашборд — это слишком много трения, когда тебе просто нужно узнать выручку прошлого месяца.

Это не проблема именно Odoo. Так происходит с SAP, Microsoft Dynamics, с любой ERP. Те, кому данные нужны больше всего — руководители, основатели, менеджеры в разъездах, — меньше всего склонны сидеть перед десктопным приложением и кликать по меню. Им нужны ответы, а не интерфейсы.

Мы начали с простого прототипа в конце 2025 года. Telegram-бот, который подключался к инстансу Odoo и отвечал на вопросы на естественном языке. Первая версия использовала примитивный поиск по ключевым словам — если ввести «выручка», он вытягивал итог из account.move. Это было грубо, но реакция клиентов оказалась мгновенной. CEO производственной компании сказал нам, что за первую неделю с ботом он проверил свои цифры чаще, чем за весь предыдущий квартал через дашборд Odoo.

Настоящий прорыв случился, когда мы интегрировали Claude в качестве основы ИИ. Вместо жёстких ключевых слов пользователи могли задавать вопросы естественно: «Сколько единиц SKU-4521 мы отгрузили на прошлой неделе?» или «У какого менеджера по продажам была самая высокая маржа в Q1?» ИИ разбирает намерение, сопоставляет его с запросами к моделям Odoo, получает данные через XML-RPC и форматирует понятный человеку ответ. Он поддерживает уточняющие вопросы с контекстом: можно спросить «А во втором квартале?» — и он поймёт, что речь всё ещё о марже менеджеров.

Выбор Telegram в качестве интерфейса был осознанным. Мы рассматривали собственное мобильное приложение, веб-дашборд, интеграцию со Slack. Но наши клиенты — преимущественно компании с Ближнего Востока и из СНГ, где Telegram является стандартным инструментом деловой коммуникации. Он уже открыт у людей весь день. Не нужно ставить приложение, не нужно проходить онбординг. Вы добавляете бота, один раз авторизуетесь и начинаете задавать вопросы.

Техническая архитектура прошла через три итерации. Версия первая — монолит: бот, ИИ и интеграция с Odoo в одном процессе Node.js. Для демо работало, но масштабировать это было невозможно. Версия вторая разделила всё на микросервисы, но добавила слишком много сложности для нашей небольшой команды. Версия третья — то, что работает в продакшене — прагматичный монорепозиторий с Grammy.js для Telegram-бота, Fastify для API и Prisma для нашей собственной базы данных. Не микросервисы и не монолит, а разумное разделение в рамках одного деплоя.

Что нас удивило — это объём работы по детекции схемы. Каждый инстанс Odoo уникален. Клиенты добавляют кастомные поля, ставят разные модули, используют разные соглашения об именовании. Наш бот должен понимать, что клиент А называет поле бренда «x_brand», а клиент Б — «product_brand_id». Мы построили систему автоматического профилирования схемы, которая при первом подключении читает метаданные Odoo клиента и сопоставляет их конкретные имена полей с нашими стандартными шаблонами запросов.

Ценообразование стало еще одним уроком. Изначально мы планировали простую модель оплаты за пользователя, но корпоративным клиентам требовалась предсказуемость затрат, в то время как малый бизнес хотел низкий порог входа. В итоге мы создали четыре тарифа: 14-дневный бесплатный пробный период для тестирования (1 пользователь, 20 запросов, все базовые отчеты), Starter за $39/месяц для небольших команд (3 пользователя, 150 запросов в месяц, все 43 отчета, 4 запланированных отчета), Pro за $149/месяц для растущих компаний (10 пользователей, 500 запросов в месяц, все отчеты плюс MRP, 15 запланированных отчетов, память диалогов, приоритетная поддержка) и Enterprise с индивидуальным ценообразованием для крупных организаций (неограниченное количество пользователей, корпоративные инструменты, развертывание on-premise или через VPN, пользовательские инструменты, определяемые в YAML, SLA 99,9%, персональный менеджер). Ключевым выводом стало то, что объем запросов, а не количество пользователей, является правильной осью ценообразования для AI-продукта, где каждый запрос имеет реальную вычислительную стоимость.

Самой сложной инженерной задачей оказался не ИИ и не интеграция с Odoo, а корректная работа с правами доступа Odoo. Когда пользователь спрашивает «Покажи зарплаты всех сотрудников», бот должен соблюдать те же права, что соблюдала бы Odoo, если бы пользователь залогинился напрямую. Мы решаем это через сервисную учётную запись с тщательно ограниченными правами, но это означает, что часть запросов возвращает «У вас нет доступа к этим данным» — и это корректное поведение, а не баг.

Мы также поняли, что галлюцинации ИИ — реальный риск при работе с бизнес-данными. Если бот уверенно заявит, что выручка Q1 составила $2,3 млн, хотя на самом деле она была $2,1 млн, — это хуже, чем отсутствие ответа вовсе. Мы нивелируем это тем, что ИИ никогда не генерирует цифры — он только форматирует и объясняет данные, полученные напрямую из запросов к Odoo. ИИ пишет повествование, но каждая цифра в ответе восходит к реальной записи в базе.

Через полгода после запуска у нас есть клиенты в производстве, образовании, ритейле и профессиональных услугах, которые пользуются ботом ежедневно. Средний клиент отправляет 15–20 запросов в день, преимущественно с мобильного и вне офисных часов — именно тот сценарий, под который мы проектировали продукт. Самые популярные запросы — финансовые сводки, остатки на складе и статусы воронки продаж.

Что дальше: мы строим систему проактивных уведомлений. Вместо того чтобы ждать, пока пользователь задаст вопрос, бот будет следить за ключевыми метриками и сообщать, когда что-то требует внимания — запасы ниже порога, просроченные счета сверх определённой суммы, риск невыполнения плана продаж. Цель не просто отвечать на вопросы, а добиваться, чтобы правильные вопросы вообще задавались.

Хотите узнать больше или обсудить, как это применимо к вашему бизнесу?