На главную

Рабочий день 03.09: Pulse, продажи и витрины

За день доработали PULSE, разобрали продажи, собрали витрину App Store и несколько служебных контуров — без выдуманных метрик.

Фокус дня

Куда ушло внимание за день — по объёму переписки в AgentChat, 279 сообщений всего.

  • PULSE — 33%
  • SalesMachine — 21%
  • AppleStyle — 8%
  • Mentor — 7%
  • AgentChat — 6%
  • Блог — 6%
  • Sentinel — 4%
  • Music — 4%
  • Final — 3%
  • Switchboard — 3%
  • LYSAK — 1%
  • Dashboard — 1%
  • Next — 1%
  • Herald — 1%

PULSE

PULSE — это наш трекер энергии и связанных с ним рабочих контуров: в нём есть таймеры, фокус по целям и всё, что помогает жить в режиме коротких рабочих циклов. Сегодня по нему было больше всего внимания, и это видно не только по объёму сессий, но и по тому, что мы разбирали сразу несколько частей продукта.

Сначала проверили, как в продукте считается цель «Маркетинг»: в разборе по 24 часам увидели, что в прогресс этой цели сейчас входит только бакет Mentor, а focus-in-goal в коде подтвердился как реальный механизм, а не «реклама». Отдельно разобрали расклад сообщений по продуктам за сутки и уточнили, что Mentor, 1 млн, YouTube, SEO, PULSE и News видны в общем списке, но не все входят в саму цель.

Параллельно доделали интерфейс таймеров. Наверху теперь один большой таймер: если что-то уже запущено, наверху показывается активный таймер, если нет — первый в списке; при запуске другого он сам переезжает наверх, а бывший активный уходит вниз. Остальные таймеры сделали компактными в одну строку, с маленькой кнопкой play, названием, временем и стрелками вверх/вниз; для кастомных добавили маленький крестик удаления. В проверке на реальном тестовом аккаунте смотрели и mobile, и desktop, прежде чем считать изменения готовыми.

Ещё по PULSE собрали воронку по ключу PULSE в @olehovmentor: она активна, проверена через readback, с подписочной проверкой и ссылкой на посадочную. Если смотреть в сумме, это уже не набор отдельных экранов, а рабочий контур с таймерами, целями и внешним входом из контента.

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

SalesMachine

SalesMachine — это наш контур холодных рассылок и обработки откликов, где мы смотрим не на красивые обещания, а на реальные ответы людей. Сегодня здесь была не общая теория, а конкретная диагностика по цифрам и ошибкам прямо в тексте писем.

Мы собрали фактическую статистику: за всё время 6261 письмо дало 98 настоящих ответов, то есть 1.6%; за август–сентябрь из 3316 писем было 41 настоящий ответ, то есть 1.24%, а заинтересованных ответов — примерно 8-9, что даёт около 0.27% positive rate. Важно, что мы не пытались приукрасить картину и отдельно зафиксировали: цель 300 из 3000 выглядит нереалистично для cold email, даже если сам канал в принципе живой.

Главная польза дня — нашли не абстрактную «плохую конверсию», а конкретные баги. Письма иногда уходят не в ту нишу: фитнес-зал получает текст про косметологию, не-стоматология — стоматологический шаблон, и это уже репутационный урон. Отдельно заметили, что госорганизации проходят мимо safety_skip, потому что фильтр смотрит только на clinic_name, а не на домен и содержимое. Ещё есть битая кодировка в теме письма — вместо названия компании появляются кракозябры, и это выглядит как спам. В выдержках также видно, что жалоба на вёрстку письма тоже уже всплыла, то есть проблема не одна.

Рекомендация на завтра: чинить сегментацию и фильтры до любых разговоров о росте конверсии; иначе мы будем масштабировать неработающий и местами вредный процесс.

AppleStyle

AppleStyle — это наша PWA-витрина и будущий магазин приложений OleHov, который можно ставить на телефон как отдельное приложение. По сути, это входная точка для каталога наших PWA и, со временем, чужих продуктов, собранных через AgentChat.

Сегодня мы не писали всё с нуля, а проверили базу. Посмотрели серверную схему и подтвердили, что поддомены уже обслуживаются одним FastAPI на 127.0.0.1:8001 через отдельный vhost и SNI-роутер, а иконки всех приложений уже лежат в нужной структуре. Это значит, что appstore.olehov.com можно встраивать в существующую архитектуру без отдельного сервиса.

Сформировали и сам план: новый поддомен, роут /admin/appstore, шаблон appstore.html, CSS, иконки и каталог приложений в базе olehov.db, а не в хардкоде. Сразу заложили светлую и тёмную тему, нижнее меню в стиле Instagram, pull-to-refresh, safe-area для шапки и PWA-манифест. То есть день был не про запуск, а про то, чтобы зафиксировать правильный путь сборки витрины.

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

