Продуктовое исследование B2C EdTech-платформы: анализ пути пользователя от лендинга до оплаты, определение узких мест воронки, приоритизация гипотез и проведение A/B-теста с оценкой результатов.
«SkillForge» — подписочная платформа для изучения IT-профессий. Пользователь регистрируется, проходит вводный онбординг из трёх шагов, получает пробный урок и оформляет ежемесячную подписку либо приобретает отдельный курс.
На протяжении двух кварталов фиксируется стагнация выручки: затраты на привлечение растут, тогда как конверсия в платную подписку и ARPU не изменяются. Задача — определить, на каких этапах теряются пользователи и выручка, предложить продуктовые инициативы и проверить приоритетную экспериментом.
Синтетический датасет формируется ноутбуком 01_make_database.ipynb. Значения генератора случайных чисел зафиксированы, база пересобирается идентично.
| Таблица | Строк | Содержание |
|---|---|---|
users |
25 000 | регистрации за 01.01.2026 – 29.06.2026, канал привлечения, устройство, страна |
user_events |
170 219 | 12 типов событий от view_landing до view_paywall |
transactions |
1 614 | сумма, тип подписки, статус платежа (success / failed / refunded) |
На основе сырых таблиц построены две витрины (02_create_user_mart.ipynb):
mart_users— одна строка на пользователя: временные отметки всех шагов воронки, счётчики активности, агрегаты по успешным платежам;mart_events— поток событий с указанием предыдущего события и его времени через оконную функциюLAG, используется для анализа переходов.
notebooks/
├── 01_make_database.ipynb генерация датасета, DDL и индексы SQLite
├── 02_create_user_mart.ipynb витрины mart_users и mart_events на SQL
├── 03_funnel_and_eda.ipynb валидация, воронка, юнит-экономика, сегменты, когорты
└── 04_ab_test.ipynb реестр гипотез, дизайн эксперимента, оценка результатов
data/ база данных, в git не хранится, создаётся ноутбуком 01
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
jupyter labНоутбуки выполняются последовательно: 01 создаёт data/skillforge.db, 02 формирует витрины, 03 и 04 работают с готовыми витринами.
| Шаг | Пользователей | Сквозная конверсия | Конверсия шага |
|---|---|---|---|
| Регистрация | 25 000 | 100.00% | — |
| Начал онбординг | 21 702 | 86.81% | 86.81% |
| Шаг 1 | 17 557 | 70.23% | 80.90% |
| Шаг 2 | 10 224 | 40.90% | 58.23% |
| Шаг 3 | 8 713 | 34.85% | 85.22% |
| Завершил онбординг | 7 843 | 31.37% | 90.01% |
| Открыл каталог | 9 369 | 37.48% | — |
| Начал пробный урок | 5 583 | 22.33% | 59.59% |
| Закончил пробный урок | 3 949 | 15.80% | 70.73% |
| Увидел пейволл | 4 086 | 16.34% | — |
| Первая оплата | 1 148 | 4.59% | — |
Наибольшая единичная потеря приходится на шаг 2 онбординга: 41.8% отвала при 15–19% на смежных шагах. Разрез по устройствам определяет, где эта потеря наиболее существенна: онбординг завершают 37.6% пользователей десктопа, 28.5% мобильных устройств и 20.1% планшетов, при этом мобильные устройства составляют 55% аудитории.
Три шага не вложены в предыдущий, конверсия шага для них не рассчитывается: каталог доступен в обход онбординга, пейволл — в обход пробного урока, оплата возможна без просмотра пейволла. Медианная длительность онбординга составляет 4.5 минуты, следовательно, отвал на шаге 2 обусловлен не затратами времени, а содержанием шага.
| Метрика | Значение |
|---|---|
| Выручка | 8 894 453 ₽ |
| Конверсия в оплату | 4.59% |
| ARPU | 356 ₽ |
| ARPPU | 7 748 ₽ |
| Средний чек | 6 051 ₽ |
| Транзакций на платящего | 1.28 |
Двадцатикратный разрыв между ARPU и ARPPU определяет приоритет: основным рычагом выступает конверсия, а не размер чека. Рост конверсии на один процентный пункт при неизменном ARPPU дал бы около 1.9 млн ₽, то есть 22% к выручке. Для сопоставимого эффекта за счёт чека средний платёж потребовалось бы увеличить с 6 051 до 7 380 ₽.
Просмотр каталога является наиболее сильным наблюдаемым предиктором оплаты: конверсия 9.95% против 1.38% у остальных пользователей, различие подтверждено z-тестом (p < 0.001). При этом ARPPU обеих групп практически совпадает — 7 842 ₽ против 7 340 ₽. Каталог влияет на решение о покупке, но не на размер чека, следовательно, работать с ним следует как с инструментом активации.
До каталога доходят только 37.5% пользователей, при этом половина переходов совершается минуя полный онбординг: 1 822 пользователя попадают туда непосредственно с первого шага, 1 037 — со старта онбординга, 841 — сразу после регистрации.
Различие между устройствами значимо, но существенно слабее: desktop 5.04% против mobile 4.36% (p = 0.015). Различия между каналами и странами не выявлены: сравнение organic и paid_search даёт p = 0.545, UZ и RU — p = 0.878. Персонализация под канал привела бы к оптимизации случайных колебаний.
24 пользователя, что составляет 0.1% базы, обеспечивают 23.8% всей выручки.
При их исключении картина существенно меняется: ARPU платного поиска снижается с 458 до 308 ₽, а майский рост ARPU до 483 ₽ составляет 275 ₽, то есть в действительности отсутствует. Помесячная конверсия при этом стабильна в диапазоне 4.18–4.89%.
Практическое следствие: денежные метрики данного продукта не могут использоваться без исключения хвоста, а крупные сделки следует выделить в отдельное направление анализа как самостоятельный B2B-сегмент.
Балльная оценка гипотез не применялась. Приоритет определён по трём характеристикам, каждая из которых рассчитана по данным или получена статистической проверкой: размер затрагиваемого сегмента, величина подтверждённого эффекта и объём доработки.
| ID | Гипотеза | Сегмент | Пользователей | Подтверждённое основание |
|---|---|---|---|---|
| H1 | Ранний переход в каталог: CTA после регистрации | все новые регистрации | 25 000 | конверсия 9.95% против 1.38%, различие +8.57 п.п., p < 0.001 |
| H2 | Упрощение шага 2 онбординга на мобильных | мобильные устройства | 13 736 | отвал 41.8% на шаге 2; онбординг завершают 28.5% против 37.6% на desktop, p = 0.015 |
| H3 | Догоняющая коммуникация после пейволла | дошедшие до пейволла | 4 086 | у 10% платящих решение о покупке растянуто более чем на 36 часов |
| H4 | Персонализация лендингов под каналы | платный поиск | 7 506 | различие конверсии между каналами незначимо, p = 0.545 |
Экспериментом проверяется H1. Это единственная гипотеза, затрагивающая всю новую аудиторию: охват остальных ограничен сегментами от 16.3% до 54.9% пользователей. Она опирается на наибольшее из подтверждённых различий — следующее по величине, между устройствами, составляет +0.68 п.п., то есть в двенадцать раз меньше. Реализация требует размещения одного элемента интерфейса, тогда как H2 предполагает переработку мобильного сценария.
Гипотеза H4 отклонена по результатам статистической проверки: различия между каналами не выявлены, предмет оптимизации отсутствует. Гипотеза сохранена в реестре для фиксации основания отказа.
Гипотеза. Размещение CTA «Выбрать курс» на первом экране после регистрации увеличит долю пользователей, доходящих до каталога, и, как следствие, сквозную конверсию в оплату.
Дизайн. Стратифицированная рандомизация 50/50 по связке «канал + устройство + страна». Первичная метрика — конверсия в первую оплату, вспомогательная — доля дошедших до каталога. Уровень значимости 5%, мощность 80%.
Расчёт необходимого объёма выборки при базовой конверсии 4.59%:
| Относительный MDE | Целевая конверсия | На группу | Всего |
|---|---|---|---|
| +10% | 5.05% | 33 076 | 66 152 |
| +15% | 5.28% | 14 801 | 29 602 |
| +20% | 5.51% | 8 381 | 16 762 |
| +25% | 5.74% | 5 400 | 10 800 |
При 12 500 наблюдениях на группу тест обнаруживает эффекты от 15–20% и выше, меньшие эффекты остаются за пределами чувствительности.
Результаты.
| Метрика | Контроль (A) | Тест (B) | Прирост | 95% ДИ | p-value |
|---|---|---|---|---|---|
| Просмотр каталога | 37.66% | 44.83% | +7.17 п.п. | [+5.95; +8.39] | < 0.001 |
| Конверсия в оплату | 4.60% | 5.20% | +0.61 п.п. | [+0.07; +1.14] | 0.026 |
Проверки корректности эксперимента пройдены: SRM не выявлен (p = 0.89), группы сбалансированы по всем разрезам в пределах 50 ± 0.25 п.п.
Оценка по выручке. Метрика характеризуется тяжёлым хвостом: 95% нулевых значений, асимметрия 77, максимум 732 816 ₽. Бутстрап на 10 000 итераций по необработанной выручке даёт прирост 130.96 ₽ с интервалом [−73.32; +346.88] и p = 0.215, то есть вывод сделать невозможно. После винзоризации по 99-му перцентилю платящих прирост составляет 74.18 ₽, интервал [+7.44; +141.01], p = 0.028. t-тест Уэлча даёт сопоставимые выводы, следовательно, расхождение обусловлено не выбором критерия, а обработкой метрики.
Применимость CUPED. Наилучшая доступная ковариата коррелирует с выручкой на уровне 0.06, предел сокращения дисперсии составляет 0.4%. Причина методологическая: CUPED вычитает доэкспериментальное поведение того же пользователя, тогда как в эксперименте на новых регистрациях такая история отсутствует по определению. Контроль дисперсии обеспечивается стратификацией.
Сегментный анализ. Значимый результат зафиксирован только для платного поиска (прирост 1.48 п.п., p = 0.0036, поправка Холма 0.025), в остальных шести разрезах различия отсутствуют. Однако тест не планировался под сегменты, содержательное объяснение эффекта отсутствует, а на исторических данных каналы не различались. Сегментные результаты служат основанием для новых гипотез, но не для внедрения изменений.
1. Не внедрять изменение по текущим данным. Прирост конверсии зафиксирован, однако находится на границе значимости: нижняя граница доверительного интервала составляет 0.07 п.п. Требуется продлить набор наблюдений примерно до 30 тысяч на группу, что обеспечит надёжность вывода.
2. Зафиксировать правило обработки крупных платежей в дизайне эксперимента. Без винзоризации денежные метрики нечувствительны: несколько B2B-сделок перекрывают любой продуктовый эффект. Правило устанавливается до запуска теста, иначе результат подгоняется под ожидаемый.
3. Выделить крупные сделки в отдельный анализ. 24 пользователя обеспечивают почти четверть выручки, что представляет собой самостоятельный тип клиента, не подлежащий совместному учёту с обычными подписчиками.
4. Параллельно готовить гипотезу H2. Шаг 2 онбординга остаётся наиболее затратной точкой воронки и текущим экспериментом не затрагивается.
- Данные синтетические, эффект эксперимента заложен в модель. Ноутбук 04 демонстрирует процедуру анализа, а не доказывает гипотезу.
- Связь между просмотром каталога и оплатой в ноутбуке 03 получена наблюдением: пользователь, дошедший до каталога, изначально более мотивирован, и часть разрыва объясняется этим отбором.
- Порог винзоризации в эксперименте выбран после просмотра данных. В реальном тесте правило фиксируется до запуска.
- Метрика измеряет краткосрочную конверсию в первую оплату. Влияние раннего входа в каталог на удержание и повторные покупки не определено.
Python 3.12, pandas, NumPy, SciPy, Matplotlib, Seaborn, SQLite.