← К портфолио TaskFlow — PostHog Product Analytics Pipeline preview
Ситуация
Аналитическое портфолио обычно начинается с готового CSV; здесь работа стартует раньше — с инструментирования приложения
Задача
Определить события без утечек PII, довести их до аналитического инструмента и превратить в решения
Действия
Каталог событий и скрабинг PII; A/B с chi-square, uplift, Wilson CI и SRM; SQL-зеркало метрик, Streamlit-дашборд, CI и Docker
Результат
Полный цикл аналитики: 7 анализов, типизированный каталог событий без утечек PII, метрики воспроизводимы и в Python, и в SQL
Стек
PythonPostHogFastAPIStreamlitpandas / matplotlibpytest / ruffDocker
Исходники Смотреть на GitHub → Репозиторий приватный — доступ по запросу Обновлено: Sep 15, 2026
Содержание
  1. Ситуация
  2. Задача
  3. Действия
  4. Пайплайн
  5. Что демонстрирует
  6. Результат
  7. Ограничения
  8. Документация

TaskFlow — PostHog Product Analytics Pipeline

Ситуация

Большинство аналитических портфолио начинаются с готового CSV. Этот проект начинается раньше — с инструментирования приложения: определить события без утечек PII, довести их до аналитического инструмента и превратить сырые события в решения. Пайплайн проходит весь цикл — генерация трафика, захват событий, анализ, дашборд и деплой.

Задача

От меня требовалось показать этот ранний участок работы: от решения, какие события вообще нужны, до момента, когда по ним можно принимать продуктовые решения.

Действия

Пайплайн

app/                Demo SaaS (FastAPI + Jinja2): routes + server-side capture
  analytics/        typed event catalog · PostHog wrapper (PII scrub) · feature flag
scripts/            simulate_events.py — 30 days of realistic funnel traffic
analysis/           funnel · cohort · A/B · revenue/LTV · time-to-convert · feature-usage · SQL
dashboard/          interactive Streamlit dashboard

Что демонстрирует

  • Инструментирование: типизированный каталог событий как единый источник правды; server-side capture; скрабинг PII.
  • A/B: feature-flag → вариант онбординга; chi-square, uplift, Wilson CI, проверка SRM.
  • Метрики: funnel, Day-N cohort retention, time-to-convert, revenue/LTV, first-feature → upgrade.
  • SQL-зеркало: те же метрики как SQL — референс для BI и собеседований.
  • Инженерка: pytest + ruff в CI, Dockerfile, render.yaml для one-click deploy.

Результат

Ценность — в полноте цикла. Типизированный каталог событий и скрабинг PII отделяют production-инструментацию от демо: события определены в одном месте, PII не утекает, а метрики воспроизводимы и в Python, и в SQL. Один репозиторий покрывает весь lifecycle аналитики — instrument → generate → analyze → dashboard → deploy.

Ограничения

Трафик генерирует симулятор, а не реальные пользователи, поэтому числа анализов иллюстрируют корректность пайплайна, а не продуктовые инсайты. Ценность — в дисциплине инструментирования и в полном цикле, где каждый шаг воспроизводим.

Документация

Аналитика

Данные: github.com/NikitaBoyarkin/posthog-saas-analytics: data/raw/events.jsonl (committed snapshot, 14,764 events / 2,000 users) re-analyzed with `uv run python analysis/report.py` -> reports/posthog_analysis_report.md (funnel, retention, A/B, revenue); daily-active-users computed with pandas from data/raw/events.jsonl

Воронка активации

Последовательная воронка: каждый шаг считает только пользователей, совершивших его после предыдущего. До активации (ключевое действие) доходит 32.8 % от всех, до апгрейда — 5.3 %.

signup_started: 2000 (100% от макс.) signup_started 2000 signup_completed: 1709 (85.5% от макс.) signup_completed 1709 onboarding_completed: 1082 (54.1% от макс.) onboarding_completed 1082 core_action_performed: 656 (32.8% от макс.) core_action_performed 656 upgrade_completed: 107 (5.4% от макс.) upgrade_completed 107
Выводы
  • Самый резкий отвал — на шаге upgrade_completed: конверсия с предыдущего шага 16.3 %, до апгрейда доходит лишь 107 из 2000 пользователей (5.3 %).
  • Онбординг теряет 36.7 % прошедших регистрацию (1709 -> 1082), а ключевое действие выполняют 60.6 % завершивших онбординг.

Удержание когорт по дням (D0–D6)

Когорта — день регистрации; удержание — доля когорты, совершившая core_action_performed на N-й день. Показаны 14 последних когорт снапшота и первые 7 дней; все значения реальные.

2026-09-01 2026-09-02 2026-09-03 2026-09-04 2026-09-05 2026-09-06 2026-09-07 2026-09-08 2026-09-09 2026-09-10 2026-09-11 2026-09-12 2026-09-13 2026-09-14 D0 D1 D2 D3 D4 D5 D6 2026-09-01 · D0: 32.7% 2026-09-01 · D1: 9.1% 2026-09-01 · D2: 14.5% 2026-09-01 · D3: 10.9% 2026-09-01 · D4: 9.1% 2026-09-01 · D5: 14.5% 2026-09-01 · D6: 12.7% 2026-09-02 · D0: 40.3% 2026-09-02 · D1: 12.9% 2026-09-02 · D2: 12.9% 2026-09-02 · D3: 14.5% 2026-09-02 · D4: 9.7% 2026-09-02 · D5: 16.1% 2026-09-02 · D6: 17.7% 2026-09-03 · D0: 37.9% 2026-09-03 · D1: 18.2% 2026-09-03 · D2: 16.7% 2026-09-03 · D3: 13.6% 2026-09-03 · D4: 10.6% 2026-09-03 · D5: 13.6% 2026-09-03 · D6: 12.1% 2026-09-04 · D0: 37% 2026-09-04 · D1: 14.8% 2026-09-04 · D2: 14.8% 2026-09-04 · D3: 20.4% 2026-09-04 · D4: 20.4% 2026-09-04 · D5: 9.3% 2026-09-04 · D6: 13% 2026-09-05 · D0: 33.9% 2026-09-05 · D1: 16.1% 2026-09-05 · D2: 7.1% 2026-09-05 · D3: 7.1% 2026-09-05 · D4: 8.9% 2026-09-05 · D5: 8.9% 2026-09-05 · D6: 8.9% 2026-09-06 · D0: 41.5% 2026-09-06 · D1: 18.9% 2026-09-06 · D2: 20.8% 2026-09-06 · D3: 13.2% 2026-09-06 · D4: 18.9% 2026-09-06 · D5: 17% 2026-09-06 · D6: 22.6% 2026-09-07 · D0: 34% 2026-09-07 · D1: 14.9% 2026-09-07 · D2: 8.5% 2026-09-07 · D3: 8.5% 2026-09-07 · D4: 17% 2026-09-07 · D5: 23.4% 2026-09-07 · D6: 10.6% 2026-09-08 · D0: 40% 2026-09-08 · D1: 22.2% 2026-09-08 · D2: 22.2% 2026-09-08 · D3: 20% 2026-09-08 · D4: 15.6% 2026-09-08 · D5: 8.9% 2026-09-08 · D6: 0% 2026-09-09 · D0: 41.4% 2026-09-09 · D1: 12.1% 2026-09-09 · D2: 15.5% 2026-09-09 · D3: 15.5% 2026-09-09 · D4: 20.7% 2026-09-09 · D5: 0% 2026-09-09 · D6: 0% 2026-09-10 · D0: 41.8% 2026-09-10 · D1: 19.4% 2026-09-10 · D2: 20.9% 2026-09-10 · D3: 13.4% 2026-09-10 · D4: 0% 2026-09-10 · D5: 0% 2026-09-10 · D6: 0% 2026-09-11 · D0: 41.5% 2026-09-11 · D1: 24.5% 2026-09-11 · D2: 17% 2026-09-11 · D3: 0% 2026-09-11 · D4: 0% 2026-09-11 · D5: 0% 2026-09-11 · D6: 0% 2026-09-12 · D0: 38.9% 2026-09-12 · D1: 22.2% 2026-09-12 · D2: 0% 2026-09-12 · D3: 0% 2026-09-12 · D4: 0% 2026-09-12 · D5: 0% 2026-09-12 · D6: 0% 2026-09-13 · D0: 33.3% 2026-09-13 · D1: 1.8% 2026-09-13 · D2: 0% 2026-09-13 · D3: 0% 2026-09-13 · D4: 0% 2026-09-13 · D5: 0% 2026-09-13 · D6: 0% 2026-09-14 · D0: 41.2% 2026-09-14 · D1: 3.9% 2026-09-14 · D2: 0% 2026-09-14 · D3: 0% 2026-09-14 · D4: 0% 2026-09-14 · D5: 0% 2026-09-14 · D6: 0% 0 100%
Выводы
  • Удержание низкое и «прыгучее»: на D0 — 32.7–41.8 %, а на D1 падает до 1.8–24.5 % — активность пользователей нерегулярная, а не ежедневная.
  • На D4–D6 видна треугольная форма матрицы: когорты 2026-09-13 (D1 = 1.8 %) и 2026-09-14 (D1 = 3.9 %) показывают минимум удержания среди последних когорт.