Mentor

Mentor — это наш контур, который помогает строить воронки, цели и рабочие сценарии в экосистеме OleHov. Сегодня он был нужен как инструмент для разбора памяти и как часть маркетингового слоя вокруг PULSE.

Мы разобрали архитектуру памяти и подтвердили, что она состоит минимум из двух независимых систем: общей памяти AgentChat, которая реально подмешивается в системный промпт, и файловой памяти Claude Code, которую видит только сам Claude Code. В memory.json нашли 209 записей, причём структура там плоская, без категорий и тегов, а на подхват релевантного контекста влияет наивный матчинг по токенам. Ещё нашли дубли и даже противоречия между записями, так что проблема тут не в объёме памяти, а в её устройстве.

Отдельно через Mentor прошёл и маркетинговый контур PULSE: разобрали ключи за сутки и прогресс цели «Маркетинг», где сейчас учитывается только Mentor. Это важная точка, потому что показывает, как цель и реальные бакеты сейчас связаны между собой.

Рекомендация на завтра: не наращивать память «по инерции», а чистить и структурировать её так, чтобы AgentChat и связанные продукты доставали действительно нужные факты.

AgentChat

AgentChat — это центральный рабочий интерфейс, через который мы управляем продуктами с телефона и сервера. Сегодня в нём было несколько точечных, но полезных вещей: от статусов сессий до голоса и уведомлений.

Сначала сократили список моделей в пикере: оставили Sonnet 5, Opus 5, Codex · Sol и Grok, а лишние варианты убрали. При этом проверили fallback-логику, чтобы при выборе уже убранной модели сессия не ломалась и по умолчанию откатывалась на Sonnet 5.

Дальше добавили в интерфейс сессий новый статус limit для случаев, когда модели упёрлись в лимит. Для Claude теперь можно опираться на реальный SDK-сигнал rejected, а для Codex и Grok — на текстовые признаки вроде usage limit или rate limit. В списке сессий при таком статусе меняется иконка, а под именем показывается текст о лимите; статус снимается после следующего нормального ответа.

Ещё разобрали голосовой пайплайн: короткие записи работают, длинные упираются в лимит Timeweb примерно в 1 МБ, а фолбэк на whisper тоже падал. Поэтому начали нарезку длинных записей на куски. Параллельно проверили и push-механизм: сброс в 14:10 МСК реально сработал, в 14:10:43 ушёл push, в журнале есть push:ok, и это уже не гипотеза, а подтверждённое поведение.

Рекомендация на завтра: добить нарезку длинного аудио и затем снова пройтись по голосовому энд-то-энду, чтобы не оставлять длинные записи на полпути.

Final

Final — это финансовый AI-аналитик, который у нас живёт как отдельный продукт, но сегодня вокруг него был скорее техаудит, чем работа над аналитикой как таковой. По факту посмотрели, что именно ломается и почему старые ошибки продолжают всплывать.

Выяснили, что Final был намеренно удалён вчера, но старые systemd-юниты и записи мониторинга остались, поэтому Sentinel продолжает упоминать несуществующий проект. Из-за того же отсутствующего каталога падает и Pruner, который каждые 5 минут пытается сканировать путь, которого уже нет. Это не новая функциональная работа, а зачистка последствий после удаления.

Отдельно зафиксировали, что blog-publisher правильно остановил небезопасный черновик без внутренней ссылки, то есть QA в цепочке публикации работает. Но входящий файл обошёл проверку генератора, и это уже повод вернуться к защите на этапе создания, а не только на этапе публикации.

Рекомендация на завтра: убрать остатки старой привязки Final из мониторинга и не тащить дальше несуществующий проект в системные отчёты.

Switchboard

Switchboard — это реестр и слой управления Telegram-ботами и связанными системными переключателями. Сегодня он был полезен как точка диагностики: мы проверяли, где именно сломана тёмная тема в кабинете и какие экраны реально затронуты.

Сначала по скриншотам думали, что проблема в нескольких других приложениях, но OCR и сверка показали, что на самом деле речь о Money, Mentor и LYSAK. По ним уже собрали картину: у всех сейчас только светлая тема, причём в Money Apple-блок форсит color-scheme:light, в Mentor есть только светлые токены без dark-режима, а в LYSAK тёплая светлая палитра прописана прямо в HTML.

Это хороший пример того, как Switchboard помогает не путать похожие экраны и быстро находить настоящую точку поломки. Сегодняшняя ценность здесь именно в диагностике: мы не исправляли всё вслепую, а сначала подтвердили, какие кабинеты требуют тёмной темы и где она жёстко зашита.

Dashboard

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

