← Back to portfolio Volta Neobank — Product Analytics preview
Stack
Pythonpandas / NumPySciPy / Statsmodelsscikit-learnMatplotlib / Seabornuv + ruff
Impact
  • +5.72pp KYC conversion (Z=5.82, p<0.0001), €656K/yr (44× ROI)
  • +9.2pp M3 retention, +€227K/yr incremental LTV
  • 4 data-driven user segments with per-segment monetization strategy
  • CUPED variance reduction + AA-test (type-I = 0.050) + Bonferroni correction
Source View on GitHub → Updated: Sep 5, 2026

Volta Neobank — Product Analytics

The 30-second version

  • Problem: KYC was the onboarding bottleneck — the largest relative drop-off (56.6% step conversion).
  • Fix: a KYC progress bar lifted conversion +5.72pp (p < 0.0001), above the +5pp MDE.
  • Money: €656K/yr business impact at 44× ROI.
  • Retention: the effect held — +9.2pp M3 retention, +€227K/yr incremental LTV.

The Case

«Volta» is a fictional neobank that was losing users during onboarding. Marketing saw traffic, product saw activation, support saw tickets. Every team had its own number — and none of them explained where the money was leaking. We started with one question: which onboarding step is critical?

We answered it with four projects wired into a single discover → validate → measure → optimize loop. Each project is a piece of evidence that narrows the case. All data is synthetic, generated deterministically (seed), and reproduced from code: any conclusion can be re-checked by re-running, not taken on faith.

Evidence #1 — Funnel: where the leak is

The first piece of evidence is the onboarding funnel down to the first productive action. The main leak was in KYC — the verification step: the largest relative drop-off (56.6% step conversion). Registration loses more in absolute terms (2,682 users, 73.2% step conv), but KYC is more expensive: the user has already made it halfway and still leaves.

Hypothesis: the form is too long and there is no intermediate confirmation.

Funnel Analysis — case file

Evidence #2 — A/B: does the fix work

A snapshot is not proof: we validated the funnel finding as an experiment, not a slice. Hypothesis: split KYC into steps with a progress bar.

Test design:

  • CUPED with “sessions before the test” as covariate — removed part of the noise, the sample did not grow
  • AA-test before launch: Type I error = 0.050 — the method does not imagine significance
  • Bonferroni across multiple metrics — multiplicity control
  • Ship-gate: ship only if significance ∧ lift ≥ MDE ∧ no SRM

Verdict: control 55.8% → treatment 61.5%, +5.72pp, p < 0.0001, 95% CI [+3.78%, +7.66%], above the +5pp MDE → ship. At a realistic audience this is ≈ €656K/yr at 44× ROI.

A/B Testing — case file

Evidence #3 — Retention: does the effect hold

Shipping is not the end: we checked the effect on retention with cohort triangles (signup month × age) instead of “the average across everyone”. Along the diagonal: cohorts with the new onboarding hold M3 retention at +9.2pp over older cohorts → +€227K/yr incremental LTV. The new onboarding improves both the first week (faster time-to-value) and month 3 (less churn after the “honeymoon”). Without triangles, this conclusion would hide behind the average.

Retention & Cohort — case file

Evidence #4 — Segmentation: who pays

The effect held — the remaining question was who these users are and how to monetize them. StandardScaler + KMeans, data-driven K: 4 segments — Power 12% / Growth 24% / Casual 32% / Dormant 32%. Lorenz: 12% of users drive 41% of revenue; 68% → 92%. Migration scenarios: up to +€310K/yr.

User Segmentation — case file

The Verdict

A loop of four projects beats isolated analyses: the KYC fix found in the funnel was validated in the A/B test, confirmed in retention, and translated into money through segmentation. The core is the three-condition ship-gate (significance ∧ lift ≥ MDE ∧ no SRM): it protects against shipping statistically-significant but business-insignificant changes. Order matters more than numbers: calibrate the instrument first (AA-test, CUPED), then conclude.

Case File: repository expansion

The repo has grown from 4 core projects to 17 (12 analytical domains + Market & Jobs). Additional projects:

