TB Pulse — полный план реализации

Версия от 19.08.2026. Собран из разбора идеи 007 (ideas/exploring/007_sales_intelligence_hub.md),
разведки 12 агентов (ideas/exploring/007-research/) и наработок TB Pulse Dev v2.
Разбор: https://biztune.ru/r/260819-servis-kotorogo-net-analitik-otdela-prodazh-b7e1/
Спецификация: https://biztune.ru/r/260819-chto-imenno-my-stroim-kontseptsiya-mvp-etapy-c4a2/

0. Что это и как соотносится с существующим TB Pulse

Продукт: система контроля исполнения в продажах. Восстанавливает по следам в CRM, как реально работает отдел, и находит места, где обещанное не сделано. Не аналитика звонков, не сквозная аналитика, не BI.

Название проекта: TB Pulse (существующее). Разовая услуга внутри — «Аудит утечек».

Совпадение с TB Pulse Dev v2 — очень высокое

Что уже есть в TB PulseЧто с этим делаем
Сбор из Б24 (лиды, сделки, дела, задачи, часы, чеклисты)Берём концепт разделов целиком. Это готовая онтология того, что вообще имеет смысл собирать
Директорский отчёт: компактные цифры + drill-down со ссылками на сущности Б24Берём как есть — это ровно наш принцип прослеживаемости
Утренний автоотчёт по расписаниюБерём — это наш утренний дайджест
Пинги = реальные действия в Б24 (комменты в задачи, дела в сделки)Берём и расширяем — это фундамент механизма напоминаний
Раздел «Менеджеры» — сводка всех проблемБерём, переосмысляем: не «проблемы», а «кому звонить»
Задачи: просрочено / замершие 7д+ / вот-вотПрямой прообраз правил утечек
Дела: необработанные звонки/чаты/письма, просроченныеПрямой прообраз L1 и L4
AI-онбординг из плана (скан портала → базовый пульс → AI-анализ → кастомный)Это наш агент-сканер. Год назад задумано верно, теперь реализуем
Кастомный пульс через голос/текст, AI генерирует конфигЭто наш словарь понятий голосом. Тоже уже задумано
Мультитенант: workspace_id → API keyБерём
VibeCode API как транспорт к Б24Развилка Ф1-Р1 — см. ниже
claude-runner для AIБерём для внутренних задач; для клиентских данных — см. юрконтур

Чего в TB Pulse нет и что добавляем

1. Деньги. Ни одна метрика не переведена в рубли. Добавляем «деньги под риском» с видимой формулой.

2. Обещания из разговоров. Расшифровки не используются вообще.

3. Голосовой обход — вечерний сбор недостающего.

4. Отслеживание исполнения обещаний (kept/broken).

5. Семантический слой — определения метрик как данные, а не код.

6. Достоверность как фича — «как посчитано», сверка с CRM, честный отказ.

7. Продажа — TB Pulse был внутренним инструментом, продукт не продавался.

8. Мультисорсность — только Б24.

Что НЕ берём из TB Pulse


1. Принципы, которые нельзя нарушать

1. Ни одна цифра в ответе не приходит из токенов модели. Модель выбирает что посчитать, считает движок, значения подставляет шаблон.

2. Метрика без drill-down не существует. Не можешь показать, из каких записей собрана — не показывай вообще.

3. Отчёт отвечает «кому звонить», а не «кто виноват».

4. Данные со слов человека помечаются отдельно и не смешиваются с фактами из систем.

5. Считаем часы на онбординг с первого клиента. Больше 4 часов — это подряд, а не сервис.

6. Коннектор пишется только под оплатившего клиента (кроме первых трёх источников).

7. Абстракция источника расшифровки — с первого дня.

8. Отраслевое живёт в словаре, а не в коде.


ФАЗА 0. Проверка гипотезы — 3–5 дней

Цель: узнать, есть ли в живых данных то, что мы собираемся продавать.

Задачи

Результат

Файл research/phase0-results.md: сколько утечек, на какую сумму, на обоих порталах отдельно.

🚦 Критерий продолжения

На чужом портале утечек минимум на 1 млн ₽. Меньше — STOP, вопрос в Сёму.


ФАЗА 1. Ядро: сбор и лента событий — 2 недели

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

Задачи

Результат

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

Критерий готовности

Контрольная сверка: число сделок, сумма выигранных за месяц, число активностей совпадают с самим Битриксом с расхождением <0,5%.


ФАЗА 2. Правила утечек и отчёт — 1,5 недели

Цель: первый продаваемый артефакт.

Задачи

Результат

Отчёт, за который берут 39 000 ₽.

Критерий готовности

Отчёт по чужому порталу прочитан вслух его владельцем и вызвал реакцию «а покажи эти сделки».


ФАЗА 3. Продажа — параллельно с Ф2, не после

Цель: первые деньги на четвёртой неделе.

Задачи

🚦 Критерий продолжения

Один оплаченный счёт. Нет счёта за 30 дней при 8+ сделанных проверках — STOP, вопрос в Сёму.


ФАЗА 4. Обещания из разговоров — 2 недели

Цель: закрыть главную незанятую щель рынка.

Задачи

Критерий готовности

На 50 реальных звонках: доля верно извлечённых обещаний >80%, ложных срабатываний <10% (проверяется руками).


