На главную / CDP

Проектирование CDP для 10 млн клиентов: от хаоса в данных

к запуску кампаний за 15 минут вместо 3 дней.

CDP Platform Dashboard, главный экран платформы
Сектор
B2B, Retail-холдинг
Год
2024-2026
Локализация
20+ стран, 33 языка, 20+ валют
Задача
Централизация CDP международной retail-сети, ядро платформы: Profile 360°, Segmentation Builder, Journey Builder, AI Assistant. Дизайн-система на 12 модулей с поддержкой мультивалютности и таймзон.
Результат
Запуск кампаний: 3 дня → 15 мин, Конверсия (CR) +22%, Отток (Churn) -12%, Запросы в IT -80%, Активность пользователей (Seat Utilization) 38% → 71%
Роль
Senior Product Designer, стрим «Marketing Automation & Data Intelligence»
Команда
Product Owner, два PM, два backend-стрима, frontend, data engineering, Senior Product Designer (я)
Стек
Figma, Code Connect, MCP-сервер, Storybook, Figma-плагины, база данных

Customer Data Platform (CDP) - это система, которая объединяет данные с сайта, из приложений, CRM и офлайн-касс в единый профиль клиента. Она дает маркетологу полную видимость базы и позволяет отправлять персональные предложения и программы лояльности точно в срок, не дожидаясь выгрузок от IT по несколько дней. Система берет на себя рутину: анализирует поведение и автоматически масштабирует успешные сценарии на всю базу, освобождая команду для поиска идей. На выходе - запуск кампаний за часы вместо недель, рост конверсии и резкое снижение оттока.

Граница ответственности. Ядро обработки данных (потоки данных, дедупликация и склейка профилей, ML-модели для AI-помощника, база данных) - это отдельное инженерное направление. Моя область задач как Senior Product Designer: проектирование интерфейса управления (Профиль 360°, Конструктор сегментов, Управление сценариями, AI-помощник), единая дизайн-система на 12 модулей и инженерная связка Figma Code Connect + MCP + Storybook. Дизайн-система как инструмент, на котором собран интерфейс поверх данных.

10M+
Профилей в единой базе
8 источников данных
12
Модулей на одной дизайн-системе
Единый набор токенов для всех
142
Компонента в библиотеке
С Figma Code Connect
98.7%
Точность профиля клиента
Склейка всех устройств пользователя

Предыстория: ритейл-холдинг на 20+ стран и 33 языка решил централизовать данные клиентов

До проекта в каждой стране была своя CDP, от разных онлайн-вендоров. Зоопарк систем со своими интерфейсами, схемами данных и правилами лояльности. Чтобы запустить промо одновременно в Польше и Испании, маркетологам приходилось координироваться через email и пересылать друг другу Excel-таблицы и дампы базы данных, чтобы каждая страна импортировала их к себе вручную.
В 2024 совет директоров принял решение централизовать управление: одна собственная CDP для всех ритейл-сетей холдинга, один профиль клиента, один язык данных. Платформа должна была работать в любом часовом поясе мира, синхронизировать действия с центральным офисом с учётом локальной зоны каждой страны и поддерживать 20+ валют и 33 языка интерфейса.
20+
Стран в холдинге
33
Языка интерфейса
20+
Валют с местным форматом
38
Часовых поясов, синхронизация с головным офисом

Хронология проекта и этапы DesignOps

Два года от первого исследования до запуска на 20+ стран. В процессе мы внедрили передовые методы синхронизации дизайна и кода через Figma Code Connect и MCP-сервер.
  1. Апр 2024
    Исследование и аудит источников
    Интервью с маркетологами в 5 странах, изучение 8 разрозненных систем, аудит текущих потоков данных
  2. Май 2024
    Figma Code Connect
    Подключились к первой бета-версии. С самого начала выстроили связь компонентов Figma и React 1:1, что исключило ошибки при передаче дизайна
  3. Май-Июн 2024
    Архитектура и первая версия Профиля 360°
    Проработка ролей, навигации, иерархии токенов и мастер-компонент универсальной ячейки таблицы
  4. Лето 2024 - Весна 2025
    Итерации первой версии
    Цикл тестирования на пользователях, чистка багов, переработка навигации и расширение библиотеки компонентов
  5. Начало лета 2025
    Конструктор сегментов и сценариев
    Разработка визуального редактора правил и канваса для построения цепочек касаний с логикой «Да/Нет»
  6. Июн 2025
    Figma MCP server
    Подключили в первый месяц после релиза. Ускорили генерацию pull-request'ов из дизайна, переход в производство занимает минуты
  7. Лето 2025
    Пилот в 3 странах
    Польша, Испания, Турция. A/B тесты, замеры TTM, CR, Churn. Доработки по обратной связи маркетологов после реальных кампаний
  8. Осень 2025
    AI Assistant и XAI-слой
    Чат на семантической схеме данных, объяснимость через SQL, источники полей, время среза. Доверие маркетологов 38% → 79%
  9. Зима 2025-2026
    Full rollout на 20+ стран
    Локализация 33 языков, поддержка 20+ валют, синхронизация по часовым поясам, перенос данных из старых CDP
  10. Начало 2026
    Завершение итерационных доработок
    Финальные правки по обратной связи команд, точечные фичи под локальные рынки, стабилизация. Платформа в проде во всём холдинге

Данные клиента были разбросаны по восьми системам, а маркетолог ждал выгрузку из IT по три дня

До платформы клиентский опыт крупного международного ритейла был разорван по системам. Сайт знал одно, мобильное приложение другое, CRM третье, email-платформа четвёртое. Офлайн-касса вообще не попадала в цифровой контур. Один и тот же человек с ноутбука, телефона и планшета выглядел как три разных пользователя. Маркетинг слал скидку на уже купленный товар, команда удержания терялась в таблицах, а команда аналитики спорила с продуктовой командой, чьи цифры считать правдой.
Бизнес считал эту фрагментацию дорогой. Каждая неперсонализированная рассылка это доставляемость, отток и падение репутации домена. Каждый разрыв между устройствами потерянный контакт. Задача, которую я получил в апреле 2024-го, формулировалась так: собрать все данные о клиенте в один профиль, дать маркетологу инструмент самообслуживания для активации и сделать это на масштабе 10+ миллионов профилей.
Я пришёл на стрим «Marketing Automation & Data Intelligence» как Senior Product Designer. Отвечал за продуктовый дизайн всей платформы: от архитектуры информации до мастер-компонентов в Figma. В команде был один на все 12 модулей, поэтому каждое системное решение приходилось принимать осознанно, переделать потом дешевле невозможно.
CDP Core Segmentation Builder Journey Builder AI Assistant Identity Resolution Dark Mode Design System Code Connect + MCP GDPR

Бизнес-цели

Единый профиль клиента

Собрать 10+ млн записей из 8 источников в один 360°-профиль с Identity Resolution и связкой устройств.

Самообслуживание для маркетолога

Убрать зависимость от IT: сегменты, кампании и отчёты должны собираться руками маркетолога, без SQL.

Масштабируемый UI

Архитектура, которая вытянет 10+ модулей без ощущения «лоскутного одеяла» и даст место новым модулям через год.

AI как навигационный слой

Не чат «для галочки», а работающий инструмент: семантическая навигация, дашборды на лету и прикладные инсайты с объяснением.

Четыре рабочие роли и ролевая модель доступа, начали с них, потом с экранов

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

Маркетолог / CRM-менеджер

Основной пользователь. Собирает сегменты, настраивает триггерные flow коммуникаций, запускает кампании через Email, SMS, Push, мессенджеры. Живёт в Segmentation Builder и Journey Builder. Главный KPI, скорость от гипотезы до рассылки.

Продакт-менеджер

Смотрит воронки, запускает A/B-тесты, анализирует поведение. Нужна аналитика, которая не требует SQL, и возможность нарезать данные по сегментам без помощи аналитика.

Data Analyst

Копает глубже: LTV, эффективность каналов, атрибуция. Живёт в Customer Profile и аналитике. Готов писать SQL, но хочет, чтобы рутина уходила в интерфейс.

Менеджер по лояльности

Строит бонусные механики, реактивирует «спящих». Нужны предиктивные модели и понятный триггерный конструктор.

Super-admin  полный доступ, настройки интеграций, роли, GDPR-панель Editor (Manager)  создание сегментов и кампаний, без системных интеграций Viewer  только отчёты и аналитика, без редактирования данных

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

В B2B enterprise-проекте первичное исследование устроено иначе, чем в потребительском продукте. Глубинные интервью я тоже провёл, пять сессий с маркетологами и аналитиками заказчика. Но основной источник инсайтов был другим.
Я разобрал логи тикетов поддержки: 80% запросов к IT касались одного, «выгрузи список клиентов, которые сделали X и не сделали Y». Это и был главный сигнал: у маркетолога нет инструмента самообслуживания.
Параллельно нарисовал карту разрозненных источников данных, схему с восемью системами и пунктирными линиями там, где стыки отсутствовали. Эта карта потом висела на стене комнаты команды весь проект. Когда возникал спор «это нужно делать в нашем модуле или в CRM», смотрели на карту.
Третий источник, анализ поведения на разных устройствах. Взяли выборку 100 тысяч профилей и посмотрели, сколько из них имеют дубликаты по email, телефону и device-id. Цифра оказалась такой, что Identity Resolution пришлось проектировать отдельным модулем с собственной логикой confidence score.

«Чтобы запустить рассылку по сегменту „купили зимой, не купили весной, живут в городах-миллионниках“, я пишу заявку в IT, жду два-три дня и получаю Excel, который уже устарел. К моменту отправки треть аудитории уже купила сама.»

CRM-менеджер заказчика, 6 лет в маркетинге удержания

Ключевые инсайты → дизайн-решения

80% тикетов в IT, просьбы на выгрузку

Маркетологу нужен не SQL, а визуальный конструктор сегментов с мгновенным preview размера сегмента.

Segmentation Builder с drag-and-drop и живым счётчиком «в сегменте сейчас 147 382 клиента»

Один человек = 2.4 профиля в среднем

Без Identity Resolution коммуникация на разных устройствах невозможна в принципе.

Отдельный модуль Customer Profile 360° с явной связкой устройств и оценкой достоверности 98.7%

Маркетологи и аналитики боятся AI-цифр

«Откуда взялось, почему именно это?», главный вопрос к автоматическим отчётам.

XAI-слой в AI Assistant: каждый виджет показывает, какие поля, фильтры и SQL-запрос легли в основу

Данные устаревают быстрее, чем обрабатываются

Сегмент по 10 млн пересчитывать в реальном времени, дорого и ненужно.

Индикатор «Обновлено» рядом с каждым большим отчётом + разделение на «горячие» (потоковые) и «холодные» (15-мин окна) данные

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

Главная опасность платформы с 10+ модулями, собрать «лоскутное одеяло». Каждый модуль в отдельности может быть хорош, а вместе они становятся набором разнокалиберных инструментов с разным UX и разной логикой. Я с этим уже сталкивался на прошлых проектах. Поэтому начал не с экранов, а с архитектуры.

Архитектура платформы

Сбор данных

Сайт, мобильное приложение, CRM, offline-касса, email, events, data streams, 8 источников

Единый профильный узел

Identity Resolution, унификация, сегментация, аналитика и прогнозные модели

Активация

Кампании, лояльность, Google Ads, Meta, Email, SMS, Push, Web Personalization

Управление

Главная, Кампании, Задачи, Проекты, Аналитика, Настройки

AI Assistant

Отчёты по роли, семантическая навигация, прикладные инсайты, XAI

Три уровня навигации, решение, которое я принял в первом месяце

Поверх уровней

Командный центр

Глобальный поиск через Cmd+K и быстрые действия для быстрого создания объектов из любого места платформы.

Уровень 1

Глобальный sidebar

Быстрый доступ к крупным доменам платформы. Внутри каждого домена, поддомены второго уровня. Переключение между разделами в один клик.

Уровень 2

Контекстное меню модуля

Каждый модуль имеет свой sub-navigation, закреплённый слева. Breadcrumb наверху.

Уровень 3

Объектный уровень

Tabs внутри карточки: обзор, события, атрибуты, связи, история.

Этапы работы (Data First)

Я выстроил очередь от фундамента к активации. Это логика, а не просто порядок: без единого профиля не имеют смысла все остальные модули. AI Assistant проектировался параллельно как сквозной слой, а не как отдельный модуль.
1

Аудит источников и интеграций

Разбор 8 источников данных, карта стыков, схема профильных атрибутов. Результат, словарь данных с едиными названиями полей (Revenue, не Income; CustomerID, не User_id).

2

Архитектура информации

Три уровня навигации. Стандартизация паттернов: 4 типа страниц, реестр, конструктор, карточка, дашборд. Дальше весь продукт собирался из этих четырёх.

3

MVP модуля Profile 360°

Собрал карточку клиента с Timeline событий, связкой ID между устройствами и расчётными показателями (LTV, вероятность оттока). Это стал эталон: все остальные карточки платформы сверялись с ним.

4

Segmentation Builder

Конструктор правил с drag-and-drop, глубиной вложенности до 4 уровней И/ИЛИ/НЕ. Живой счётчик размера сегмента, один из самых сложных UX-вопросов проекта.