# Project Key finding
5 Churn Prediction RF +0.03 ROC-AUC over LR; top driver = inactivity
6 RFM Analysis 6 lifecycle segments
7 CLV Modeling 3 methods: historical / retention-curve / Gamma-Gamma
8 Marketing Attribution First/last/linear/Shapley — referral leads
9 Anomaly Detection Z-score/IQR/Isolation Forest, scored vs ground truth
10 Spend Analysis Category/channel breakdown, decline rate, monthly trend
11 Support & Churn Churn by tickets, unresolved, CSAT band
12 NPS Trends Monthly NPS, drivers, promoter mix
13 JTBD × Cohorts Dormant = UX friction (Digital Newcomers 45+), not “no job”
14 Unit Economics Travelers lose €/tx; break-even needs FX cost 1.0%→0.55%
15 Premium Upsell Anchor 17% vs Digital Newcomers 45+ 2% — value prop doesn’t land
16 45+ KYC Deep-Dive 45+ lift +0.6pp (ns) vs 35-44 +10pp — friction is trust, not UX
17 Referral Segments Anchor 29.6% vs Digital Newcomers 4.8% — value prop doesn’t transfer

Data & Method

Data: synthetic, seeded generators (generate_*.py) → reproducible CSVs. The funnel dataset is committed; the rest are generated on demand.

Per-project methodology:

  1. Funnel — step conversion, absolute/relative drop-off, Chi-square test across channels. Registration loses the most users in absolute terms (2,682, 73.2% step conv); KYC Complete has the largest relative drop-off (56.6% step conv). Referral converts 11.7pp better than paid social; iOS beats Android at every step (13.6% vs 11.7% end-to-end).

  2. A/B (KYC progress bar) — sample size calculation, SRM check (p=1.00), bootstrap CI, multiple-comparison correction (Bonferroni/Holm/BH), AA-test under H₀ (type-I = 0.050), CUPED (control-only θ), sensitivity at MDE. Control 55.8% → treatment 61.5%, +5.72pp, 95% CI [+3.78%, +7.66%], exceeds the +5pp MDE. Ship-gate: p<0.05 ∧ lift≥MDE ∧ no SRM → ship. 6/11 naively-significant segments, 4/11 after Bonferroni.

  3. Retention — cohort curves, pre/post Welch t-test + Cohen’s d, plan-specific LTV (ARPU × retention decomposition). M1 retention +10pp step-change, M3 +9.2pp.

  4. Segmentation — StandardScaler + KMeans, data-driven K (marginal-gain elbow, silhouette plateau K=2–4, collapse at K=5). Segments: Power 12% / Growth 24% / Casual 32% / Dormant 32%. Lorenz: 12% of users → 41% of revenue; 68% → 92%. Migration scenarios: +€26K/mo (€310K/yr).

Code structure: shared utils/common.py (setup(), print_section(), CONSTANTS, data_path()), functions + main() — importing a module does not run the analysis. Excel reports via openpyxl.

Impact

  • KYC conversion +5.72pp (p<0.0001, exceeds MDE) → business impact €656K/yr (44× ROI on €15K dev cost).
  • M3 retention +9.2pp+€227K/yr incremental LTV from the KYC fix.
  • 4 segments with per-segment strategy and up to +€310K/yr monetization via migration.
  • Reproducible methodology — CUPED, AA-test, Bonferroni, sensitivity at MDE; 4 recommended A/B tests to validate the strategy.
  • 17 projects — 12 analytical domains + Market & Jobs (JTBD): from funnel to referral segments.

Documentation

Case study

Problem

The neobank was losing users during onboarding, but it was unclear which step was critical and whether a fix would actually hold. Isolated analyses produced local numbers with no product-level connection.

Approach

Four projects wired into a single discover → validate → measure → optimize loop: funnel found the KYC bottleneck, an A/B test with CUPED + AA-test + Bonferroni validated a progress-bar fix under a three-condition ship-gate (significance ∧ lift≥MDE ∧ no SRM), retention confirmed the effect held, and segmentation translated it into revenue.

Result

The KYC fix delivered +5.72pp conversion and €656K/yr (44× ROI), the effect held in retention (+9.2pp M3, +€227K/yr LTV), and segmentation showed 12% of users drive 41% of revenue — migration is worth up to +€310K/yr. The reproducible methodology protects against shipping statistically-significant but business-insignificant changes.

+5.72pp KYC conversion lift
€656K/yr Annual revenue
44× ROI
+9.2pp M3 retention

Charts

Source: github.com/NikitaBoyarkin/volta-banking: onboarding funnel counts from committed data/volta_funnel_data.csv (10,000 users); channel end-to-end conversion computed from the same CSV; A/B (KYC progress bar), retention and segmentation figures follow the published project narrative (README + part pages)

Volta onboarding funnel

End-to-end onboarding funnel from app install to first transaction (10,000 installs). Bar width is proportional to the number of users who reached each stage. KYC Complete has the lowest step conversion; Registration loses the most users in absolute terms.