ФАЗА 5. Подписка и дайджест — 1,5 недели

Цель: превратить разовое в рекуррент. Здесь максимально переиспользуем TB Pulse.

Задачи

🚦 Критерий продолжения

Три платящие подписки. И замер: сколько часов ушло на подключение каждой. >4 часов — идём в Ф6 автоматизировать онбординг, а не строить новое.


ФАЗА 6. Агентский слой: сканер и словарь — 3 недели

Цель: превратить внедрение в сервис. Это условие существования бизнес-модели.

Задачи

Критерий готовности

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


ФАЗА 7. Голосовой обход — 2 недели

Цель: закрыть слепые зоны и замкнуть петлю.

Задачи

Критерий готовности

Доля ответов на обход >60% на второй неделе. Ниже — менять формат, не давить.


ФАЗА 8. Разговор с данными — 3 недели

Цель: удержание и отстройка.

Задачи


ФАЗА 9. Мультисорсность — по оплаченному спросу


ФАЗА 10. Инфраструктура зрелости — по мере роста


Развилки, требующие решения владельца

IDРазвилкаВариантыМоя рекомендация
Ф1-Р1Транспорт к Б24VibeCode vs прямой RESTРЕШЕНО 19.08: VibeCode. Разведка Фазы 0 показала, что он покрывает и транскрипты (/v1/activities/:id/transcript), и таймлайны — то есть аргумент «за прямой REST» отпал. Обязательное условие: абстракция транспорта, чтобы переключиться на REST без переписывания.
Ф1-Р2Куда писать кодtb-pulse-dev vs новый репозиторийРЕШЕНО 19.08: новый модуль pulse-core/ внутри tb-pulse-dev. Старый бот работает, его не трогаем
Ф4-Р1LLM для разбора разговоровclaude-runner (как в TB Pulse) vs GigaChat/YandexGPT vs своя модельНа тестах — claude-runner. На боевых клиентских данных — только РФ-контур, иначе юридически невозможно продавать
Ф5-Р1Канал доставки дайджестаTelegram (как сейчас) vs Б24-чат vs обаОба, но Б24-чат приоритетнее: он внутри рабочего контура клиента и не зависит от блокировок
Ф6-Р1Словарь метрикCube Core vs свой минимальныйНачать со своего минимального (10–15 метрик), Cube — когда упрёмся в кэш и мультиарендность

Порядок работы в новой сессии

1. Читать этот план + ideas/exploring/007_sales_intelligence_hub.md + ideas/exploring/007-research/.

2. Идти по фазам сверху вниз, не перепрыгивая.

3. Каждую задачу — в чеклист, отмечать выполнение прямо в этом файле.

4. На развилке или стопоре — вопрос в Сёму (механизм ниже), ждать ответ, продолжать.

5. По завершении фазы — отчёт в Сёму + обновление статуса здесь.

Механизм вопросов владельцу

Отправить вопрос:

curl -s "https://api.telegram.org/bot8307683495:AAFjV1TBtaHjKkLyytGMrdiL-haO2ft5qTc/sendMessage" \
  -d chat_id=38459671 --data-urlencode "text=❓ ВОПРОС [ID]: ...
1️⃣ Делаем
2️⃣ Не делаем
3️⃣ Делаем с уточнениями (напиши какими)
Ответь цифрой или голосом."

Прочитать ответ (Сёма сохраняет и текст, и расшифровки голосовых):

docker exec tbsema_postgres psql -U tb -d tb_bot -t -c \
 "select created_at, text from messages where telegram_user_id=38459671 and direction='in' and created_at > now() - interval '2 hours' order by id desc limit 5"

Ждать циклом с интервалом 5–10 минут. Пока ждём — делать то, что от ответа не зависит.


Статус выполнения


Журнал реализации

29.08.2026 — Фазы 0–2

Сделано: схема core (10 таблиц) · транспорт с абстракцией и ограничителем на портал · нормализация с тестами · склейка клиентов · сборщик · движок правил L1/L3/L4/L5/L10 · генератор отчёта · канал вопросов через отдельного бота.

Ловушки Битрикса, пойманные на живых данных (все дают неверную цифру и никогда не дают ошибку):

1. closedAtплановая дата закрытия, а не факт. Заполнена почти всегда, часто в будущем. Давала 171 «проигрыш» вместо 77 и события в будущем времени. Лечится: факт = флаг closed + терминальная семантика.

2. Контакты нельзя тянуть с фильтром по дате — сделки за 90 дней ссылаются на карточки многолетней давности. 59 % треков остались без клиента. Лечится: клиентская база тянется целиком.

3. VibeCode отдаёт разовые HTTP 500 — не ошибка данных, а сбой шлюза. Лечится ретраями 5xx.

4. Несколько пропущенных по одной сделке — одна утечка, а не пять.

Замеры: заливка 90 дней портала (188 сделок, 622 дела, 6494 клиента) — около 4 минут при 2 запросах в секунду. Транскрипты доступны, покрытие 12 %.

Канал вопросов: отдельный бот @TBPulseAI_dev_v2_bot, контейнер pulse_dev_bot остановлен по решению владельца (вернуть: docker start pulse_dev_bot). Утилита pulse-core/ask.py.