Volta — Retention & Cohorts
Situation
Shipping is not the end: the KYC-fix effect was checked on retention with cohort triangles (signup month × age) instead of ‘the average across everyone’.
Task
I owned the retention check and the choice of a method that does not blur the effect into one average.
Actions
I read the retention effect through cohort triangles rather than a flat base average — by signup month and cohort age, so the shift is visible over time.
- Cohort matrix. Cohort curves and an M0–M11 retention matrix: rows by signup month, columns by cohort age.
- Pre/post comparison. Welch t-test + Cohen’s d, bootstrap CIs at M1/M3/M6: split cohorts into before and after the KYC fix and compared retention at the key months.
- LTV by plan. Plan-specific LTV decomposed into ARPU × retention, to see what makes Premium worth more than Free.
- Robustness. Checked whether the gap holds at the later months, not only the first — the effect should not fade.
- Cohort cleaning. Dropped incomplete cohorts and short observation windows, so the step-change would not be an artifact of unequal period counts.
- Tooling. Python and pandas/NumPy for the cohorts, SciPy/Statsmodels for the tests, Matplotlib/Seaborn for the heatmap and curves; runs through uv + ruff.
Result
- Step-change: post-fix cohorts (2024-09+) hold M1 ≈ 61–67% vs 51–53% pre-fix.
- M3 +9.2pp; the effect does not fade — the gap persists at M6.
- Premium LTV = 4.3× Free (ARPU 2.66× × retention 1.62×).
- Portfolio effect: +€227K/yr incremental LTV.
Recommendations
- Target upgrades at high-intent Free users in the first 1–2 months — the biggest lever.
- Monitor cohort decay, not just average retention.
- Read the last diagonal cells with care (few observation periods).