Неделя 142. От платформы к экосистеме

Разбор этой статьи
Эту тему разобрали в подкасте. Слушай параллельно с чтением.
Это сто сорок вторая неделя с момента, как мы запустили Botseller в августе 2023 года. Каждый понедельник я сажусь и пишу, что мы сделали. Не для SEO, не для красивых метрик в презентациях, а чтобы самому себе и команде не давать расслабиться. Бортовой журнал - это наш публичный log-файл: что смержили в main, что сломали и починили, какие гипотезы проверили, какие закрыли. За прошедшую неделю в основных репозиториях прошло около 60 merged веток. Это первая запись еженедельной серии, и я буду вести её дальше - чтобы через год можно было пролистать и увидеть траекторию движения.
Меня зовут Дмитрий Дьяконов, я основатель и CEO Botseller AI - SaaS-платформы с ИИ-продавцом, CRM и рассылками в 15 мессенджерах. У нас сейчас в работе несколько продуктовых направлений одновременно: ядро платформы, партнёрская программа, клиентские интеграции, контент-маркетинг и блог , и отдельно - обучающий продукт Botseller Academy. Ниже - честный разбор, на что ушло внимание команды в эту неделю и почему.

Пульс недели: что в цифрах

Цифры для тех, кто любит цифры. Я свёл активность по ключевым репозиториям к одной таблице - она отражает не столько производительность, сколько фокус команды. Чем выше число смерженных фич, тем больше ресурса ушло в это направление.
| Направление | Merged веток | Основной фокус недели |
|---|---|---|
| Botseller Academy (clubator) | 20+ | Запуск обучающей воронки, JWT SSO, free-уроки |
| Блог и подкаст (sitebs) | 15+ | 12 эпизодов подкаста, аудиоплеер, SEO docs |
| Партнёрская программа | 6 | Калькулятор дохода, IT-франшиза, мобильная адаптация |
| CRM-ядро | 4 | Инициация диалога, EAV upsert, флаги |
| Клиентские интеграции | 5 | Платежи через CRM, дожим в коробочных системах |
| Публичный веб Clubator | 8 | Landing, legal, tariffs, swarm-deploy |
Суммарно это около 60 уникальных feature-веток, прошедших через merge request в main за семь дней. Темп для меня - это вопрос ритма, а не отчётности: продуктовое окно в нише ИИ-агентов закрывается каждый квартал, и отстать сейчас - значит не догнать через год. Главный вывод недели: мы впервые вышли за пределы одной кодовой базы. Работа шла параллельно в CRM, платформенном API, Clubator, блоге и документации, и ни одно направление не заблокировало другое.
Botseller Academy: запустили обучающую воронку

Главная фича недели - мы запустили Botseller Academy внутри экосистемы. Academy - это клуб по подписке с пошаговыми уроками по настройке ИИ-продавца, промпт-инжинирингу и сборке партнёрского бизнеса. Технически он живёт внутри Clubator (нашего движка клубов), но визуально отделён как самостоятельный продукт. Подробный разбор программы курса и формата - в отдельной статье про обучение нейросетям для бизнеса , здесь же я рассказываю только про техническую сторону запуска.
За эту неделю мы закрыли полный цикл от оплаты до первого урока. Когда пользователь оплачивает подписку, Clubator генерирует JWT-ссылку и передаёт её в Academy через внутренний endpoint с HMAC-подписью. Пользователь попадает сразу в нужный модуль, не логинясь вручную. Это классический SSO-паттерн, но в нашем случае он склеивает три разных приложения: оплату, клуб и обучающую платформу.

Отдельно мы добавили free-уровень - бесплатные уроки с квизами. Идея простая: пользователь получает первые 2-3 урока бесплатно, при прохождении квиза ему автоматически отправляется следующий урок в Telegram, а его ответы пишутся как теги в профиль пользователя. По этим тегам мы потом ведём сегментированные рассылки. Паттерн подсмотрели у Tally, адаптировали под наш движок рассылок.
Самое сложное было не собрать воронку, а сделать её устойчивой. За неделю мы словили и починили три разных бага: cancelled FollowupSend блокировал мгновенный push следующего урока, инстант-отправка первого шага не раскрывала плейсхолдер academy-ссылки, и у нас разошёлся флоу «ручной активации админом» и «webhook оплаты» - второй отправлял уведомление об оплате, первый нет. Теперь это один shared-сервис, как и должно быть.
Academy - первый продукт в нашей линейке, который масштабируется без участия моего времени. Продажа основной платформы требует демо, кастдевов, сопровождения внедрения. Academy работает по модели «оплатил - учишься». Это открытая дверь для двух сегментов сразу: малого бизнеса, которому нужно научиться пользоваться нашей же платформой, и партнёров, которые хотят собрать свою команду интеграторов.
Партнёрская программа 2.0: IT-франшиза с калькулятором

