Synthetic data · portfolio project

Explore the numbers, and see what had to be corrected.

A funnel, retention curves, an A/B test and channel economics for a synthetic European B2B SaaS company. Every analysis was audited against the generator's known truth; the Audit log lists what was wrong and how it was fixed.

Compare by
Nested funnel for the selection
Step conversion by channel
Rate with 95% Wilson interval. Wide intervals mean small groups: do not read differences into them.
GroupnActivationPaid | activatedRetained | paid

Only customers observed for at least 90 days are included, and each stage requires the previous one. An earlier version divided three independent flags and reported a paid stage at 146% of the activated stage.

Survival curves by
Kaplan-Meier retention from day 30
Share of customers still active, among those who survived their first 30 days. Still-active customers are censored, not counted as retained.
Cohort retention heatmap
Rows are signup months, columns are months since signup.
Churn drivers: hazard ratios (Cox model)
Observed lift with 95% interval
MetricControlTreatmentpHolm pTruth in CI
Power calculator
Two-sided test of two proportions, normal approximation.
Power to detect that lift

Set the lift to the true conversion effect (4.5 points) and the sample to 490: power is about 55%, which is why this test often misses a real effect.

Replication study: re-running the experiment 5,000 times
Share of repeats that reach significance, and how much the significant ones overstate the true effect.
MetricTrue liftSignificant inMean lift when significantOverstatement
LTV : CAC by channel
Channel-specific ARPU and churn. The line marks break-even (1.0). Sliders re-run the calculation.
Payback: cumulative revenue per paying customer
2024 cohort, observed first 12 months, no extrapolation. Dashed line is CAC.
Channel table
ChannelCACARPU / moMonthly churnLTVLTV:CAC95% CI (baseline)

Intervals come from a bootstrap over paying customers at the default settings (100% margin, 36 months, no CAC change). CAC reflects the spend levels set in the generator, and organic channels carry only a small baseline spend, so their ratios are upper bounds.

AI report: measured groundedness
Every number in the AI-written report is checked against the evidence it may cite.

The checker misses fabricated numbers that coincide with another real number; entity-level matching would close that gap.

Survival model held-out check
Fit on 2024 signups, tested on 2025 signups.

What was found and fixed