Состояние на утро 4 сентября 2026. Всё, что здесь описано, работает и проверено на живых данных.
За ночь «Пульс» из набора скриптов превратился в приложение, которое живёт внутри Битрикс24.
| Слой | Состояние |
|---|---|
| Сбор портала → лента событий «клиент × время» | работает, проверено на двух порталах |
| Движок находок (утечки в рублях) | работает, 514 находок на нашем портале |
| Установка в Битрикс24: OAuth, встройки, события, удаление данных | написано и покрыто тестами, ждёт живого портала |
| Сканер портала: «что я увидел» человеческим языком | работает, читайте §4 — это лучшее, что получилось |
| Слой понятий: правила как данные, версии, предпросмотр | работает |
| Голос → машинное правило | работает от звука до правила, §5 |
| Дайджесты, расписания, тихие часы, пинги | работает |
| Разговор с данными, дашборды по фразе | работает; включать не спешим — см. §9 |
| Интерфейс приложения | 16 экранов, демо-режим; снимки в docs/shots/ |
Две службы уже подняты и переживут перезагрузку сервера:
- pulse.service — приложение, 127.0.0.1:8013
- pulse-worker.service — расписания, дайджесты, очередь записи в портал
cd ~/ai-lab/tb-pulse-dev
export CORE_DSN="postgresql://pulse:pulse@localhost:5436/pulse_dev"
set -a; . ./.env; set +a
.venv-core/bin/python -m pulse.cli --tenant 1 doctor
Ожидаемый ответ:
БД ок, событий 2358
модель ок, 2 с
приложение ок
расшифровка речи ок, gigaam-v3-e2e-rnnt (1260 МБ)
портал ок, ключ принят
Если что-то «НЕТ» — там же написано, что именно сломалось.
# что уже собрано
.venv-core/bin/python -m pulse.cli --tenant 1 stat
# утечки списком, с деньгами и обоснованием
.venv-core/bin/python -m pulse.cli --tenant 1 leaks --top 5
# HTML-отчёт (тот, что продаётся за 39 000 ₽)
.venv-core/bin/python -m pulse.cli --tenant 1 report --out /tmp/otchet.html
--tenant 1 — наш портал biztune39, --tenant 2 — 4keys (агентство недвижимости).
.venv-core/bin/python -m pulse.cli --tenant 1 audit --out /tmp/audit.html
Готовые примеры на живых данных лежат в репозитории:
docs/audit-biztune39.html (наш портал) и docs/audit-4keys.html (агентство недвижимости).
Что в нём есть и почему именно так:
Вот что отчёт говорит про портал 4keys — это готовый текст для разговора с клиентом:
Из 136 полей карточки сделки заполнены хоть у кого-то только 44 — по остальным считать нельзя, я их не использую. Нашёл 549 тестовых сделок — это 23 % базы, из расчётов исключил. У 94 % сделок не указана сумма. 53 % закрытых сделок закрыли в тот же час, когда завели — обычно так выглядит перенос базы или дубли, а не продажа.
Историческая конверсия — 55 % по 1 751 закрытой сделке. Конверсия выше половины почти всегда значит, что «выиграно» здесь — не оплата, а этап. Деньги под риском поэтому считаю консервативно, по 20 %.
.venv-core/bin/python -m pulse.cli --tenant 1 scan
Он читает уже собранную ленту и рассказывает про портал по-русски. Вот что он говорит про наш портал:
У вас 9 воронок. Больше всего сделок в воронке «Основная воронка» — 41 %. Смотрю на портал с 5 февраля 2019 по 3 сентября 2026: 1 006 событий по 258 сделкам и лидам. В ленте видно 6 из 47 сотрудников — остальные за последние три месяца в CRM ничего не делали.
Дольше всего сделки стоят на стадии «Ждём закрывашки»: медиана 34 дня, а каждая десятая застревает там ещё дольше — на 2 месяца. Посчитано по 22 сделкам. Историю переходов между стадиями портал не отдал, поэтому время в стадии я считаю приближённо.
Работаете пн–пт, примерно с 10:00 до 18:00; тишину в выходные нарушением не считаю — на них приходится 4 % всей активности.
Из 291 полей карточки сделки заполнены хоть у кого-то только 70. Нашёл 14 тестовых сделок — это 5 % базы, из расчётов исключил. У 43 % сделок не указана сумма. У 19 клиентов одновременно открыто больше одной сделки — это 41 лишний трек, и по ним отчёты двоятся.
Историческая конверсия — 36 % по 152 закрытым сделкам, медианный чек 45 000 ₽.
А вот про 4keys — обратите внимание на последние две строки, это готовый разговор с клиентом:
53 % закрытых сделок закрыли в тот же час, когда завели — обычно так выглядит перенос базы, а не продажа.
Историческая конверсия — 55 %. Конверсия выше половины почти всегда значит, что «выиграно» здесь — не оплата, а этап. Деньги под риском поэтому считаю консервативно, по 20 %.
Два источника, которых мы не использовали, закрывают ровно те дыры, о которых продукт до сих пор честно писал «не знаю»:
GET /v1/stage-history — история переходов по стадиям. На нашем портале 25 086 записей. Время в стадии перестало быть оценкой сверху, а «стадию N пропускают в 100 % случаев» стало фактом, а не догадкой.GET /v1/calls/statistics — длительность звонка, код завершения, ссылка на запись, признак наличия расшифровки. Теперь недозвон отличается от разговора:Звонки в CRM есть: 116 исходящих и 47 входящих. Но разговором стали не все: из 114 исходящих попыток дозвонились 60, это 53 % — остальное недозвоны, а в отчётах они обычно выглядят работой.
Это та самая продающая строка, ради которой в концепции заведены три уровня касания. До сегодня она была теорией.
🔴 Важно, как это устроено внутри: все цифры считает движок, а модель только связывает готовые фразы в текст. Валидатор проверяет ответ модели: если в нём есть хоть одна цифра — ответ выбрасывается и текст собирается механически. Без модели сканер работает тоже.
В конце рассказа — блок «Что здесь неверно?». Ответ человека на этот вопрос и есть главная настройка продукта.
.venv-core/bin/python -m pulse.cli --tenant 1 reconcile
Десять контрольных срезов против портала. По нашему порталу сейчас расхождение ноль:
| срез | портал | у нас | расхождение |
|---|---|---|---|
| открытых сделок | 198 | 198 | 0,00 % |
| сумма открытых сделок | 9 463 846 ₽ | 9 463 846 ₽ | 0,00 % |
| выиграно за 30 дней | 33 | 33 | 0,00 % |
| сумма выигранных за 30 дней | 1 826 495 ₽ | 1 826 495 ₽ | 0,00 % |
| проиграно за 30 дней | 35 | 35 | 0,00 % |
| лидов | 93 | 93 | 0,00 % |
| лидов в работе | 8 | 8 | 0,00 % |
| дел за 30 дней | 151 | 151 | 0,00 % |
| активных сотрудников | 12 | 12 | 0,00 % |
| новых сделок за 30 дней | 38 | 38 | 0,00 % |
Дрейф выше 0,5 % ставит в отчёте пометку «расходится с CRM» — цифра, которая не сходится с порталом, не должна выглядеть так же уверенно, как та, что сходится.
По дороге сверка поймала три ошибки в себе самой, и это ровно то, ради чего она нужна: она сравнивала всю историю портала с нашим окном в 90 дней, брала горизонт по самому старому сбору вместо последнего, и не учитывала, что портал живёт дальше, а наш снимок остановился в момент сбора. Единственное «лишнее» дело оказалось письмом, пришедшим через десять минут после сбора.
Это работает целиком. Живой прогон на фразе «считай сделку забытой если по ней больше пяти дней ничего не происходит и сумма выше трёхсот тысяч» даёт вот что (49 секунд):
Понял правило так: «Забытая крупная сделка»: дней без касания больше 5 дней (пять дней) и сумма больше 300 000 ₽ (триста тысяч рублей) и состояние «в работе»
| Условие | Поле в CRM | Из ваших слов |
|---|---|---|
| Дней без касания больше 5 | Дней без касания | «больше пяти дней ничего не происходит» |
| Сумма больше 300 000 ₽ (триста тысяч) | Сумма | «сумма выше трёхсот тысяч» |
| Состояние «в работе» | Состояние | ⚠️ вы этого не говорили — добавил по умолчанию |
Предупреждения: «больше»/«не больше» — инверсия · «пяти» — путаница 5/15/50 · «трёхсот тысяч» — порядок величины.
Почему так подробно: расшифровка речи путает «5/15/50» и «триста тысяч / три тысячи», а это разница в 10–100 раз в деньгах. Поэтому каждое число показывается цифрами и прописью, а каждое условие обязано иметь дословную цитату — условие без цитаты считается выдумкой модели и выбрасывается автоматически.
Проверить самому:
.venv-core/bin/python -c "
import os; os.environ.setdefault('CORE_DSN','postgresql://pulse:pulse@localhost:5436/pulse_dev')
from pulse.voice.to_rule import to_rule
from pulse.voice.confirm import build
d = to_rule('сделка горячая если клиент сам написал за последние два дня и сумма больше ста тысяч')
print(build(d, None)['natural_ru'])
"
Нужен только ключ VibeCode от портала клиента. Ничего устанавливать не надо, доступ только на чтение.
crm.export CORE_DSN="postgresql://pulse:pulse@localhost:5436/pulse_dev"
VIBE_API_KEY="vibe_app_КЛЮЧ_КЛИЕНТА" \
BITRIX_PORTAL_URL="https://портал-клиента.bitrix24.ru" \
.venv-core/bin/python -m pulse.cli --tenant 10 sync --days 365 --rps 3
.venv-core/bin/python -m pulse.cli --tenant 10 scan
.venv-core/bin/python -m pulse.cli --tenant 10 report --out /tmp/otchet-klienta.html
--tenant — любое свободное число от 10. Заливка портала на 5–10 тысяч сделок идёт 3–5 часов — запускайте фоном заранее, это не время работы человека.
🔴 На клиентских порталах — только чтение. Режим записи по умолчанию none, приложение физически не пишет в портал, пока владелец не переключит.
https://pulse.biztune.ru/b24/install, путь установки — он же.crm, user, department, placement, im, imbot, bizproc, imopenlines, disk.⚠️ Что обязательно сказать клиенту до продажи: в России приложение не может быть бесплатным. REST-доступ работает только при подписке «BitrixGPT + Маркетплейс» — 500 ₽/мес на Базовом, 1 500 ₽/мес на Стандартном (наш реальный минимум, на Базовом всего 5 пользователей), 3 000 ₽/мес на Профессиональном. Это касается даже локальных приложений и вебхуков. Строку нужно называть на переговорах, а не после.
Приложение работает на 127.0.0.1:8013. Чтобы Битрикс мог его открыть, нужен публичный адрес.
Всё подготовлено, осталась одна команда:
sudo bash ~/ai-lab/tb-pulse-dev/deploy/publish.sh
Она проложит маршрут pulse.biztune.ru → Beget → Hetzner → приложение. Перезагрузки мягкие, VPN не прерывается. Откат — sudo bash deploy/publish.sh --rollback.
Почему не сделал ночью: скрипт правит конфигурацию VPN-контура, и защита среды такие правки не пропускает без вашего участия. Это правильный барьер, ломать его не стал. Резервные копии конфигов уже лежат рядом с оригиналами.
Дальше скрипт напечатает вторую часть — команды для фронта на Beget (nginx + сертификат). Домен pulse.biztune.ru уже резолвится: у *.biztune.ru есть wildcard-запись, DNS трогать не надо.
Приложение само, по расписанию: - 09:00 пн–пт — утренний дайджест руководителю; - 18:00 пн–пт — вечерний итог; - 03:30 ежедневно — синхронизация портала; - 17:30 пн–пт — вечерний обход менеджеров (выключен по умолчанию).
Вот реальный утренний дайджест по нашему порталу:
📊 ПУЛЬС — 3 сентября, четверг
💰 Под риском ≈ 3,7 млн ₽ · 137 находок
📞 КОМУ ЗВОНИТЬ СЕГОДНЯ (7)
1. 5 открытых сделок у одного клиента · 250 186 ₽ · Александр Бобырь
2. заявка на BI от Сергея Русанова · 185 263 ₽ · проиграна без касаний
3. Модная елка — 420к · 151 974 ₽ · тишина 45 дней
...
Проверить руками:
.venv-core/bin/python -m pulse.cli --tenant 1 digest --kind morning
Правила доставки, заложенные в код: тихие часы откладывают сообщение, а не глотают · не больше 4 сообщений человеку в день, сверх — склеиваются в одно · пропущенный запуск не выполняется задним числом (иначе утром прилетит пачка вчерашних) · выполненное в срок не порождает уведомлений вообще.
Запускал отдельного скептика с заданием разнести концепцию. Он нашёл вещи, которые важнее всего построенного за ночь. Полностью — в docs/SKEPTIC-2026-09.md, здесь пять главных.
1. Самое дорогое допущение не проверено ни разу. За «утечки, посчитанные в рублях» в России не нашлось ни одного оплаченного кейса. На этом допущении стоит и аудит за 39 000, и вся подписка. Проверено всё, кроме единственного, что решает.
2. Срок окупаемости больше срока жизни преимущества. До 34 платящих подписок — точки, где подписка выгоднее продажи тех же часов студией — 2,5–4 года. До того как Битрикс сам сделает дневной план — 6–12 месяцев, и это уже не прогноз: «Чекин 2.0» с AI-планом дня в проде с мая 2026.
3. Цена 9 900 ₽/мес в мёртвой зоне. Битрикс24 Стандартный стоит 5 590–6 990 ₽/мес. Надстройка дороже самой CRM в 1,4–1,8 раза. Соседи в Маркете берут 990–6 990 ₽.
4. Половина концепции уже занята. Разговор с данными — CRMbot, 32 734 установки. Дашборды по фразе — AI Аналитика24, это буквально их ядро. Пинги по разделам — Bambit, 1 026 установок, обновлено 26.08.2026. Рейтинг менеджеров — штатный в Речевой аналитике Битрикса.
5. Рейтинг накручивается, и это подорвёт основной отчёт. Все четыре показателя накручиваются одним действием: первое касание — звонком на 5 секунд, обещания — тем, что их перестанут произносить вслух, тишина — пустым комментарием, реакция на пинг — нажатием кнопки без работы.
Первым продуктом — «Аудит утечек» как услуга студии. Подписка второй, после трёх оплаченных аудитов. Маржа с одной продажи аудита больше годовой маржи с подписки, инструмент уже написан и проверен, и для услуги не нужны ни Маркет, ни статус техпартнёра, ни юрлицо с ОКВЭД 62/63, ни ЭДО.
И проверка на три дня ценой в ноль рублей: взять 8–12 руководителей, показать отчёт по их порталу и выставить счёт со ссылкой на оплату со сроком 48 часов. Не «интересно?», а счёт. Ноль оплат при менее чем четырёх подтверждённых находках → подписку в парковку.
Я продолжил строить, потому что вы просили довести до продукта, и это сделано. Но порядок в новом плане (docs/PLAN-2026-09.md) переставлен: сначала деньги за услугу, потом продукт. Код по отложенным направлениям написан и лежит готовым — включить его дело одного дня, когда появится платящий.
| # | Вопрос | Почему это к вам |
|---|---|---|
| 1 | Публикуем pulse.biztune.ru? |
одна команда, §7. Нужно ваше добро на правку VPN-конфигурации |
| 2 | Название: «Пульс» или «Дожим»? | в архиве от 19.08 вы выбрали «Дожим», в документах закрепился «Пульс». В коде это одна константа |
| 3 | 🔴 Какая модель работает с клиентскими данными? | блокирует весь слой понятий. claude-runner — ваша личная подписка, для чужих персданных не годится. Anthropic — трансграничная передача с уведомлением РКН. GigaChat не держит строгую схему, на которой всё построено |
| 4 | Пишем в портал клиента или нет? | без записи продукт — дашборд, которых в Маркете десятки и часть бесплатна. С записью — единственная незанятая механика. Сейчас стоит «не пишем» |
| 5 | Делаем проверку «восемь счетов»? | 3 дня, ноль рублей, отвечает на главный вопрос проекта |
| 6 | Идём в Маркет сейчас? | нужны ООО/ИП на УСН, ОКВЭД 62/63, ЭДО через Диадок, статус техпартнёра. До первых денег можно на локальных приложениях |
Отраслевые бенчмарки на данных клиентов — вопрос закрыт, а не отложен: п. 9.5.2 Условий каталога запрещает их прямо. Из стратегии убираем.
~/ai-lab/tb-pulse-dev/
├── docs/
│ ├── INSTRUCTION.md ← этот файл
│ ├── CONCEPT-2026-09.md ← полная концепция: роли, все экраны, слой понятий, право
│ ├── PLAN-2026-09.md ← план реализации, новый порядок фаз
│ ├── SKEPTIC-2026-09.md ← разбор скептика целиком
│ ├── ARCHIVE-DIG.md ← раскопки архива обсуждений: что вы хотели, но не попало в план
│ ├── API.md ← контракт между интерфейсом и сервером
│ ├── INFRA.md ← карта серверов
│ └── SESSION-STATE.md ← состояние работы, для продолжения
├── research/ ← 15 файлов разведки
├── pulse/ ← код продукта
└── deploy/publish.sh ← публикация наружу
Полезное в research/, чего раньше не было: b24-roboty.md (роботы работают на Базовом тарифе; bizproc.trigger.add не существует) · b24-chatboty.md (старый imbot устарел, нужен imbot.v2; есть режим опроса без публичного адреса) · stt-russkiy.md (GigaAM-v3 под MIT, работает на обычном процессоре, своя расшифровка дешевле покупной с первого клиента) · conversational-bi.md (свободный перевод русского вопроса в SQL даёт 4–6 % — так делать нельзя ни в каком виде).
Обновлено 04.09.2026 09:29