Второй крупный блок - мы переписали партнёрскую программу под новую модель. Раньше у нас было два уровня: реферал и интегратор. Теперь - три: реферал, интегратор и IT-франшиза . Последний - самый амбициозный: партнёр получает наш продукт под своим брендом, полный White Label, собственные цены и свою команду внедрения. Детально эта трёхуровневая схема разобрана в отдельной статье про партнёрскую экосистему Botseller - здесь я её только упоминаю в контексте недельных изменений. Мы в итоге становимся инфраструктурным слоем, а партнёр - лицом бизнеса.
Чтобы показать экономику, мы запустили калькулятор дохода партнёра - интерактивная страница, где можно выбрать модель (реферал / интегратор / IT-франшиза), уровень внутри модели, отрасль и горизонт. На выходе - прогноз по месячному доходу с разложением на источники. Это был отдельный подвиг для команды фронтенда: три независимые ветки, три этапа мобильной адаптации (у мобильных пользователей не влезали длинные названия ниш), финальная полировка niche grid.

Параллельно мы полностью переписали партнёрские материалы под новую модель. Старые тексты упоминали прежнюю двухуровневую схему, и если оставить их в llms.txt и FAQ - агенты LLM будут выдавать клиентам устаревшую информацию. Отдельным коммитом мы сделали финальный аудит - вычистили остатки старой модели в llms-full.txt и одной застрявшей FAQ-фразе. Это мелочь, но в эпоху AI-поиска такие мелочи становятся критичными: один неправильный ответ бота Perplexity - и клиент пошёл не туда.
IT-франшиза - это модель, которую мы видим у Shopify Plus и HubSpot Partner Tier. Партнёр платит за инфраструктуру, а маркетинг, продажи и внедрение делает сам. Для нас этот формат впервые становится реалистичным именно сейчас - после того как ядро платформы стабилизировалось и появились клиентские истории, которые можно упаковать в методичку.
Контент: 2 статьи, 12 подкастов и SEO-ремонт документации
На этой неделе в блог уехали две новые большие статьи. Первая - мультиязычный ИИ-бот: точность vs стоимость , технический разбор того, почему 100% точности в 30+ языках не бывает и как мы это решаем. Вторая - настройка и тестирование ИИ-бота , инструкция по калибровке промпта за пять шагов. Обе - пятитысячники по словам и по семантическому охвату покрывают несколько long-tail кластеров.

Самое интересное - мы запустили подкаст. Технически это аудиоверсия каждой статьи блога с встроенным плеером. Подкаст живёт как iTunes RSS, индексируется Apple Podcasts и Яндекс.Музыкой, а на странице статьи есть компактный плеер с drag-to-seek. За неделю мы выложили 12 эпизодов - это фактически аудио-версия лучших статей блога, включая кейсы клиентов и большую статью про архитектуру нашего бота . Для SEO мы добавили PodcastSeries schema в JSON-LD - это помогает Google и Яндексу правильно идентифицировать страницы как аудиоконтент.
Зачем это делать? Потому что формат потребления контента у нашей аудитории смещается. Владельцы бизнеса не читают 5000 слов за компьютером - они слушают подкасты в машине, в спортзале, на прогулке. Подкаст - это второй канал доставки того же контента, который у нас уже есть. Расход на производство - почти нулевой: автоматическая генерация озвучки по тексту статьи.

Третья большая тема в контенте - SEO-оптимизация документации. За один день мы прошлись по 64 страницам документации , развели ключевые слова между блогом и docs (антиканнибализация), переименовали «Рой Агентов» в «Нейрочатинг» (потому что мы перестали позиционировать операционные функции через агентов - это часть ребрендинга), и добавили StructuredData, FAQ и описание разделов на 5 hub-страниц. После этого документация стала цитируемой не только внутри продукта, но и как внешний SEO-актив.
CRM-ядро: инициация диалога, EAV и фильтрация расписания