5

Journey Builder

Визуальный редактор цепочек с триггерами, ожиданиями и условиями. Каналы: Email, SMS, Push, WhatsApp. Проектировал на той же grid-логике, что и сегменты, чтобы маркетолог не переучивался.

CJM: путь маркетолога от гипотезы до отчёта

Карта пути пользователя: как маркетолог проходит от идеи до результата кампании
Этап Цель пользователя Ключевые действия / экраны Эмоции / боли Реакция системы Метрики
1. Гипотеза Сформулировать идею кампании на основе бизнес-задачи или сигнала от AI.
  • Hero Dashboard с live-метриками
  • Виджет «Сегменты с падением активности»
  • AI Assistant: семантический поиск и actionable insights
«Вижу падение, не понимаю причину». Страх пропустить возможность. AI показывает аномалию и предлагает действие. XAI раскрывает, откуда взялась цифра. Время от сигнала до гипотезы, доля гипотез из AI-подсказок.
2. Сегмент Собрать аудиторию кампании без обращения в IT.
  • Segmentation Builder, drag-and-drop условий
  • Живой счётчик размера сегмента (задержка 800 мс)
  • Preview распределения: возраст, гео, каналы
Раньше ждал 3 дня и получал устаревший Excel. Сегмент собирается за 2 минуты. Переключение Standard / Expert, SQL-редактор для аналитика. Время на сегмент: 3 дня / 2 мин, доля self-service сегментов.
3. Flow коммуникаций Настроить триггеры, каналы и ожидания в Journey Builder.
  • Journey Builder на единой grid-логике
  • Узлы: триггер, ожидание, условие, канал
  • Email, SMS, Push, WhatsApp в одном редакторе
Переключение между модулями, разные UI у каналов. Та же сетка, что и у сегментов, маркетолог не переучивается. Встроенная валидация каждого узла. Время на flow коммуникаций, доля flow коммуникаций с ветвлением, ошибки валидации.
4. Запуск Запустить кампанию и увидеть первые результаты в реальном времени.
  • Preview кампании, тестовый прогон на 1% аудитории
  • Запуск и статистика вхождения в реальном времени
  • Индикатор «Обновлено 12 мин назад»
Страх ошибиться на 10 млн. Неясно, что происходит после кнопки «Запустить». Тестовый прогон и preview снимают тревогу. Статистика вхождения обновляется в реальном времени возле каждого узла. Доля кампаний с тестовым прогоном, доставляемость, время от запуска до первого сигнала.
5. Отчёт Понять, сработала ли кампания, и принять решение о следующей итерации.
  • AI-сгенерированный отчёт с ключевыми срезами
  • XAI-панель: какие поля и SQL использованы
  • Новая гипотеза и перезапуск в один клик
Недоверие к AI-цифрам, «откуда это взялось». Explainable AI показывает логику расчёта. Рядом с виджетом, кнопка создания новой кампании из текущего сегмента. Time-to-Market цикла: 3 дня → 15 мин, CR +22%, кампаний удержания 3 в неделю.

Компромиссы, которые зафиксировал прямо в интерфейсе

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

Реальное время vs Стоимость

Обсчитывать 10 млн профилей в потоке на каждое изменение, дорого и бессмысленно. Разделил данные на «горячие» (профиль обновляется мгновенно) и «холодные» (тяжёлая аналитика пересчитывается раз в 15-30 минут).

В UI, явный индикатор «Обновлено: 12 мин назад»

Гибкость vs Производительность БД

Ограничил глубину вложенности фильтров в сегменте до 4 уровней. На пятом JOIN-запросы начинали падать по таймауту.

Интерфейс блокирует пятый уровень с сообщением «Разбейте условие на два сегмента»

Точность AI vs Глубина контекста

LLM не видит сырые данные, только метаданные (описание таблиц, связей, токенов). Генерирует SQL и Python, SQL выполняется в базе данных, Python считает статистику и графики, результат возвращается в виджет.

Исключает галлюцинации; пришлось вложиться в качество метаданных

Что показывать мгновенно, а что с задержкой: hot vs cold data

Не все данные одинаково важны и одинаково дороги. Я разделил поток на «горячий» (то что нужно прямо сейчас) и «холодный» (агрегаты, аналитика). Для каждого, своё SLA и свой UI-индикатор актуальности.
< 1 сек
Горячие данные
  • Профиль клиента, текущие атрибуты
  • События в реальном времени (вход на сайт, добавление в корзину)
  • Статусы кампаний, состояние Journey узлов
  • Live-счётчик аудитории сегмента при настройке
Индикатор: статус «Live»
15-30 мин
Холодные данные
  • Аналитические дашборды, тренды
  • Атрибуция конверсии, multi-touch
  • Отчёты по программам лояльности
  • Метрики Journey за период (CR, drop-off)
Индикатор: «Обновлено N мин назад»

Чего система не делает: явные границы

Я зафиксировал в интерфейсе и в onboarding-документации, что платформа не делает. Это снимает завышенные ожидания и лишние тикеты в support.

Не заменяет Data Analyst для глубокой атрибуции

AI Assistant отвечает на типовые «срез по сегменту» и «топ N кампаний». Multi-touch attribution, regression, сложные A/B-разборы, всё это идёт к команде аналитики через Tableau и dbt.

Не работает «из коробки» без настройки источников

Платформа не магическая, она требует подключения источников через ETL-пайплайны (минимум: транзакции, web/app events, CRM). Маркетолог не может «просто запустить CDP», integration engineer нужен на старте.

AI Assistant не генерирует креативы

AI отвечает только на аналитические вопросы и помогает собрать сегмент по описанию. Тексты email и push, баннеры, изображения, всё это другие инструменты (внешние LLM-сервисы, дизайнер маркетинга).

Не предсказывает LTV и не строит ML-скоринги

Прогнозные модели (LTV, churn-probability, propensity-scores), отдельный data-science-стрим. CDP отображает результат и позволяет на нём собирать сегменты, но не обучает модели сам.

Локализация на 33 языка: процесс

Команда преимущественно русскоязычная. Чтобы покрыть 33 языка, выстроили четырёхступенчатый процесс с проверкой на каждом шаге.
1

Макеты на русском и английском

Дизайн собирался сразу в двух языках. Английский, как контрольный для проверки длины строк и плотности интерфейса.

2

Тех. писатель проверяет RU + EN

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

3

AI-перевод на остальные 31 язык

Внешний языковой AI-сервис автоматически переводит strings из i18n-файлов на польский, испанский, турецкий, чешский, финский, немецкий и т.д. Глоссарий CDP подгружается в контекст модели.

4

Проверка носителями языка

Каждый язык проверяет нативный спикер (как правило сотрудник локальной страны-партнёра). Правки возвращаются в систему переводов и закрепляются в глоссарии для следующих итераций.

Альтернативы, которые отбросил

A/B-тестов внутри платформы не было, enterprise CDP не позволяет «покрутить варианты на боевых пользователях». Но я зафиксировал три гипотезы, которые проверил на ранних прототипах и осознанно отказался от них.
Гипотеза 1, отброшена

Wizard на 5 шагов для создания кампании

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

Гипотеза 2, отброшена

Табличный сегментный билдер

Второй вариант, строить сегмент как Excel-формулу. Аналитики хвалили, маркетологи не понимали. Оставил drag-and-drop с двумя режимами: Standard (визуально) и Expert (SQL-редактор с подсветкой). Каждая роль получила свой инструмент в одном модуле.

Гипотеза 3, отброшена

Счётчик в реальном времени на 10 млн

Идея была красивая: маркетолог двигает ползунок возраста, число клиентов пересчитывается на лету. На тестах с реальным объёмом данных UI замирал на 3-7 секунд. Заменил на режим с задержкой: после 800 мс бездействия запрос уходит, показываем спиннер на счётчике. Ощущение живости сохранилось, БД выжила.

Дизайн-система CDP как инфраструктура: трёхуровневые токены, мастер-компоненты, организмы и контракт с кодом через Code Connect + MCP

Для платформы на 10+ модулей дизайн-система, не вспомогательный артефакт, а несущая конструкция. Если её нет или она слабая, каждый новый модуль добавляет 10-15% расхождений. Через полгода это становится необратимым.
Я строил систему в инженерной логике: компонент существует один раз, меняется в одном месте, синхронизируется с кодом автоматически. Результат такой модели проверился через год: тёмную тему для всех аналитических модулей я включил за один день, поменял значения семантического слоя. Ни одного экрана переделывать не пришлось.
Ниже, ключевые слои системы, на которой собрались 12 модулей платформы: палитра для тёмной и светлой темы, типографическая шкала, трёхуровневая модель токенов с пятью семантическими ролями, мастер-компонент «Универсальная ячейка», DesignOps-связка Figma Code Connect + MCP + Storybook и принципы, по которым она держится.

Цветовая палитра · WCAG 2.2

База

Чёрный, белый и прозрачный для быстрой подмены поверхностей.

AAA 21:10#FFFFFF
AAA 21:11000#000000
 α#FFFFFF 0%

Серый

Нейтраль для текста, фонов, границ и полей. Палитра для тёмной темы, десатурированная.

AAA 18.125#FAFAFA
AAA 17.250#F4F4F5
AAA 14.9100#E4E4E7
AAA 12.8200#D4D4D8
AAA 7.4300#A1A1AA
AA 4.8400#71717A
AAA 7.7500#52525B
AAA 10.4600#3F3F46
AAA 14.9700#27272A
AAA 16.4800#1F1F23
AAA 17.7900#18181B
AAA 19.9950#09090B

Бренд

Первичный цвет CDP, индиго #6366f1. Активное меню, primary-кнопки, active states. Степ 500, основной токен.

AAA 17.425#F5F5FF
AAA 16.750#EEF0FF
AAA 14.9100#E0E3FF
AAA 12.1200#C7CCFF
AAA 9.1300#A7AEFF
AA 6.3400#818CF8
4.5500#6366F1
AA 6.3600#4F46E5
AAA 7.9700#4338CA
AAA 9.9800#3730A3
AAA 11.4900#312E81
AAA 16.0950#1E1B4B

Ошибка

Состояния ошибки, деструктивные действия и отклонения.

AA 6.425#FFFBFA
AA 6.050#FEF3F2
AA 5.5100#FEE4E2
AA 4.6200#FECDCA
AAA 9.7300#FDA29B
AA 6.8400#F97066
3.9500#E24B4A
AA 4.8600#D92D20
AA 6.6700#B42318
AAA 8.7800#912018
AAA 9.8900#7A271A
AAA 13.9950#55160C

Внимание

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

AA 6.925#FEFDF0
AA 6.550#FEF7C3
AA 6.0100#FEEE95
AAA 14.7200#FDE272
AAA 11.6300#F5C518
AAA 9.2400#EAAA08
AAA 10.6500#F5B800
AA 6.2600#CA8504
AAA 7.0700#854A0E
AAA 9.0800#713B12
AAA 12.0900#542C0D
AAA 17.1950#271900

Успех

Позитивные состояния, подтверждения, положительные тренды.

AA 5.325#F6FEF9
AA 5.150#ECFDF3
AA 4.8100#D1FADF
AAA 14.7200#A6F4C5
AAA 12.4300#6CE9A6
AAA 9.9400#32D583
3.4500#1D9E75
3.7600#039855
AA 5.4700#027A48
AAA 7.7800#05603A
AAA 9.7900#054F31
AAA 14.0950#053321

Прогресс

Активные процессы и фокус внимания: поездка «в пути», загрузка, индикаторы синхронизации.

AA 6.325#F5F9FF
AA 6.250#EFF6FF
AA 5.5100#DBEAFE
AAA 13.3200#BFDBFE
AAA 10.5300#93C5FD
AAA 7.4400#60A5FA
AAA 7.2500#5AA2FF
AA 5.2600#2563EB
AA 6.7700#1D4ED8
AAA 8.7800#1E40AF
AAA 10.4900#1E3A8A
AAA 14.7950#172554

Dark theme, default

Тёмная тема по умолчанию. Фоновые поверхности от #050507 до #1A1A1D, белый primary-текст и индиго-акцент #6366F1. Все 8 семантических токенов прибиты к data-theme="dark", переключение темы меняет только их значения.
SURFACEsurface/base#050507
SURFACEsurface/raised#0B0B0C
SURFACEsurface/border#1A1A1D
TEXTtext/primary#FFFFFF
TEXTtext/secondary#9A9A9E
ACCENTaccent/brand#6366F1
STATEstate/success#10B981
STATEstate/danger#EF4444

Light theme, mirrored

Зеркало для светлой темы. Те же 8 токенов с тем же смыслом, но фоновые поверхности от #FFFFFF до #E4E4E7, тёмный primary-текст и более насыщенный индиго #4F46E5 с success #059669 и danger #DC2626, чтобы держать контраст на светлом фоне. Переключение темы, один атрибут data-theme="light".
SURFACEsurface/base#FFFFFF
SURFACEsurface/raised#F4F4F5
SURFACEsurface/border#E4E4E7
TEXTtext/primary#0A0A0B
TEXTtext/secondary#52525B
ACCENTaccent/brand#4F46E5
STATEstate/success#059669
STATEstate/danger#DC2626

