RUEN

Неделя 137. Пять лендингов за пять дней и скрытая цена скорости

Неделя 137. Пять лендингов за пять дней и скрытая цена скорости

Разбор этой статьи

AI-подкаст BotsellerПять дизайнов за пять дней обнулили сайт
0:00 / 0:00

Эту тему разобрали в подкасте. Слушай параллельно с чтением.

За одну неделю мы выкатили новый лендинг, пройдя пять версий дизайн-концепции за пять дней. Запустили биллинг для WhatsApp Business API. Построили White Label для партнёров. Переименовали и прокачали новый продукт. 315 коммитов в девяти репозиториях - самая продуктивная неделя в истории компании на тот момент.

И в этой же неделе мы заложили ошибку, которая стоила нам семи дней разгребания. Если вы читали ретроспективу недели 138, вы уже знаете, чем закончилась история: Lighthouse Mobile 0. Сегодня расскажу, откуда взялся этот ноль.

Я Дмитрий Дьяконов, основатель Botseller AI. Это четвёртый выпуск серии «Ретроспектива» - бортжурнал в прошлое, от настоящего к первому коммиту.

Самая продуктивная неделя в истории компании: 315 коммитов в 9 репозиториях и пять больших сдвигов

Пять версий лендинга за пять дней

Старый лендинг Botseller выглядел как «ещё один SaaS»: hero-блок, три колонки преимуществ, тарифы, футер. Работал, конвертил посредственно, не запоминался. В начале недели мы решили: делаем визуальную концепцию заново.

Хронология недели:

Вторник, 17 марта. Первая визуальная концепция. Скролл-хореография: контент раскрывается по мере прокрутки, как в презентации.

Среда, 18 марта. Четвёртая итерация - уровень «Awwwards-quality»: плавность анимаций, кинематографичные переходы, внимание к микродеталям.

Четверг, 19 марта. Пятая версия плюс параллельная ветка «Cinematic»: пружинные анимации, keynote-ритм повествования, социальные доказательства, видео-отзывы.

Пятница, 20 марта. GSAP ScrollSmoother, скролл-снаппинг, якорная навигация, CTA основателя. И главное - выкат concept-v2 на главную страницу продакшена.

Суббота, 21 марта. Слайдовая презентация с iPad-подобными переходами для десктопа.

Пять дней от идеи до продакшена. Звучит как история успеха - и в части скорости это она и есть. Мы не собирали фокус-группы, не рисовали макеты по три недели в Figma. Каждая версия жила в коде, смотрели на реальный лендинг, резали и переделывали.

Скорость итераций - реальное преимущество маленькой команды. Проблема была не в скорости.

Пять версий визуальной концепции за пять дней: от скролл-хореографии до выката в продакшен, и растущий якорь веса

Бомба замедленного действия: что мы не проверили

GSAP ScrollSmoother, пружинные анимации, полноэкранные слайды с графикой, видео-отзывы, кинематографичные переходы. Каждый элемент по отдельности - украшение. Вместе - сотни DOM-узлов, десятки скролл-триггеров и вся графика, загружающаяся разом.

На мощном MacBook с быстрым интернетом лендинг летал. Красота, плавность, «вау». Мы смотрели на него именно так - глазами владельца, а не глазами Google-краулера и не глазами клиента с бюджетным Android в метро.

Что мы НЕ сделали перед выкатом на главную:

  • Не прогнали Lighthouse на мобильном профиле
  • Не проверили LCP на throttled-соединении
  • Не посмотрели, сколько весит страница целиком
  • Не задали себе вопрос «а что увидит человек на слабом устройстве»

Ответ на последний вопрос мы получили через неделю, когда наконец запустили аудит: Lighthouse Mobile - 0. Ноль. Слайды монтировались все сразу, LCP уходил за 10 секунд, мобильная версия фактически не работала. Неделя 138 целиком ушла на разгребание: LazyMount, ленивый рендеринг, отдельная лёгкая мобильная страница без GSAP.

Справедливости ради - частично мы это предвидели: уже в субботу появился коммит «мобильная версия: отдельная лёгкая страница без GSAP». Но выкат на главную случился раньше аудита. Порядок был неправильный.

Бомба замедленного действия: сотни DOM-узлов и скролл-триггеров рушат мобильную версию, спидометр на нуле

Урок: скорость без ворот - это кредит под скрытый процент

Главный фаундерский вывод недели 137 звучит так: каждый выкат без проверки метрик - это кредит. Тело кредита - сэкономленные десять минут. Процент - неделя работы потом.

Мы не сделали ничего необычного - так выкатывается половина редизайнов в индустрии. Дизайнер показывает на большом экране, основателю нравится, разработчик мержит. Все смотрят на продукт через своё железо и свой вкус. Google и пользователи смотрят через другое.

Главный фаундерский вывод недели 137: каждый выкат без проверки метрик - это кредит с экспоненциальным процентом

Практический фреймворк, который мы внедрили после этой истории - performance-ворота перед мержем. Три проверки, десять минут:

  1. Lighthouse Mobile ≥ 85. Прогон в Chrome DevTools на мобильном профиле с throttling. Ниже порога - не мержим, точка. Красота не аргумент: страница, которую не дождались, не конвертит.

  2. LCP ≤ 2.5 секунды. Largest Contentful Paint на медленном 4G. Если главный контент приезжает дольше - убираем из критического пути всё, что можно отложить.

  3. Вес страницы ≤ 2 МБ на первом экране. Всё остальное - лениво, по мере скролла.

Performance-ворота перед мержем: три gate от коммита до продакшена, провал возвращает код разработчику

Правило работает только если оно ворота, а не рекомендация. «Выкатим сейчас, оптимизируем потом» - это то самое «потом», которое стоило нам недели. Дешевле всего чинить то, что ещё не выкачено.

И второе правило, которое мы вынесли: у красоты должна быть бюджетная версия. Тяжёлая скролл-хореография - для десктопа с хорошим каналом. Для мобильных - отдельная лёгкая страница: тот же контент, та же конверсионная логика, ноль тяжёлых анимаций. Это не компромисс, это уважение к половине аудитории.

У красоты отдельная бюджетная версия: тяжёлая хореография для десктопа, лёгкая страница для мобильных

Параллельный трек: неделя, когда WhatsApp начал приносить деньги

Пока лендинг переживал пять итераций, продуктовая команда строила инфраструктуру денег. WhatsApp Business API (WABA) - официальный канал массовых рассылок - получил полный цикл монетизации.

Embedded Signup. Раньше подключение WhatsApp Business API требовало ручной настройки: заявки, токены, конфигурации. Теперь - встроенный флоу: клиент проходит авторизацию Meta прямо из интерфейса Botseller, и номер подключается за минуты. Онбординг из «напишите в поддержку» превратился в «нажмите кнопку».

Embedded Signup для WhatsApp: путь подключения сократился с дней ручной настройки до минут через Meta Auth

Биллинг разговоров. WhatsApp тарифицирует бизнес по «разговорам» - 24-часовым окнам общения. Мы построили полный цикл: провайдер шлёт billing-событие, оно сохраняется, стоимость списывается с баланса клиента.

Три инженерных решения в этом биллинге, которые пригодятся любому, кто строит списания на вебхуках:

  1. Save-first паттерн. Сначала сохраняем событие в базу, потом списываем деньги. Если списание упало - событие есть, можно доначислить. Если наоборот - деньги ушли в никуда.

  2. Идемпотентность по внешнему ID. Провайдер может прислать один и тот же billing-event дважды. Дедупликация по уникальному ID события, а не по timestamp: у ретраев время меняется, ID - нет. Отдельный fallback-ключ для событий без ID.

  3. Себестоимость рядом с ценой. Для каждого события храним не только сколько списали с клиента, но и сколько заплатили провайдеру. Маржа видна на уровне каждого разговора, а не «в конце месяца по счетам».

Архитектура биллинга на вебхуках: save-first паттерн, идемпотентность по внешнему ID и себестоимость рядом с ценой

