Риск клиента виден до потери маржи
Активность, отгрузки, маржа и структурные изменения собраны в один сигнал с причиной, владельцем и сроком действия.
Сделал: Аналитическая модель, пороги, витрина решения
ВопросПочему клиент попал в зону риска?
Клиент C-03 — высокий риск: 52 из 67 потерянных баллов дают деньги клиента и ритм отгрузок
3,2 млн ₽/мес маржи под риском. Остановить стандартный сценарий скидки и назначить разбор клиента с владельцем маржи и отгрузок.
Клиент приносит меньше денег?
Транзакционный вклад почти исчерпан.
Что измеряет: маржа, число отгрузок и прибыль на одну отгрузку. Компонент 10 из 100 → 3 из 30 баллов индекса.
Кто решает и к какому сроку
- Владелец
- Комдир + финконтроль · менеджер готовит план удержания
- Срок
- эскалация сегодня
- Ограничение
- финконтроль блокирует стандартные скидки до разбора
- Успех
- зафиксирован план удержания, а следующий индекс перестаёт падать
В заявку попадёт тема Клиентская маржа: ранний сигнал риска (C-03: деньги клиента, ритм отгрузок)
.
Ситуация
С чего всё начиналось
Проект связывает клиентскую маржу, ритм отгрузок, динамику, стабильность, вовлечённость и структурные изменения с конкретным решением коммерческой команды.
Риск клиента становился заметен уже после просадки маржи: факторы здоровья жили в ручных сверках, чатах и отдельных выгрузках, а ранний сигнал не имел владельца.
Что изменено
Что я сделал
Собрал витрину Advanced Health Score поверх ClickHouse: зафиксировал формулу из семи компонентов, риск-пороги, причины отклонения, владельца и очередь действий.
- Фильтры должны одинаково влиять на матрицу, план и переходы.
- Плановые значения хранятся отдельно от факта и сравниваются в единой периодной структуре.
- Базовый транзакционный слой сравнивает маржу, число отгрузок и среднюю прибыль на отгрузку за два трёхмесячных окна.
- Advanced Health Score складывается из семи компонентов с весами 30/25/15/10/10/7/3 и порогами риска 80/65/45/30.
Что получилось
Результат
Клиентский риск стал виден до потери маржи — с причиной, владельцем и сроком
- Коммерческая и финансовая команды получили общий клиентский пульс вместо отдельных таблиц и чатов.
- Риск виден до потери маржи: score раскладывается до ритма, динамики, вовлечённости и структурных сдвигов.
- Каждый сигнал получает владельца, срок и проверяемый критерий закрытия.
Как это проверено
Проверка и границы
- Сумма взвешенных вкладов семи компонентов совпадает с итоговым score.
- Порог риска однозначно определяется диапазонами 80/65/45/30.
- Риск-флаг трассируется до входной метрики и владельца действия.
демо-данные; логика критериев перенесена из расширенной модели health score. score объясняет сигнал, но не заменяет решение руководителя и контекст клиента.
Техническое приложение
Как устроено внутри
Для тех, кто проверяет решение по существу: источники, слои данных, правила расчёта и артефакты передачи.
Архитектура, данные и методология
Архитектура
| Источники | ClickHouse client health marts · операционные события отгрузок · спецификации и менеджеры |
|---|---|
| Загрузка | Express API · cached queries |
| Хранение | ClickHouse · browser draft state |
| Представление | React экран решения · Excel export |
Модель данных
| Объект | Слой | Назначение |
|---|---|---|
| vw_client_health_advanced_period | mart | score, компоненты и риск-флаги по периоду |
| vw_client_health_advanced_daily | mart | свежий клиентский пульс и очередь сигналов |
| client_shipments_specs | fact | отгрузки, спецификации, ритм и вовлечённость |
Методология и правила
- Построил клиентский контур маржинальности: клиент, менеджер, период, маржа, отгрузки, средняя прибыль и ритм заказа.
- Разделил итоговый score и его причины: транзакционный слой, ритм, ускорение, стабильность, вовлечённость, структура и контекст риска.
- Добавил риск-флаги для срыва ритма, негативного ускорения, падения вовлечённости, смены структуры портфеля и ротации менеджера.
- Итоговый score 0–100 считается как 30% транзакционного здоровья, 25% ритма, 15% ускорения, 10% стабильности, 10% вовлечённости, 7% структуры и 3% контекста риска.
- Риск-пороги: от 80 — стабильный, от 65 — низкий риск, от 45 — средний, от 30 — высокий, ниже 30 — критический.
- Score не заменяет решение: экран показывает вклад каждого компонента, риск-флаги и следующее действие до ожидаемой отгрузки или продления.
Артефакты и стек
Dashboard · Data Model · План-факт · Финансовые правила
Что бы сделал иначе
- Операционный экран должен быть быстрым и узко заточенным под рабочий сценарий.
- Local draft полезен для планирования, но требует явной политики сохранения.
- Кеширование запросов важно для больших ClickHouse витрин.
Похожая задача?
Расскажите, где у вас расходятся цифры или не хватает картины. Отвечу, чем это лечится и с чего начать.