На главную

Рабочий день 23.09: рассылки, почта и фиксы

За день разобрали dry-run рассылок SalesMachine, чинили уведомления и вход в почте/PULSE, стабилизировали AgentChat и закрыли ряд UX-фиксов в других продуктах.

Фокус дня

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

  • SalesMachine — 41%
  • Почта — 32%
  • Школа — 7%
  • AgentChat — 6%
  • PULSE — 3%
  • SmartMoney — 3%
  • Disk — 3%
  • Сентинел — 2%
  • LYSAK — 2%
  • Другое — 1%

SalesMachine

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

Сегодня большую часть дня мы работали именно здесь: сначала разобрали dry-run распределение текущих лидов по пяти гипотезам и увидели ограничение — у 191 лида есть категория и название, но нет проверенного наблюдения по сайту. Поэтому пошли безопасным путём: выбрали стоматологии как первую категорию, наметили 4 варианта по 10 лидов и отдельно прогоняли предпросмотр на живых данных, не включая реальную отправку.

Потом вскрыли проблемы на экране запуска. У четырёх вариантов почти одинаковая тема, то есть A/B-тест темы по сути отсутствовал; отдельно смотрели, как variant_id и персонализация доходят до исполнителя, и проверяли мобильный сценарий. По итогам решили переписать четыре варианта, добавить безопасный предпросмотр и блокировки, а затем провести QA в формате 4×10. В параллельной ветке по отписке и read/unread мы перестроили план вокруг нашего собственного Mail и ящика Pilot, без предположений про сторонний сервис, и зафиксировали схему: отправитель — SalesMachine, получатель — pilot@olehov.com, проверка идёт уже в нашем приложении OleHov Mail.

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

Почта

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

Сегодня здесь было две сильные темы. Во-первых, мы перестроили план вокруг собственного Mail и ящика Pilot: отправка должна идти из SalesMachine, а проверка открытого письма — в OleHov Mail. Во-вторых, мы отработали большой план по улучшению визуального восприятия данных карточек: убрали лишнюю нагрузку со страницы карточки, поправили логику показа и скрытия полей, а также уточнили поведение интерфейса, чтобы он не мешал чтению данных.

Отдельно разобрали вход в приложение через Passkey и удобство управления. По исходным требованиям нужно было уйти от логина и пароля в пользу более удобного входа, добавить возможность выхода и входа обратно, а также продумать кнопку перезагрузки и уведомления через колокольчик. В результате мы проговорили архитектуру перехода на приложение и зафиксировали, что проверка будет идти уже на живом контуре, а не на абстрактном плане.

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

AgentChat

AgentChat — это мобильный рабочий интерфейс Олега для общения с AI-агентами и управления задачами. Через него мы видим, когда агенты реально работают, где сессии зависают, и как исправлять такие сбои без ручного вмешательства в каждый отдельный процесс.

Сегодня сначала диагностировали, почему одна из сессий не отвечает. Причина оказалась не в самом контексте, а в том, что AgentChat крашился и перезапускался по кругу: restart counter за час доходил до семи, и каждый рестарт обрывал Codex-подпроцесс посреди ответа. Мы отдельно посмотрели, где именно ломается пайплайн, и выяснили, что ошибка была transient — патч ожидали применить на устаревшем снимке контекста.

После этого проверяли, не завис ли агент снова. Было подтверждено, что процесс жив, сессия остаётся в состоянии running, а долгий ответ — это именно долгая работа, а не зависание. В конце дня мы уже зафиксировали защитную правку: добавлен watchdog-таймер на 5 минут тишины в stdout от Codex, чтобы зависший процесс принудительно убивался, а статус сессии освобождался с понятным сообщением пользователю.

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

PULSE

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

Сегодня мы переделали форму входа на pulse.olehov.com: наверху теперь остались кнопки Яндекс, Google и Passkey, Telegram-виджет убрали, а кнопку «Войти по логину и паролю» сделали раскрывающей поля только по нажатию. Это убрало лишний визуальный шум и оставило на первом экране только те варианты, которые нужны сразу.

Проверка прошла вживую на мобильном viewport через Playwright, и форма корректно выглядит как в свернутом, так и в раскрытом состоянии. Это как раз тот случай, когда правка небольшая, но сильно влияет на ощущение «всё понятно с первого экрана».

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

SmartMoney

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

Мы взяли AI_RADAR_HOT_DEMAND_SCAN.zip, подняли его с диска и запустили live-скан по инструкции внутри. Сначала шла техническая часть: поиск архива, проверка прогресса, ожидание завершения и повторная проверка, не завис ли процесс. В середине дня стало понятно, что скан ещё идёт, а потом отчёт был пересчитан и сверен по живым данным Wordstat и SERP.

На выходе получили TOP-3 с коммерческим потенциалом, где первым пунктом стал AI-документооборот / чат с документами. Это не очередная гипотеза «на глаз», а результат проверки спроса и выдачи по реальным запросам, с цифрами и динамикой.

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

Disk

Disk — это наш файловый менеджер и хранилище, где важны читаемость, иконки, удаление и удобство на телефоне. Здесь мы делаем интерфейс не «богатым», а быстро считываемым с мобильного экрана.

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

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

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

Сентинел

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

Сегодня мы нашли причину, почему статус «работает в фоне» не появлялся: он ставится не по провайдеру, а по факту реально запущенного фонового процесса, который отслеживает watch-job.sh. Для другого сценария выяснилось, что агент лишь обещал работу в фоне, но не запускал маркер, поэтому серверный поллер ничего не видел.

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

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

Школа

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

Сегодня мы разобрали скриншоты, предложили план по улучшению восприятия карточек и отдельно учли уже сделанное улучшение: кнопка «Назад» должна быть над поиском, чтобы не уходила под него. Дальше был нормальный рабочий цикл: план подтвердили, передали реализацию Kimi, потом проверили фактические изменения, тесты, мобильный QA и развёртывание.

В финале дня подтвердили, что весь утверждённый план реализован и развёрнут. Отдельно уточнили, что основную реализацию сделал Kimi, а мы при проверке вернули подпись и кнопку копирования заметки — то есть довели интерфейс до более законченного состояния.

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

AgentChat

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

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

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

Итог дня

День получился очень прикладной: большую часть времени мы чистили и стабилизировали рабочие контуры, а не добавляли новые «красивые» идеи. Самые заметные сдвиги — в SalesMachine, почте, AgentChat и PULSE: там мы убрали риски, выровняли интерфейсы и зафиксировали понятные планы на следующий шаг.

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

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