White Label: платформа под чужим брендом

Третий трек недели - партнёрская программа выросла до White Label. Партнёр теперь может продавать Botseller под собственным брендом: свой домен, свой логотип, свои цвета на страницах входа и регистрации, свои клиенты в изолированном кабинете.

Под капотом это потребовало новой роли в системе доступа, модели лицензий с self-service, динамического брендинга (сайдбар, auth-страницы и email-шаблоны подстраиваются под домен партнёра) и аккуратной работы с cookie: авторизация должна жить на домене партнёра, а не на нашем.

Отдельный урок из этого трека - безопасность брендинг-эндпоинтов. Публичный endpoint «отдай брендинг по домену» - это дверь, в которую постучатся не только партнёры: пришлось добавить regex-валидацию домена и защиту от path traversal в первые же дни. Любой публичный endpoint, принимающий строку от клиента - это поверхность атаки, даже если он «просто отдаёт логотип».

White Label платформа: изолированные кабинеты, свой домен, динамический брендинг и защита публичных эндпоинтов

Зачем это бизнесу: White Label превращает агентства и интеграторов в канал продаж. Они приводят клиентов под своим брендом, мы получаем объём без затрат на привлечение. Подробнее о моделях партнёрства мы писали в статьях про White Label SaaS и бизнес на нейросетях, а условия программы собраны на странице для партнёров.

Рой агентов и тиры вместо моделей

Два решения недели, которые касаются ИИ под капотом.

Двухуровневый анализ в «Рое агентов». Новый продукт для работы с Telegram-сообществами получил экономичную архитектуру ИИ: лёгкая быстрая модель делает triage (стоит ли вообще реагировать), тяжёлая включается только там, где нужен качественный ответ. Расход на инференс падает в разы, потому что 90% событий отсеиваются дешёвым первым уровнем. Этот паттерн - triage перед дорогой операцией - применим к любому ИИ-продукту с потоком событий.

Triage-паттерн в Рое агентов: лёгкая модель отсеивает 90 процентов шума, тяжёлая отвечает только на важное

Тиры вместо имён моделей. Мы убрали из интерфейса названия конкретных ИИ-моделей и заменили их на тиры: Botseller Low, Medium, High, Ultra. Причина простая: имена моделей меняются каждый квартал, а обещание «быстрее и дешевле» против «умнее и дороже» - стабильно. Клиент выбирает уровень качества, а какая модель под капотом - наша забота: мы можем менять провайдера без миграций и переобучения пользователей. Если строите ИИ-продукт - не привязывайте UI к именам моделей, привяжите к уровням сервиса.

Абстракция ИИ: имена моделей перечёркнуты, клиент выбирает уровень сервиса от Low до Ultra

Контент: пять статей и документация

На фоне трёх продуктовых треков сайт получил пять новых SEO-статей: про внедрение ИИ-ассистента в продажи, крауд-маркетинг, партнёрскую экосистему, ИИ-рекрутера. Плюс полная документация по WhatsApp Business API: подключение, шаблоны, рассылки - и шесть страниц документации по «Рою агентов».

Заметьте: это ещё стихийный контент, до системы. Статьи писались по наитию, без семантического ядра и кластеров - до content pruning недели 138 и контент-машины недели 140 оставалось две и три недели соответственно. Ретроспектива в обратном порядке хорошо показывает эволюцию: сначала пишем «что-то полезное», потом учимся удалять, потом строим систему.

Контент по наитию до внедрения системы: пять статей и документация без семантического ядра

Был - стал: до и после недели 137

МетрикаДо (15 марта)После (21 марта)
ЛендингКлассический SaaS-шаблонСкролл-хореография, GSAP, слайды
Performance-гейт перед мержемНетНет (появился после недели 138)
Подключение WhatsApp Business APIВручную через поддержкуEmbedded Signup за минуты
Биллинг WABA-разговоровНетПолный цикл со списанием с баланса
White LabelНетРоль, брендинг, лицензии, кабинет
Имена ИИ-моделей в UIВидныТиры Low/Medium/High/Ultra
Статей в блоге за неделю-+5 и документация