Теперь про ядро платформы. CRM - это сердце Botseller, и любое изменение в нём я смотрю лично. На этой неделе мы закрыли четыре важные правки, каждая из которых - следствие реальных инцидентов у клиентов.
Первая правка - нода инициации диалога. Раньше при создании нового лида у нас был race condition: customer_id инициализировался позже, чем вызывался метод комбинации нод пайплайна. В редких случаях это приводило к тому, что бот отправлял сообщение не в тот аккаунт. Поменяли порядок инициализации - теперь customer_id проброшен до первого метода, никаких гонок. Звучит скучно, но именно такие невидимые баги съедают 80% времени senior-разработчика в зрелом SaaS - и именно они отличают платформу, которой можно пользоваться, от платформы, которая иногда работает.
Вторая правка - флаг-переменные. У нас есть специальный тип переменных-флагов (stop, boolean), которые контролируют перехват диалога ботом и оператором. Обнаружили двойную валидацию и неправильную сериализацию для булевских значений - исправили. Это часть механики перехвата диалога , которой мы гордимся: бот не просто замолкает, когда подключается оператор - он делает это плавно, с мягким и жёстким перехватом.
Третья правка - EAV-переменные и optimistic upsert. EAV (entity-attribute-value) - это наш способ хранить кастомные поля для любых сущностей CRM: лидов, контактов, чатов. Раньше при обновлении значения переменной мы делали тихий POST без проверки, существует ли запись. Это приводило к «молчаливым» ошибкам - пользователь нажимал «сохранить», ничего не происходило, и он терял данные. Сделали optimistic upsert: сначала пытаемся UPDATE, если ничего не обновилось - делаем INSERT. Плюс динамический entityOrder в CRM-переменных: порядок сущностей теперь определяется по контексту, а не фиксирован в константе.
Четвёртая правка - фильтрация расписания по branch_id. У одного из клиентов (сеть фитнес-студий с филиалами) в расписании отображались записи всех филиалов, даже если пользователь выбрал конкретный. Добавили серверную фильтрацию service_signs по branch_id на двух уровнях - в CRM и на платформенном API. Один фильтр - большая разница для клиента.
Интеграции: платежи через CRM и дожим в коробочных системах

Параллельно с ядром мы делали работу на стороне клиентских интеграций. Это специфика нашей модели: часть клиентов требует доработки под свои бизнес-процессы, и мы относимся к этому как к отдельной продуктовой линейке.
Для одного из наших клиентов - сети детских спортивных центров - мы сделали обработку входящего платежа и создание платежа через внутреннюю систему Botseller CRM. Теперь их администраторы не заводят оплату руками: платёж автоматически создаётся в CRM, привязывается к сделке с конкретным родителем, и пайплайн переходит к следующему шагу - подтверждение записи ребёнка на занятие, выдача абонемента, напоминание о следующем визите. Платёжная интеграция в SaaS - это всегда боль: банки, API, сверка. Но если её собрать один раз как модульный блок - она становится шаблоном для следующих клиентов с похожей моделью.
Вторая интеграционная тема - дожим сообщений в клиентских коробочных CRM. У нас есть клиенты, которые работают внутри собственных CRM-систем (не botseller_crm, а корпоративная коробка), и мы интегрируемся в их поток. В этих интеграциях мы сделали повторную отправку ключевого сообщения и повторное прокидывание его в лида. Проблема была в том, что коробка не всегда отдавала ответ на первый запрос - таймауты, сетевые глюки. Теперь у нас есть механизм retry с идемпотентным ключом: второй запрос не создаёт дубль, а корректно обновляет существующий лид.
Ещё мелочь: изменили адрес к базе 1С у одного клиента (они переехали на новый сервер), и добавили эндпоинт для выгрузки списка всех ботов для нод платформы - это нужно партнёрам, которые строят свои сценарии внутри наших платформенных нод.
Clubator как публичный продукт: landing, legal, tariffs

Последний крупный блок недели - мы сделали Clubator (наш движок клубов по подписке) публичным продуктом. Раньше это был инструмент для внутренних клиентов, теперь - отдельный SaaS с собственным сайтом, блогом, документацией и страницей тарифов.
За неделю мы подняли три Next.js-приложения в одном swarm-stack: публичный landing, блог и docs. Перенесли внутреннюю техническую документацию с /docs на /internal-docs (чтобы не смешивать публичную docs с внутренней), добавили эмеральд-палитру для блога (визуально отделяет Clubator от Botseller), и заполнили всю обязательную обвязку: 4 правовые страницы (Оферта, Политика конфиденциальности, Согласие на обработку ПДн, Правила пользования), реквизиты компании в shared constants, прозрачную шкалу тарифов с привязкой к Prodamus (наш эквайер), CTA «Создать клуб» с переходом на логин, и cookie-banner.
Это не просто маркетинговый сайт. Это свидетельство того, что мы расширяем продуктовую линейку: Botseller (ИИ-продавец для бизнеса) + Clubator (клубы по подписке) + Academy (обучающая платформа). Три продукта из одной инфраструктуры, а не три отдельные команды с собственными стеками - именно так платформа превращается в экосистему.
В чём главный итог 142-й недели?