App Install: 10000 (100% от макс.) App Install 10000 Registration: 7318 (73.2% от макс.) Registration 7318 KYC Start: 4917 (49.2% от макс.) KYC Start 4917 KYC Complete: 2781 (27.8% от макс.) KYC Complete 2781 Card Ordered: 1993 (19.9% от макс.) Card Ordered 1993 First TX: 1269 (12.7% от макс.) First TX 1269
Key takeaways
  • KYC Complete is the critical bottleneck: 56.6% step conversion (2,781 of 4,917) — the largest relative drop-off at a single stage.
  • Registration loses the most in absolute terms: 2,682 users at 73.2% step conversion — a candidate for a targeted onboarding fix.

End-to-end conversion by acquisition channel

Share of each channel's users who progressed from install to first transaction (first_tx). Referral converts best, paid social worst. iOS outpaces Android at every funnel stage.

0 5 10 15 20 Referral — first_tx: 17.8 17.8 Email — first_tx: 16.1 16.1 Organic — first_tx: 14.6 14.6 App Store — first_tx: 8.2 8.2 Paid Social — first_tx: 6.1 6.1 Referral Email Organic App Store Paid Social Channel End-to-end conversion, %
Key takeaways
  • Referral converts +11.7pp better than paid social (17.8% vs 6.1%) — the channel-growth priority is clear.
  • iOS leads Android end-to-end: 13.6% vs 11.7% — a consistent gap at every funnel stage.

A/B: KYC conversion, control vs treatment

Primary metric of the experiment — KYC completion (KYC Start → KYC Complete). Hypothesis: split KYC into steps with a progress bar. MDE = +5pp; ship-gate: significance ∧ lift ≥ MDE ∧ no SRM.

0 20 40 60 80 Control — kyc_completed: 55.8 55.8 Treatment — kyc_completed: 61.5 61.5 Control Treatment Group KYC completion, %
Key takeaways
  • Control 55.8% → treatment 61.5%: +5.72pp (Z=5.82, p<0.0001), 95% CI [+3.78%, +7.66%] — above the +5pp MDE → ship.
  • The methodology guards against false positives: CUPED (control-only θ), AA-test (type-I = 0.050), Bonferroni keeps 4/11 segments significant.

Retention: cohorts before and after the KYC fix

Average retention of pre-fix cohorts (2024-01..2024-08) vs post-fix cohorts (2024-09..2024-12). Post-fix cohorts hold a higher curve from M1 to M6 — the effect does not fade.

0 20 40 60 80 Pre-fix M1 — Pre-fix: 51.8 M2 — Pre-fix: 38.1 M3 — Pre-fix: 30.7 M4 — Pre-fix: 25.3 M5 — Pre-fix: 22.5 M6 — Pre-fix: 19.9 Post-fix M1 — Post-fix: 63.6 M2 — Post-fix: 48.5 M3 — Post-fix: 39.9 M4 — Post-fix: 35.7 M5 — Post-fix: 32.3 M6 — Post-fix: 32.1 M1 M2 M3 M4 M5 M6 Months since signup Retention, % Pre-fix Post-fix
Key takeaways
  • M3 retention: 30.7% → 39.9% (+9.2pp) — the KYC-fix effect holds rather than collapsing after the honeymoon period.
  • The gap widens with cohort age: at M6 post-fix cohorts hold 32.1% vs 19.9% pre-fix — higher and more stable retention.

Segments: user share vs revenue share

KMeans segmentation (StandardScaler + data-driven K=4). Comparing each segment's share of users vs share of monthly revenue. Power Users — 12% of users but ~41% of revenue.

0 20 40 60 Power — Users: 12 12 Growth — Users: 24 24 Casual — Users: 32 32 Dormant — Users: 32 32 Power — Revenue: 40.5 40.5 Growth — Revenue: 32.9 32.9 Casual — Revenue: 18.8 18.8 Dormant — Revenue: 7.8 7.8 Power Growth Casual Dormant Segment Share, % Users Revenue
Key takeaways
  • Power Users — 12% of users and 40.5% of revenue: ~3.4x concentration — the most valuable segment for premium and upsell strategies.
  • Lorenz concentration: 12% of users drive 41% of revenue, 68% drive 92%: cross-segment migration scenarios are worth up to +€310K/yr.

Detailed breakdowns

See also

Connection map

Projects, posts and topics connected to this one. Hover a node to see its name; click to open.