Цифры недели 137

МетрикаЗначение
Коммитов всего315
Репозиториев с активностью9
Версий дизайн-концепции лендинга5 за 5 дней
Коммитов во frontend платформы97
Новых SEO-статей5
Lighthouse Mobile после выката0 (обнаружено на неделе 138)
Дней на устранение последствий7

Что я сделал бы иначе

Ретроспектива честна, только если в ней есть эта секция.

Поставил бы performance-ворота до редизайна, а не после. Десять минут на прогон Lighthouse перед мержем concept-v2 сэкономили бы неделю. Теперь это правило: метрика - часть Definition of Done, не «оптимизируем потом».

Выкатил бы мобильную версию первой, а не последней. Мы строили десктопную красоту и в конце добавили «лёгкую мобильную страницу». Правильный порядок обратный: сначала работающая мобильная версия (большинство трафика), потом десктопные украшения.

Не менял бы лендинг и блог одновременно. Параллельный редизайн лендинга и главной блога размазал фокус и удвоил поверхность для багов. Одна большая визуальная стройка за раз.

А вот скорость итераций - пять версий за пять дней - оставил бы как есть. Проблема была не в скорости, а в отсутствии ворот. Быстрая машина без тормозов - опасна. Но решение - поставить тормоза, а не пересесть на телегу.

Чек-лист недели 137 для будущих спринтов: performance-ворота, mobile-first, разделение рисков, гигиена вебхуков, изоляция ИИ от UI

В следующем выпуске ретроспективы - неделя 136: рождение WABA-интеграции, с которой начался весь WhatsApp-трек.


Это серия «Ретроспектива Botseller» - путешествие от первого коммита до рабочего продукта. Читайте в любом порядке. Подписывайтесь на Telegram-канал, чтобы не пропустить новые выпуски.

FAQ

Как проверить производительность сайта перед выкатом?

Минимальный набор - три проверки за десять минут: Lighthouse в Chrome DevTools на мобильном профиле (порог 85+), LCP на throttled 4G (порог 2.5 секунды), суммарный вес первого экрана (до 2 МБ). Важно сделать их воротами: ниже порога - релиз не выходит, без исключений «на этот раз».

Влияют ли тяжёлые анимации на SEO?

Напрямую: Core Web Vitals - фактор ранжирования Google, а скролл-библиотеки, полноэкранные слайды и синхронная загрузка графики убивают LCP и TBT на мобильных. Google индексирует mobile-first, поэтому красивый десктопный лендинг с мёртвой мобильной версией теряет позиции целиком.

Что такое Embedded Signup в WhatsApp Business API?

Это встроенный флоу подключения: клиент проходит авторизацию Meta прямо в интерфейсе платформы, без ручных заявок и передачи токенов. Подключение номера занимает минуты вместо дней. Для SaaS-платформ это стандарт онбординга: чем меньше шагов до работающего канала, тем выше активация.

Как правильно строить биллинг на вебхуках провайдера?

Три правила: save-first (сначала сохранить событие, потом списывать деньги), идемпотентность по внешнему ID события (провайдеры повторяют вебхуки при ретраях), и хранение себестоимости рядом с ценой (маржа видна по каждой операции, а не в конце месяца).

Зачем скрывать названия ИИ-моделей за тирами?

Имена моделей меняются каждый квартал, и привязка UI к ним создаёт постоянные миграции и путаницу у пользователей. Тиры (Low/Medium/High/Ultra) описывают стабильное обещание - баланс скорости, качества и цены - и позволяют платформе менять модели под капотом без изменений для клиента.

Что даёт White Label модель SaaS-платформе?

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

Стоит ли делать редизайн сайта быстро или тщательно?

Скорость итераций и качество результата - не противоположности. Быстрые итерации в коде (версия в день) эффективнее недель в макетах: вы смотрите на реальный продукт. Но выкат должен проходить через ворота: performance-метрики, мобильная версия, базовое SEO. Быстро итерируйся, медленно выкатывай.