Типографика · Inter

ТокенПримерРазмер / LH
display-2xlПоездки72 / 90 · 600
display-xlПоездки60 / 72 · 600
display-lgЗаголовок H148 / 60 · 600
display-mdЗаголовок H236 / 44 · 600
display-smЗаголовок H330 / 38 · 600
display-xsПодзаголовок24 / 32 · 600
text-xlЛид-абзац20 / 30 · 400
text-lgОсновной текст18 / 28 · 400
text-mdКраснодар → Москва16 / 24 · 400
text-smПодпись14 / 20 · 400
text-xs20 января 202212 / 18 · 400

Трёхуровневая модель токенов CDP

Токены устроены трёхуровнево: примитивы (blue-500, gray-200, spacing-16) → семантика (bg.surface-primary, text.error, chart.positive) → компонент (button.primary.bg, table.row-hover, card.active.border). Экраны ссылаются только на семантический слой. Это дало переключение за один день на тёмную тему для всех аналитических модулей, поменял значения семантики, экраны перерисовывать не пришлось.

Уровень 1

Primitive tokens

Сырая палитра и константы: blue-500, gray-200, spacing-16. Не имеют смысла в UI, только определяют значение. Никогда не используются в компонентах напрямую.

Уровень 2

Семантические токены

Привязка примитива к функциональной роли: bg.surface-primary, text.error, border.interactive, chart.positive. Дизайнер выбирает смысл, а не hex.

Уровень 3

Component tokens

Частные значения, собранные из семантики: button.primary.bg, table.row-hover, card.active.border. Разработчик подставляет их в код один раз и больше не трогает.

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

success / 500

Success

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

Применяется
  • Линии тренда вверх на графиках конверсии и LTV
  • Заливка успешно пройденного шага в Journey Builder
  • Положительная дельта в карточках метрик дашборда
  • Индикатор успешной синхронизации в списке источников данных
warning / 400

Warning

Устаревающие данные, приближающиеся пороги, состояния, требующие внимания до того, как они превратятся в ошибку.

Применяется
  • Метка «Обновлено», когда сегменту больше 24 часов
  • Жёлтая граница карточки с неактуальной выборкой
  • Предупреждение рядом с метрикой, подходящей к SLA
  • Иконка внимания в Audit Log и в Explainable AI
error / 500

Error

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

Применяется
  • Красная строка таблицы сегментов при сломанной связке
  • Текст валидации в формах Segmentation Builder
  • Отрицательная дельта в карточке показателя
  • Статус провалившегося шага журнея в таймлайне
brand / 500

Brand

Текущий фокус пользователя, запущенная кампания, активное действие. Бренд-цвет работает как навигатор внимания, а не как декор.

Применяется
  • Активный пункт боковой навигации и выделение в хлебных крошках
  • CTA «Запустить кампанию», «Пересчитать сегмент»
  • Выделенная строка в таблице, выбранная пользователем
  • Рамка фокуса у инпутов, ссылок и интерактивных ячеек
neutral / 500 - 700

Neutral

Черновики, архив, неактивные объекты, placeholder-состояния. Нейтральный цвет говорит «здесь ничего сейчас не происходит».

Применяется
  • Строки архивных сегментов и завершённых кампаний
  • Disabled-состояния кнопок, чекбоксов, переключателей
  • Placeholder-текст в пустых таблицах и инпутах
  • Метка «Черновик» без дополнительного акцента

Как три уровня выглядят в коде токенов

Primitive решает, какие значения вообще существуют. Semantic даёт им смысл. Component фиксирует контракт для конкретного компонента. Все уровни ссылаются вниз, дизайнер правит только primitive и semantic, компоненты остаются нетронутыми.

1. Primitive

Сырые значения, палитра, шкалы. Не используются в компонентах напрямую.
color.indigo.500   = #6366F1
color.neutral.950  = #050507
color.neutral.100  = #E4E4E7
space.4            = 16px
radius.md          = 10px
duration.fast      = 120ms

2. Semantic

Роль в UI, привязана к теме. Переключается при смене Dark/Light.
surface.base     → neutral.950
surface.raised   → neutral.900
text.primary     → neutral.0
text.secondary   → neutral.400
accent.brand     → indigo.500
border.subtle    → neutral.850

3. Component

Локальный контракт компонента. Ссылается на semantic, редко правится.
button.primary.bg  → accent.brand
button.primary.fg  → text.primary
card.bg            → surface.raised
card.radius        → radius.lg
input.focus.ring   → accent.brand/18%
cell.gap           → space.3

Мастер-компонент «Универсальная ячейка»

Это ключевая находка проекта. В платформе сотни таблиц, customer list, segments, campaigns, events timeline, audit log. Если каждую делать отдельно, консистентности не будет. Я собрал один мастер-компонент «Cell» с системой слотов: leading (иконка, аватар, чекбокс), content (текст, бейдж, прогресс-бар, мини-график), trailing (действие, ссылка).
Состояния описаны в одном месте: checkbox, hover, selected, focus, скелетная загрузка, empty, error. Системное изменение отступа или шрифта в ячейке мгновенно прокатывалось по всем таблицам всех модулей. Это сэкономило десятки часов правок, когда дизайнерская команда заказчика меняла систему отступов.
без мастер-ячейки
~300
вариантов ячеек
  • 5 типов строк (simple, avatar, checkbox, chart, action)
  • 4 состояния (default, hover, selected, skeleton)
  • 3 размера (sm, md, lg)
  • 5 сценариев (customers, segments, campaigns, events, audit)
Правка отступа = 300 ручных правок в одних только таблицах, расхождения неизбежны
с мастер-ячейкой
1
источник истины
  • 1 мастер-компонент Cell в Figma
  • 3 слота (leading, content, trailing)
  • Props (size, state, density, divider)
  • 5 пресетов покрывают всю платформу
Правка одного токена = автоматическое обновление всех таблиц всех модулей
Анатомия ячейки, три слота и панель свойств
Слева, реальный Cell с цветовой разметкой слотов. Справа, инспектор свойств: те же поля, что в Figma и в React-props. Любая таблица, лист или пункт навигации, это Cell с разным содержимым слотов.
leading
Ivan Petrov
VIP segment, 4 purchases
content
12:04
trailing
  • leadingavatar · icon · checkbox · dot
  • contenttitle · subtitle · badge · mini-chart · progress
  • trailingmeta · action · caret · toggle