Оказалось, что Dashboard и Architector физически не удалены: ссылки уже есть в «Ещё», но служебный список сейчас показывается только авторизованному администратору. Поэтому снаружи выглядит так, будто всё пропало, хотя сервисы живы. В обсуждении восстановили идею отдельного раздела «Системы» с перечнем ключевых контуров — от Sentinel и Canary до Final, Futura, Scalper, SmartMoney, Crypto Loop и AppleStyle.

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

Next

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

Поэтому вместо pull-to-refresh добавили явную круглую кнопку перезапуска рядом с «Поделиться» и заработком. По нажатию теперь происходит полный location.reload(), а сам жест обновления на игровом экране отключён, чтобы не мешать свайпам по полю. После этого ещё поправили пересечения иконок и статистики на мобильном экране и проверили, что кнопка реально работает.

Sentinel

Sentinel — это наш контрольный контур для расписаний и системных падений. Сегодня он понадобился, чтобы понять, что именно из мониторинга живое, а что уже осталось в виде старого шумового следа.

Мы подтвердили три причины проблем: Final уже удалён, но сервисы мониторинга всё ещё пытаются его проверять; Pruner падает, потому что сканирует отсутствующий каталог; blog-publisher при этом сработал корректно и остановил статью без внутренней ссылки. Плюс обнаружили, что красные Claude/Codex routines в одном из отчётов взяты из старого снимка и уже не отражают текущее состояние.

LYSAK

LYSAK — это отдельный контур для художника, который сейчас живёт как упрощённая реализация рядом с главным AgentChat. Сегодня мы не переписывали его интерфейс, а провели архитектурный аудит и зафиксировали, почему отдельная копия уже мешает развитию.

Главный вывод простой: подключать художника напрямую к root-AgentChat нельзя из-за риска доступа к общей памяти, сессиям и файлам, но и держать ещё одну разрозненную копию тоже неправильно. Поэтому предложили единый AgentChat Core с изолированными клиентскими контурами, где у каждого свой набор функций, память и ключи.

Блог

Блог — это наш рабочий журнал и публикационный контур, через который мы фиксируем день и проверяем, как живёт сайт. Сегодня здесь было две отдельные истории: скиллы и сама публикация.

Сначала в Grok-сессии посмотрели, сколько скиллов реально доступно: 194, из них 182 Grok skills, 8 Claude plugin skills и 4 команды roomwalk. Нашли и нужный скилл для обычного приложения на *.olehov.comolehov-app-pwa, а также сопутствующие скиллы для иконки, логотипа, pull-to-refresh и push-сценариев.

Ещё проверяли blog.olehov.com и сверяли, куда он смотрит в инфраструктуре; в источнике видно, что проверка DNS была в процессе и сравнивался эталон кабинета. Отдельным фактом зафиксирован auto-publish коммит с новым рабочим постом дня, так что журнал не только обсудили, но и уже утащили в публикацию.

Music

Music — это наш музыкальный экран, связанный с пушами и воспроизведением треков по действию пользователя. Сегодня мы не добавляли новый каталог, а разобрали, как именно должен запускаться звук после уведомления.

Выяснили, что пуш сам по себе не может проигрывать аудио в фоне: Service Worker в пуш-обработчике показывает только системное уведомление, а Web Audio и <audio> там не работают, особенно на iOS. Рабочая схема другая: трек должен включаться по тапу на уведомление, когда notificationclick открывает страницу, а браузер уже считает это пользовательским действием.

То есть здесь мы не строили новый аудиоплеер, а подтвердили правильную механику: push несёт ссылку и идентификатор трека, а сам старт происходит после клика. Это полезная развилка для будущих напоминаний PULSE на прогулку.

Herald

Herald — это наш новостной/контентный контур, который связывает публикации и лидогенерацию. Сегодня по нему фактов немного: в одной сессии текста не было, а в другой проверяли эталон воронок ChatPlace и собирали план по ключу блок.

Для блок посадочной ещё нет: https://olehov.com/blok отдаёт 404, и в ChatPlace, и в /go записи тоже нет. Поэтому по Herald фактически подготовили только каркас будущей воронки, но не запускали её.

Итог дня

День вышел очень прикладной: мы одновременно разбирали базовую инфраструктуру, продуктовые интерфейсы и несколько конкретных поломок в связках между ними. Самый объёмный кусок ушёл в PULSE и AgentChat, а рядом шёл полезный техаудит по SalesMachine, AppleStyle, Final и служебным контурам.

Если смотреть сверху, день был не про «одну большую фичу», а про наведение порядка в нескольких слоях сразу: где-то починили интерфейс, где-то вскрыли реальные ошибки, где-то просто честно подтвердили архитектуру перед следующим шагом. Это хороший рабочий день соло-основателя: меньше шума, больше точных решений.

Открыть PULSE