Условие
Контур.Бухгалтерия — веб-сервис отчётности для ИП. Целевая аудитория — ИП на УСН в 77 регионе. Конкурируют несколько сервисов; средние цены на рынке = средняя цена Контура. Оплата зависит от тарифа.
Дано: данные о плане и факте продаж (шт. + рубли) и данные об ИП за ряд лет.
Задачи:
- План-факт анализ продаж.
- (а) Отчёт с визуализацией.
- (б) Укрупнённая и детализированная группы тарифов.
- (в) Логика и последовательность.
- (г) Выводы и рекомендации.
Решение
Каркас отчёта
Block 1 — Total:
- Plan vs Fact (шт. и руб.) по периоду (помесячно).
- % выполнения плана.
- Δ Plan-Fact (рост/спад).
Block 2 — Tariff mix:
- Укрупнённые группы тарифов: Старт / Базовый / Расширенный.
- Детализированные: внутри каждой — точные SKU.
- Доля каждого тарифа в выручке и в шт.
- Сравнение с планом по группам.
Block 3 — ИП-сегменты:
- По обороту, типу деятельности, дате регистрации.
- Какие сегменты активнее покупают.
- Какие недопродают (gap to plan).
Block 4 — Drivers of variance:
- Декомпозиция:
revenue = quantity × ASP × tariff_mix. - Что упало/выросло относительно плана?
Логика и последовательность
- Сверить данные: есть ли gaps, несовпадение справочников между планом и фактом.
- Total: сначала картина в целом — выполнен ли план в общем.
- Декомпозиция: что отвечает за дельту — quantity или ASP.
- Tariff mix: какая группа тарифов недоперформит.
- ИП сегмент: где целевая аудитория. Если пере- / недо-перформит — это структурный insight.
- Сезонность: налоговая отчётность сильно сезонна (Q1, Q3, Q4 — пики). Сравнение должно учитывать этот эффект.
- Внешние причины: повышение комиссии, ИП регистрационная активность.
Группы тарифов
Укрупнённая (3 группы):
- Старт (минимальный — для микробизнеса, низкий ARPU).
- Базовый (средний — массовая аудитория).
- Расширенный (премиум — с консультацией бухгалтера).
Детализированная (внутри каждой):
- 1-3 SKU с разной длительностью подписки (3 / 6 / 12 мес).
- Bundle с фискальным накопителем / СБИС.
Выводы / рекомендации (примеры)
- Если Старт перевыполняет план, но Расширенный недо-: цены конкурентов выгоднее для премиум; нужны промо или новый функционал.
- Если в Q1 (отчётность) сильный fact > plan — план был неадекватен; пересмотреть планирование.
- Если в одном сегменте ИП (например, по обороту 2-10 млн) большая дельта в минус — таргетная маркет-кампания.
- Cross-sell: ИП на Старте → апгрейд до Базового через 6 мес.
SQL для отчёта
-- Plan vs Fact по тарифной группе и месяцу
WITH plan AS (
SELECT DATE_TRUNC('month', period) AS mth,
tariff_group,
SUM(plan_qty) AS plan_qty,
SUM(plan_rev) AS plan_rev
FROM sales_plan
GROUP BY 1, 2
),
fact AS (
SELECT DATE_TRUNC('month', sale_date) AS mth,
tariff_group,
SUM(qty) AS fact_qty,
SUM(amount) AS fact_rev
FROM sales_fact
GROUP BY 1, 2
)
SELECT
COALESCE(p.mth, f.mth) AS mth,
COALESCE(p.tariff_group, f.tariff_group) AS tariff_group,
COALESCE(p.plan_qty, 0) AS plan_qty,
COALESCE(f.fact_qty, 0) AS fact_qty,
(COALESCE(f.fact_qty, 0) - COALESCE(p.plan_qty, 0)) * 1.0
/ NULLIF(p.plan_qty, 0) AS qty_var_pct,
COALESCE(p.plan_rev, 0) AS plan_rev,
COALESCE(f.fact_rev, 0) AS fact_rev,
(COALESCE(f.fact_rev, 0) - COALESCE(p.plan_rev, 0)) * 1.0
/ NULLIF(p.plan_rev, 0) AS rev_var_pct
FROM plan p FULL OUTER JOIN fact f
ON p.mth = f.mth AND p.tariff_group = f.tariff_group
ORDER BY mth, tariff_group;Проверка / интерпретация
- Sanity: если план был «оптимистичным» (рост 30% YoY), а фактический рынок дал 5%, дельта будет всегда отрицательной.
- ASP fact vs ASP plan: возможно, mix сместился к дешёвым тарифам.
Подводные камни
- Отсутствует план для нового тарифа —
LEFT JOINдаст NaN, не игнорируйте. - Tariff_group в плане ≠ в факте: разные справочники. Mappping table обязательно.
- Возвраты / отказы: fact - returns ≠ fact billed. Уточняйте бизнес-определение.
- Сезонность отчётности: апрель, июль, октябрь — пики (квартальные отчёты). План YoY должен отражать.
- Многоканальная атрибуция: продажа через партнёров vs сайт — разные ASP.
- Промо и discount: fact_rev в нетто; plan может быть в gross.
Эталонный ответ
Логика: total → декомпозиция (qty × ASP × mix) → tariff group → segment → drivers + recommendations. Рекомендации зависят от data, но шаблон — gap analysis, актуализация плана, кросс-селл, target marketing.