Состояния в одном месте
Default
Базовое состояние
12:04
default
Hover
Подсветка фона
12:04
hover
Selected
Accent-рамка слева
12:04
selected
skeleton
5 пресетов покрывают всю платформу
Audit log entry
Событие без иконки
12:04
Cell · simple
Ivan Petrov
VIP segment
12:04
Cell · avatar
Activated 30 days
Условие сегмента
14 286
Cell · checkbox
Revenue, Sept
+18.4%
Cell · chart
Trigger call
SMS не доставлено
Cell · action

Мастер-компоненты

Примитивы, из которых собиралась вся платформа. Один мастер в Figma, один React-компонент в репозитории, один набор story в Storybook. Props, варианты и имена полей совпадают 1:1.

Button

variants: primary, secondary, ghost. size: sm, md, lg.

Input

state: rest, focus, error, disabled. prefix/suffix slots.

Badge

tone: success, warn, danger, info. size: sm.
active pending failed new

Cell

строка списка, основа таблиц и навигации. Avatar + title + subtitle + meta slot.
Ivan Petrov
Segment, VIP, 4 purchases
12:04

Tabs

role: tablist. Использует semantic accent и surface.raised.

Avatar stack

лимит 3 + counter, fallback = инициалы.
IP MS AK +12

Организмы платформы, собранные из мастер-компонентов

Крупные блоки, склеенные из мастер-компонентов и отвечающие за законченный сценарий, а не за поле или кнопку. Ниже, четыре несущих организма, которые повторяются в разных модулях платформы: Timeline профиля, конструктор правил сегментов, канвас Journey, чат-виджет AI Assistant. Каждый собран из примитивов Cell, Badge, Button, Input и делит с ними общий слой токенов.

Customer Profile 360°, Timeline

Хронология событий клиента: покупки, кампании, изменения атрибутов. Cell + Badge + семантический цвет иконки.
Purchase, order #18442
iPhone 15 Pro, accessories bundle
12:04
Email opened, Spring promo
Campaign, Spring 2026, 3rd touch
11:22
Cart abandoned, 2 items
Retargeting retry, queued
Yesterday
Segment change: VIP, new
LTV crossed the threshold
2 d ago

Segmentation Rule Builder

Drag-drop правил с AND/OR группами, 184 атрибута в библиотеке. Field + Operator + Value(s).
Group A
LTV greater than 500
Country is one of DE NL FR
OR
Group B
Last purchase within 30 days

Journey Builder, canvas

Triggers, Wait, Condition, Channels на одном холсте. Узлы связаны Bézier-кривыми с метками Yes/No.
Trigger
Segment entered
Condition
LTV > 500
?
SMS
Fallback
Yes No

AI Assistant, chat + insight widget

Сообщения пользователя и AI с аватаром. Внутри ответа, живой виджет с метриками и объяснением XAI.
Покажи падение активности по VIP за 28 дней.
AI
Вижу падение на 15%, сегмент VIP, окно 28 дней. Ниже, виджет с разбивкой.
VIP activity, 28d -15%
4 812
active
812
at risk
7.4%
CR, -2pp
Email CTR-12%
Push open-8%
Web visits-19%

DesignOps: Figma Code Connect + MCP + Storybook

Figma Code Connect

Связка мастер-компонентов Figma и React-компонентов репозитория. Props, варианты и имена полей совпадают 1:1. Дизайнер видит соответствие, разработчик ходит в Figma по ссылке из IDE.

MCP-сервер

Model Context Protocol. AI-агенты и плагины читают структуру дизайна и код как единое дерево. Кастомный плагин сверяет props Figma-мастера и TypeScript-компонента, находит расхождения.

Storybook

Живая документация. Каждый компонент имеет набор сторис: default, all states, edge cases. Дизайнер смотрит, как компонент выглядит в реальном окружении, без сборки приложения.

Собственные Figma-плагины

Design Review AI (проверка семантических токенов), Token Batch Manager (миграция токенов), Auto Layout 5.0 как правило. Убрали рутину из дизайн-процесса.

Handoff & Code: токены, CSS, React, Figma Code Connect

Передача макетов в разработку перестала быть событием. Токены экспортируются из Figma и попадают в репозиторий как JSON и CSS-переменные. Figma Code Connect связывает мастер-компонент и React-компонент: props, варианты, имена полей совпадают 1:1. Расхождения ловит Design Review AI на каждом PR.

tokens.json, Style Dictionary

Источник правды. Экспорт из Figma через Token Batch Manager.
// tokens/semantic/dark.json
{
  "surface": {
    "base": { "value": "{color.neutral.950}" },
    "raised": { "value": "{color.neutral.900}" }
  },
  "accent": {
    "brand": { "value": "{color.indigo.500}" }
  },
  "radius": {
    "md": { "value": 10 }
  }
}

CSS variables, generated

Билд-шаг Style Dictionary. Темы подключаются через data-theme.
/* generated, do not edit */
:root, [data-theme="dark"] {
  --surface-base: #050507;
  --surface-raised: #0b0b0c;
  --accent-brand: #6366f1;
  --radius-md: 10px;
}
[data-theme="light"] {
  --surface-base: #ffffff;
  --surface-raised: #f4f4f5;
  --accent-brand: #4f46e5;
}

React component, Button.tsx

Контракт совпадает с Figma-мастером. Подключён в Code Connect.
// components/Button/Button.tsx
type ButtonProps = {
  variant: "primary" | "secondary" | "ghost";
  size: "sm" | "md" | "lg";
  icon?: IconName;
  children: ReactNode;
};

export const Button = (p: ButtonProps) => (
  <button
    className={cx("btn", `btn--${p.variant}`, `btn--${p.size}`)}
  >
    {p.icon && <Icon name={p.icon} />}
    {p.children}
  </button>
);

Figma Code Connect, mapping

Связь мастер-компонента и React. Figma показывает сниппет в Dev Mode.
// Button.figma.tsx
import figma from "@figma/code-connect";
import { Button } from "./Button";

figma.connect(Button, "https://figma.com/.../Button", {
  props: {
    variant: figma.enum("Variant", {
      Primary: "primary",
      Secondary: "secondary",
      Ghost: "ghost",
    }),
    children: figma.textContent("Label"),
  },
  example: (p) => <Button variant={p.variant}>{p.children}</Button>,
});

Принципы системы

Один источник правды для 12 модулей

Все экраны платформы ссылаются только на семантические токены. Изменение бренда, одна правка, 12 модулей обновляются автоматически.

Компонент = Figma-мастер + React-код + Storybook

Синхронизация трёх источников через Code Connect и MCP. Расхождение между Figma и кодом невозможно по определению.

Плотность без жертв

Плотные отступы (8px базовая единица), табулярные цифры Inter для вертикального выравнивания метрик, скрытые действия по hover. Маркетолог видит сразу 50+ строк без прокрутки.

Масштабируемость через слоты

