Skip to content

Nimos95/product-sandbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Product Metrics Sandbox

Python Streamlit Plotly

Product Metrics Sandbox — интерактивный симулятор продуктовых метрик на синтетических данных. Позволяет без доступа к боевым логам проверять гипотезы, оценивать LTV и отток, планировать A/B-тесты и считать юнит-экономику в безопасной среде с воспроизводимыми сценариями.


🎯 Концепция

Инструмент генерирует правдоподобные данные о пользователях и платежах (с учётом каналов привлечения, сезонности и оттока), считает метрики и строит когорты. Всё обновляется при изменении параметров в боковой панели. Можно сохранять сценарии в JSON, экспортировать отчёты в HTML и вести историю экспериментов в локальном CSV — данные хранятся в папке data/ и не теряются при перезапуске.


🖼 Скриншоты

Здесь можно добавить реальные скриншоты после запуска приложения.

Описание Плейсхолдер
Главный экран — карточки метрик (Total Users, Conversion Rate, ARPU, ARPPU, LTV 3m/6m, Paying Share, Churn Rate) и боковая панель с параметрами генерации ![Главный экран](docs/screenshot-dashboard.png)
Вкладка «Когорты» — тепловая карта Revenue/Retention/Users по когортам и накопительный LTV ![Когорты](docs/screenshot-cohorts.png)
Вкладка «A/B тест» — сравнение групп, boxplot конверсий, калькулятор MDE и рекомендуемый размер выборки ![A/B тест](docs/screenshot-ab.png)
Вкладка «Юнит-экономика» — CAC, Payback period, ROI по когортам ![Юнит-экономика](docs/screenshot-unit-economics.png)
История экспериментов и экспорт — таблица запусков из data/experiment_history.csv и кнопка экспорта отчёта в HTML ![История](docs/screenshot-history.png)

💡 Философия инструмента

Аналитику и продукту полезно иметь такой симулятор, потому что:

  • Без риска для продакшена можно «прокрутить» сценарии: как изменится 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/ в корне проекта.


📖 Примеры использования

Как проверить гипотезу об изменении онбординга

  1. Задайте базовую конверсию (например, 12%) — это текущий уровень.
  2. Включите A/B тест и нажмите «Обновить данные».
  3. Во вкладке «A/B тест» посмотрите Uplift конверсии и p-value. Если p-value < 0,05, разница считается значимой.
  4. Используйте калькулятор MDE и рекомендуемый размер на группу, чтобы понять, при каком эффекте и при какой выборке ваш новый онбординг будет статистически различим.

Как оценить LTV новой когорты

  1. Задайте количество пользователей, конверсию, каналы привлечения и диапазон платежей так, чтобы они напоминали вашу целевую когорту.
  2. Включите сезонность, если когорта чувствительна к сезону (например, конец года).
  3. Во вкладке «Когорты» выберите тип Revenue или посмотрите график «Накопительный LTV» — по нему видно, как растёт LTV по месяцам жизни когорты.
  4. Карточки LTV 3 months и LTV 6 months на главном экране дают сводные значения для быстрой оценки.

Как понять, сколько нужно пользователей для A/B теста

  1. Включите A/B тест и задайте базовую конверсию (текущая конверсия в целевое действие).
  2. Нажмите «Обновить данные» и откройте вкладку «A/B тест».
  3. В блоке «Калькулятор MDE и размер выборки»:
    • «Рекомендуемый размер на группу (для 20% lift)» — сколько пользователей нужно в контроль и тест, чтобы с высокой вероятностью увидеть прирост конверсии на 20%.
    • «MDE при текущем размере выборки» — какой минимальный относительный прирост вы сможете обнаружить при текущем числе пользователей.
  4. Подстройте количество пользователей в 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 дней).
  • Сравнение двух сохранённых сценариев в одном отчёте.

About

📊 Product Metrics Sandbox — интерактивный симулятор продуктовых метрик на синтетических данных.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages