Product Metrics Sandbox — интерактивный симулятор продуктовых метрик на синтетических данных. Позволяет без доступа к боевым логам проверять гипотезы, оценивать LTV и отток, планировать A/B-тесты и считать юнит-экономику в безопасной среде с воспроизводимыми сценариями.
Инструмент генерирует правдоподобные данные о пользователях и платежах (с учётом каналов привлечения, сезонности и оттока), считает метрики и строит когорты. Всё обновляется при изменении параметров в боковой панели. Можно сохранять сценарии в JSON, экспортировать отчёты в HTML и вести историю экспериментов в локальном CSV — данные хранятся в папке data/ и не теряются при перезапуске.
Здесь можно добавить реальные скриншоты после запуска приложения.
| Описание | Плейсхолдер |
|---|---|
| Главный экран — карточки метрик (Total Users, Conversion Rate, ARPU, ARPPU, LTV 3m/6m, Paying Share, Churn Rate) и боковая панель с параметрами генерации |  |
| Вкладка «Когорты» — тепловая карта Revenue/Retention/Users по когортам и накопительный LTV |  |
| Вкладка «A/B тест» — сравнение групп, boxplot конверсий, калькулятор MDE и рекомендуемый размер выборки |  |
| Вкладка «Юнит-экономика» — CAC, Payback period, ROI по когортам |  |
История экспериментов и экспорт — таблица запусков из data/experiment_history.csv и кнопка экспорта отчёта в HTML |
 |
Аналитику и продукту полезно иметь такой симулятор, потому что:
- Без риска для продакшена можно «прокрутить» сценарии: как изменится LTV, если конверсия вырастет на 5%, или сколько пользователей нужно для A/B-теста с заданным MDE.
- Единый язык метрик — все считают ARPU, LTV, retention и churn по одним и тем же формулам; удобно для онбординга и согласования с командой.
- Воспроизводимость — один и тот же seed даёт одинаковые данные; сценарии сохраняются в JSON, отчёты — в HTML, история — в CSV.
- Скорость итераций — не нужно ждать выгрузок и пайпов; за минуту можно сравнить несколько гипотез и прикинуть юнит-экономику.
Симулятор не заменяет анализ реальных данных, но помогает заранее оценить порядки величин и необходимое качество данных.
- 📈 Метрики — Total Users, Conversion Rate, ARPU, ARPPU, LTV 3/6 месяцев, Paying Share, Churn Rate (30 дней) с тултипами и формулами.
- 📅 Когорты — тепловые карты Revenue / Retention (% вернувшихся к платежу) / Users; таблица retention; накопительный LTV по когортам.
- 🧪 A/B тест — сравнение контроль/тест, p-value и uplift; boxplot распределения конверсий; калькулятор MDE и рекомендуемый размер выборки.
- 💰 Юнит-экономика — CAC (в sidebar), Payback period, ROI по когортам за 6 месяцев.
- 💾 Сценарии — сохранение параметров в JSON в
data/scenarios/, загрузка из списка или загрузка своего JSON. - 📄 Экспорт отчёта — HTML с параметрами, метриками, выводами и графиками (Plotly); сохранение в
data/reports/и скачивание. - 📋 История экспериментов — запись в
data/experiment_history.csvпри нажатии «Обновить данные»; таблица и выгрузка CSV. - 🎲 Seed — поле в sidebar для воспроизводимой генерации; 0 = случайный seed каждый раз.
- 🌙 Тёмная тема — оформление в стиле GitHub Dark.
- Python 3.9+
- pip
# Клонируйте репозиторий (или перейдите в папку проекта)
cd product-sandbox
# Установите зависимости
pip install -r requirements.txt
# Запустите приложение
streamlit run app.pyПриложение откроется в браузере (обычно http://localhost:8501). Все данные (сценарии, отчёты, история) сохраняются в папке data/ в корне проекта.
- Задайте базовую конверсию (например, 12%) — это текущий уровень.
- Включите A/B тест и нажмите «Обновить данные».
- Во вкладке «A/B тест» посмотрите Uplift конверсии и p-value. Если p-value < 0,05, разница считается значимой.
- Используйте калькулятор MDE и рекомендуемый размер на группу, чтобы понять, при каком эффекте и при какой выборке ваш новый онбординг будет статистически различим.
- Задайте количество пользователей, конверсию, каналы привлечения и диапазон платежей так, чтобы они напоминали вашу целевую когорту.
- Включите сезонность, если когорта чувствительна к сезону (например, конец года).
- Во вкладке «Когорты» выберите тип Revenue или посмотрите график «Накопительный LTV» — по нему видно, как растёт LTV по месяцам жизни когорты.
- Карточки LTV 3 months и LTV 6 months на главном экране дают сводные значения для быстрой оценки.
- Включите A/B тест и задайте базовую конверсию (текущая конверсия в целевое действие).
- Нажмите «Обновить данные» и откройте вкладку «A/B тест».
- В блоке «Калькулятор MDE и размер выборки»:
- «Рекомендуемый размер на группу (для 20% lift)» — сколько пользователей нужно в контроль и тест, чтобы с высокой вероятностью увидеть прирост конверсии на 20%.
- «MDE при текущем размере выборки» — какой минимальный относительный прирост вы сможете обнаружить при текущем числе пользователей.
- Подстройте количество пользователей в sidebar и снова обновите данные, чтобы проверить разные объёмы выборки.
| Метрика | Определение |
|---|---|
| Total Users | Общее количество зарегистрированных пользователей в выборке. |
| Conversion Rate | Доля пользователей, совершивших целевое действие (конверсию), %. |
| ARPU | Average Revenue Per User — сумма всех платежей / количество пользователей, ₽. |
| ARPPU | Average Revenue Per Paying User — сумма платежей / количество платящих, ₽. |
| LTV 3/6 months | Средний доход с пользователя за первые 3 или 6 месяцев жизни когорты, ₽. |
| Paying Share | Доля пользователей с хотя бы одним платежом, %. |
| Churn Rate (30d) | Доля платящих, у которых последний платёж был более 30 дней назад, %. |
| CAC | Стоимость привлечения одного пользователя (задаётся вручную), ₽. |
| Payback period | Срок окупаемости CAC: CAC / средний месячный доход с пользователя, мес. |
| ROI по когортам | (LTV − CAC) / CAC × 100% за выбранный горизонт (например, 6 мес.). |
| MDE | Minimum Detectable Effect — минимальный относительный прирост конверсии, %, который можно обнаружить при заданной мощности (80%) и α=0,05. |
product-sandbox/
├── app.py # Главное приложение Streamlit
├── requirements.txt # Зависимости Python
├── README.md
├── data/ # Создаётся при первом запуске
│ ├── scenarios/ # Сохранённые сценарии (JSON)
│ ├── reports/ # Экспортированные HTML-отчёты
│ └── experiment_history.csv # История экспериментов
└── utils/
├── __init__.py
├── generators.py # Генерация пользователей, платежей, когорт (revenue, retention, users)
├── metrics.py # Расчёт метрик, A/B, MDE, payback, ROI по когортам
├── visualizations.py # Графики Plotly (heatmaps, LTV, A/B, boxplot, ROI)
└── storage.py # Сценарии, история, экспорт отчётов (data/)
- Поддержка загрузки своих CSV (users/payments) вместо только синтетики.
- Несколько сценариев A/B (не только control/test, но и варианты по каналам).
- Прогноз LTV (простая модель по когортам).
- Экспорт отчёта в PDF (через weasyprint или аналог).
- Настраиваемый период для Churn (7/14/30/90 дней).
- Сравнение двух сохранённых сценариев в одном отчёте.