Мастер-компоненты «Cell» и «Widget» имеют систему слотов. Новый модуль = новое содержимое в знакомых контейнерах, а не новые компоненты.

Как я проектировал: гипотезы, юзабилити-тесты, итерации

Дизайн-системы и архитектуры мало, если решения не проверены на живых пользователях. Ниже, как я валидировал ключевые гипотезы, какие тесты прогонял с маркетологами и как ключевые экраны менялись от итерации к итерации. Цифры, оценочные по проекту.

Гипотезы, что проверяли до первой строчки UI

1

Маркетолог соберёт сегмент сам

Без заявки в IT, если убрать SQL и оставить понятные «правила».

2

AI-инсайтам поверят только если видно источник

Поля, SQL-запрос, время среза. Без этого аналитики не запускают кампанию без ручной перепроверки.

3

Переключение Light / Dark через семантические токены

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

4

Один мастер-компонент Cell покроет 12 модулей

Вместо ~300 отдельных ячеек таблиц, при правильной системе слотов.

5

Локализация на 33 языка не сломает плотные таблицы

Если зарезервировать запас 1.4х на немецкий и финский.

Источник гипотез: 14 интервью (8 маркетологов, 4 продакта, 2 data-аналитика) в 5 странах до старта проекта

Юзабилити-тесты Segmentation Builder: 3 раунда, от 47% до 92% выполненных задач

v1

Табличная форма

47% не справились

Поля, операторы и значения в строках таблицы. Маркетологи путали колонки и не понимали как соединять условия AND/OR.

v2

Drag-n-drop блоки

71% справились, 4 мин

Большие блоки на канвасе. Понятнее, но неудобно на ноутбуке: тач-пад уставал тащить 8-10 блоков.

v3

Rule-based pills

92% справились, <2 мин

Pills «Поле / Оператор / Значение» в группах AND/OR. Финальный вариант, ушёл в продакшн.

Тесты прогонял на 19 маркетологах из 6 стран (Польша, Испания, Турция, Чехия, Венгрия, Греция), задача - собрать сегмент «активные клиенты с покупками за 30 дней, исключая бывших возвратчиков»

Итерации AI Assistant: от чёрного ящика к XAI-панели, рост доверия с 38% до 79%

v1, чат без объяснений
38% доверие
v2, +источники полей
62% доверие
v3, +SQL-запрос и время среза
79% доверие
Что замеряли: «Готовы ли вы запустить кампанию на сегмент, который предложил AI, без ручной перепроверки в SQL?»
Кто тестировал: 12 маркетологов и 4 data-аналитика, по 25 типовых вопросов каждому
Главный инсайт: аналитики не доверяют не AI, а отсутствию воспроизводимости. Как только показали SQL и время среза, готовность запустить промо без перепроверки выросла в 2 раза.

Дизайн сессии с фронтенд-лидом и DesignOps: 0 критических расхождений за 2 года

Эффект: 0 критических расхождений между Figma и production-кодом за 2 года в проде (визуальные регрессионные тесты в Storybook, ручной QA по чек-листу). Мелкие расхождения отступов и состояний, найденные дизайн-ревью, фиксились в течение спринта. Время на новый компонент сократилось с 3-4 дней до 4-6 часов

Финальное решение: единый профиль, сегмент за 2 минуты, flow коммуникаций за 5 минут и AI, который объясняет, откуда взял цифру

Всё, что я описал выше, собралось в работающую платформу. Ниже, ключевые экраны и решения, каждое привязано к инсайту из блока Research.

Финальные экраны

CDP Dashboard, тёмная тема CDP Dashboard, светлая тема
Главный дашборд: 4 ключевые метрики платформы, revenue-тренд с оверлеем сегментов, активные кампании и распределение каналов. Переключение темы, одно изменение значений семантического слоя, все 12 модулей обновляются автоматически.
CDP Segmentation Builder, тёмная тема CDP Segmentation Builder, светлая тема
Segmentation Builder: конструктор сегментов с логикой AND/OR, include/exclude-группами, drag-and-drop условиями и счётчиком объёма аудитории в реальном времени. Справа, превью распределения по странам и top-атрибутам, снизу - список уже сохранённых сегментов с количеством профилей.
CDP Customer Profile 360, тёмная тема CDP Customer Profile 360, светлая тема
Customer Profile 360°: карточка клиента с Timeline событий, связкой устройств, расчётными показателями LTV и вероятностью оттока. Справа, панель атрибутов, разделённых по категориям: идентификация, поведение, покупки, предпочтения.
CDP Journey Builder, тёмная тема CDP Journey Builder, светлая тема
Journey Builder: визуальный редактор цепочек с триггерами, ожиданиями и условиями. Каналы: Email, SMS, Push, WhatsApp. Статистика вхождения и конверсии рядом с каждым узлом.
CDP AI Assistant, тёмная тема CDP AI Assistant, светлая тема
AI Assistant: семантическая навигация, дашборды на лету, XAI-панель. Каждый виджет показывает, какие поля и SQL-запрос использовались. Генерация занимает 3-8 секунд, результат попадает в сетку платформы.

Ключевые сценарии и решения

Профиль между устройствами с достоверностью 98.7%

Identity Resolution связывает email, телефон, device-id, cookie-id в одну сущность с оценкой достоверности. Там, где достоверность низкая, система просит подтверждение или сохраняет отдельные профили.

Инсайт из research: 2.4 профиля на человека в среднем

Сегмент за 2 минуты вместо заявки в IT

Drag-and-drop условий, живой счётчик с задержкой, переключение Standard / Expert. Маркетолог видит размер аудитории до запуска, Data Analyst пишет SQL в том же окне.

Инсайт из research: 80% тикетов в IT, это выгрузки

Journey Builder на одном холсте

Триггеры, ожидания, условия, каналы, всё на одной grid-поверхности с теми же правилами, что и сегменты. Маркетолог не переучивается между модулями.

Общая grid-логика для сегментов и цепочек

AI с XAI

Каждый автоматический отчёт открывается в режиме объяснения: какие поля, фильтры, SQL-запрос. AI говорит «в сегменте Premium падение на 15%, посчитано по полю purchase_count за 28 дней, SQL вот».

Инсайт из research: аналитики боятся AI-цифр без обоснования

Индикатор актуальности данных

Рядом с каждым большим отчётом, «Обновлено 12 мин назад». Пользователь понимает, что видит не актуальные данные в реальном времени, и принимает решение сознательно.

Инсайт из компромисса реальное время vs стоимость

Enterprise-грид для 10M+ записей

Enterprise-грид с виртуальным скроллом. В DOM живут 20-30 строк, остальные подгружаются «окнами». Скролл плавный, фильтры мгновенные, экспорт уходит в фоновую задачу.