A/B-тест онбординга: control vs new_onboarding

Сокращённый онбординг против контрольной версии. Завершение онбординга считается по когорте начавших: 55.9 % у control против 70.8 % у new_onboarding.

0 500 1000 control — started: 857 857 new_onboarding — started: 852 852 control — completed: 479 479 new_onboarding — completed: 603 603 control new_onboarding Вариант Пользователи started completed
Выводы
  • Относительный рост завершения — +26.6 % (55.9 % -> 70.8 %), хи-квадрат 40.10, p = 0.0000 — эффект статистически значим.
  • 95 % ДИ разницы (new - control) — [8.4, 21.2] п.п., а SRM-проверка сплита проходит (p = 0.9037): выборка не смещена, можно раскатывать вариант.

Ежедневно активные пользователи (DAU)

Уникальные пользователи в день по снапшоту событий за 30 дней трафика. Последние дни (2026-09-14, 2026-09-15) — хвост окна симуляции с неполными сутками.

0 100 200 300 dau 2026-08-16 — dau: 69 2026-08-17 — dau: 63 2026-08-18 — dau: 74 2026-08-19 — dau: 86 2026-08-20 — dau: 90 2026-08-21 — dau: 92 2026-08-22 — dau: 114 2026-08-23 — dau: 134 2026-08-24 — dau: 125 2026-08-25 — dau: 137 2026-08-26 — dau: 147 2026-08-27 — dau: 150 2026-08-28 — dau: 161 2026-08-29 — dau: 164 2026-08-30 — dau: 170 2026-08-31 — dau: 198 2026-09-01 — dau: 179 2026-09-02 — dau: 180 2026-09-03 — dau: 217 2026-09-04 — dau: 215 2026-09-05 — dau: 200 2026-09-06 — dau: 229 2026-09-07 — dau: 227 2026-09-08 — dau: 236 2026-09-09 — dau: 230 2026-09-10 — dau: 242 2026-09-11 — dau: 271 2026-09-12 — dau: 284 2026-09-13 — dau: 267 2026-09-14 — dau: 70 2026-08-16 2026-08-17 2026-08-18 2026-08-19 2026-08-20 2026-08-21 2026-08-22 2026-08-23 2026-08-24 2026-08-25 2026-08-26 2026-08-27 2026-08-28 2026-08-29 2026-08-30 2026-08-31 2026-09-01 2026-09-02 2026-09-03 2026-09-04 2026-09-05 2026-09-06 2026-09-07 2026-09-08 2026-09-09 2026-09-10 2026-09-11 2026-09-12 2026-09-13 2026-09-14 Дата Активные пользователи
Выводы
  • DAU вырос с 69 (2026-08-16) до пика 284 (2026-09-12) — рост в 4.1 раза за 30 дней окна.
  • Рост стабилен: медианный прирост между соседними днями +8 %, а дни 2026-09-14 (70) и 2026-09-15 (4) — это неполные сутки хвоста симуляции.

Смотрите также

Карта связей

Проекты, записи и темы, связанные с этим проектом. Наведите на узел, чтобы увидеть название; клик — открыть.