Если сжать итог недели в одно предложение: платформа превратилась в экосистему. Раньше у нас был один маховик - SaaS-платформа для автоматизации продаж. Сейчас их три, и каждый усиливает два других. Ядро даёт технологию, ИИ-агентов и CRM-инфраструктуру. Clubator даёт движок для создания комьюнити и управления подписками. Academy обучает рынок и партнёров работать с нашей технологией.
Важна здесь не каждая из трёх составляющих по отдельности. Важно то, что они питают друг друга. Партнёр обучается в Academy, становится клиентом Clubator для своего бизнеса, использует Botseller как ИИ-инфраструктуру. Клиент CRM приходит за автоматизацией продаж, находит в документации обучающую траекторию Academy, подключает Clubator, когда его бизнесу понадобится клуб по подписке. Три независимых потока ценности, три кодовые базы, три команды - на одном техническом фундаменте.
Приходите в Telegram-канал

Бортовой журнал - это моя попытка выстроить публичный ритм и собрать вокруг Botseller живое сообщество людей, которым интересно, как изнутри устроен растущий SaaS. Я пока не знаю лучшего места для этого сообщества, чем Telegram. Там я выкладываю короткие заметки между понедельничными выпусками: фрагменты кода, мелкие решения, которые не попали в статью, вопросы, над которыми я думаю прямо сейчас. Подписка - @botseller_ai .
Если то, что я описываю, вам близко - заходите. Не нужно быть нашим клиентом или партнёром, чтобы читать канал. Достаточно того, что вам интересно наблюдать, как платформа превращается в экосистему, и при этом видеть честную картину, а не причесанный маркетинг.
FAQ
Почему вы публикуете еженедельный отчёт, а не стандартные release notes?
Release notes - это sales-material для существующих клиентов. Бортовой журнал - это другой жанр: нарратив движения. Я хочу, чтобы любой человек, которому интересен Botseller, мог открыть выпуск и за 10 минут понять, что мы делали, куда двигались и что нас в этом движении удивило. Плюс - это честность перед самими собой. Каждую неделю нужно ответить: а что мы вообще сделали?
Почему именно 142-я неделя, а не 1-я?
Потому что Botseller существует с 1 августа 2023 года. Я решил, что первым публичным выпуском бортового журнала не обязан быть №1 - гораздо честнее показать, что за плечами уже почти три года движения. Нумерация идёт от старта проекта и будет накапливаться дальше: №143, №144, №145. Через год будет №194, через два - №246. Эта серийность для меня - способ не дать проекту «размыться» в бесконечных итерациях.
Какой самый сложный инцидент был на этой неделе?
Dedup cancelled FollowupSend. Звучит непонятно, но суть такая: в Academy у нас есть мгновенная отправка следующего урока после прохождения квиза. У одного пользователя это не срабатывало. Оказалось - у него была «отменённая» запись в очереди FollowupSend, и наша логика дедупликации считала её за существующую отправку и блокировала новую. Отладка заняла несколько часов с чтением логов Loki и прогонами в staging. Урок: dedup должен смотреть только на активные записи, не cancelled.
Вы правда читаете коммиты каждую неделю?
Да. Я лично просматриваю merge requests в main по всем репозиториям, которые касаются продукта. Это занимает 2-3 часа в неделю, но это единственный способ держать в голове состояние системы. Если основатель не читает код - через год у него будет команда, которую он не понимает, и продукт, которым не может управлять.
Почему запустили подкаст именно сейчас?
Потому что появилась критическая масса статей, которые жалко оставлять только в текстовом виде. В блоге сейчас больше шестидесяти материалов, многие по 4-5 тысяч слов. Владельцы бизнеса не читают такие тексты за столом - они слушают в машине, в спортзале, на прогулке. Подкаст - это способ доставить тот же контент в том формате, в котором аудитория реально его потребляет. Производство почти ничего не стоит, а второй канал дистрибуции мы получаем фактически бесплатно.
Почему именно понедельник?
Потому что выходные - время осмысления. За субботу-воскресенье я успеваю прочитать, что мы смержили за неделю, структурировать в голове тематические блоки и подумать, что в этом движении главное для читателя. В понедельник утром - сажусь и пишу. К полудню текст уезжает в блог, и неделя начинается с общего контекста того, куда мы идём.
Если то, что я описываю, откликается - подпишитесь на Telegram-канал @botseller_ai . Там я выкладываю микро-заметки между понедельничными выпусками и отвечаю на вопросы читателей.
А если хотите посмотреть, как это применяется к вашему бизнесу - оставьте заявку , мы разберём вашу воронку за 30 минут. Если вы предприниматель или интегратор, который хочет строить бизнес на нашей инфраструктуре - страница для партнёров и калькулятор дохода ждут вас.
До 143-й недели.