Выбор технологии под реальный масштаб

Кампания за 15 минут вместо 3 дней: цифры, которые остались после запуска

Переход от разрозненных данных к единой платформе с 12 модулями и AI-навигацией отразился и в метриках бизнеса, и в метриках дизайн-процесса.

Ключевые метрики и методология за каждой цифрой

Цифры не маркетинг, а результат A/B-тестов и когорт-анализа. Слева, цифра до и после; справа, как считали, какой был baseline и контрольная группа.

Time-to-Market кампаний

3 дня
15 мин
-99.6%

TTM кампаний с 3 дней до 15 минут (-99.6%)

  • Метод: хронометраж типовой задачи «собрать сегмент и запустить рассылку»
  • Период: 3 месяца до запуска (старая система, ручная выгрузка из IT) и 3 месяца после
  • Выборка: 47 маркетологов из 5 пилотных стран
  • Контроль: 12 ретроспективных кампаний из старой системы со схожими параметрами

Конверсия (CR)

3.9%
4.8%
+22%

CR кампаний +22%

  • Метод: A/B-тест на 6 повторяющихся типах кампаний (welcome, abandoned cart, re-engage, VIP reward, churn-prevention, loyalty)
  • Период: сентябрь-декабрь 2024
  • Выборка: n ≈ 12 000 пользователей в каждой группе
  • Контроль: аналогичные кампании в старой broadcast-системе без сегментации
  • Ограничение: сезонный фактор учитывали через сравнение год-к-году

Отток (Churn Rate)

рост
-12%
снижение

Churn -12%

  • Метод: когорт-анализ по месячному оттоку активной базы
  • Baseline: 4 месяца до запуска, средний месячный churn rate
  • Период измерения: 6 месяцев после полного rollout
  • Cofactors: исключили влияние сезонных скидок и macro-экономики через регрессию

Запросы в IT на выгрузку

~200/мес
~40/мес
-80%

Запросы в IT на выгрузку -80%

  • Метод: подсчёт тикетов в IT-helpdesk с тегом «data export / segment»
  • Период: 6 месяцев до и 6 месяцев после полного rollout
  • Baseline: ~200 тикетов в месяц, среднее за 12 месяцев до запуска по логам helpdesk
  • Контроль: другие категории тикетов (доступы, инфраструктура) сохранили прежний уровень, снижение только по экспорту данных

Seat Utilization

38%
71%
+87%

Seat Utilization +87%

  • Метод: доля активных лицензий из всех оплаченных, активный = один и более сегментов или кампаний за 30 дней
  • Период: ежемесячный замер, 8 месяцев после полного rollout
  • Baseline: 38% за 3 месяца до запуска, старая система требовала SQL-навыков для самостоятельной работы
  • Сегменты: отдельный замер по ролям, маркетологи, CRM-менеджеры, продакты

Время UI-ревью

-67%

Время UI-ревью -67%

  • Метод: среднее число циклов ревью от submit дизайна до approve в Figma
  • Период: хронометраж 24 итераций до Code Connect и 24 после
  • Baseline: 3 цикла ревью на компонент в среднем, расхождения между Figma и кодом
  • После: 1 цикл благодаря Code Connect и MCP, расхождения исчезли как класс

B2B Product Metrics

Activation Rate
74%, верхняя часть диапазона онбординга с участием отдела продаж (бенчмарк 60-80%)
TTV
4 часа до первой ценности (бенчмарк <1 день для средних компаний)
Feature Adoption (core)
82%, зона высокого освоения благодаря ролевому онбордингу
Setup Success Rate
94%, встроенная диагностика и повтор запроса в шаге интеграции с источниками

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

CRM-менеджер заказчика, через 3 месяца после запуска платформы

Качественные результаты

Единый язык данных

Дизайн-система (токены + мастер-компонент «Ячейка») дала дизайнерам и разработчикам общий словарь. Споры о реализации прекратились, Code Connect показывает соответствие компонента и кода.

Меньше когнитивной нагрузки

AI-навигация и прогрессивное раскрытие информации позволили новым пользователям осваивать 10+ модулей без многонедельного обучения. Setup wizard и ролевой онбординг доводят маркетолога до первой рассылки за один рабочий день.

Доверие к данным

Модуль XAI (Explainable AI) снял страх перед автоматическими отчётами. Аналитики доверяют цифрам, потому что видят SQL и поля, которые за ними стоят.

Три вещи, которые я бы сделал иначе

Платформа работает и бизнес получил результат, ради которого её строили. Но через полтора года вижу три вещи, которые сделал бы по-другому. Эти уроки я заберу в следующие enterprise-проекты.
Вызов
Я слишком поздно ввёл кастомизацию рабочих пространств. В первой версии CMO и Data Lead получили тот же интерфейс, что и маркетолог-исполнитель. Первым не хватало dashboard-верхнеуровневых виджетов, вторым - глубины.
Урок
В enterprise-продукте разные роли используют до 80% разных сценариев. Один интерфейс на всех - это либо перегруз для junior, либо упрощение для lead.
Что изменил
Следующая итерация содержала drag-and-drop конструктор личного воркспейса: CMO собирал себе дашборд для руководства из виджетов разных модулей, маркетолог оставался на стандартном интерфейсе. Это решение нужно было принимать сразу.
Вызов
AI Assistant на первом этапе был реактивным: отвечал на запросы, ничего не инициировал сам. Маркетологи хвалили удобство, но упускали сигналы: аномалии в сегментах, падение открываемости, ошибки в интеграциях.
Урок
В платформе с 10M+ записей пользователь физически не может успеть всё просмотреть. Проактивный AI - не «фича», а единственный способ донести важные сигналы вовремя.
Что изменил
Заложил архитектуру для упреждающего режима: AI отправляет пуш маркетологу при обнаружении аномалии («В сегменте Premium падение активности на 15%, подготовить отчёт?»). Полная реализация уехала в следующую фазу после моего выхода из проекта.
Вызов
Очистка данных - скучная и почти невидимая работа. Data Analyst тратил часы на склейку дублей и маппинг полей, но в интерфейсе это отображалось как сухие формы. Модуль Identity Resolution стал «последним по приоритету» для пользователей, хотя именно от него зависело качество всего CDP.
Урок
Техническая «уборка» нуждается в UX так же, как и маркетинговые модули. Если рутину не оформить визуально, её не делают.
Что изменил
Во второй итерации модуль Identity получил визуальный прогресс-бар «чистоты базы» с метрикой Cross-device Confidence, тепловую карту дублей по времени и геймифицированный чеклист ежедневных задач. Это не полный разворот направления, но направление изменилось.

Что получилось хорошо