MRR revenue bridge · waterfall
How the month's recurring revenue moved from opening to closing balance.
Cohort retention · heatmap
% of each monthly cohort still active over their first 6 months.
Churn rate by segment · horizontal bar
Where the leak is largest.
Revenue mix by plan · stacked area
How each plan tier contributes to MRR over time.
Segment health profile · radar
Annual vs monthly customers across five health dimensions.
The question
A subscription product was growing, but leadership couldn't tell whether growth was healthy or just outpacing a churn problem. The goal was a single dashboard that explained where revenue came from, where it leaked, and which customers were most at risk.
How I did it
- Worked the subscription ledger in SQL with window functions to roll up MRR and split out the new, expansion, contraction and churned movements behind the revenue bridge.
- Grouped customers into monthly cohorts in Python with pandas, then drew them as a retention heatmap so early churn stands apart from the customers who stick.
- Cut churn by plan, tenure and usage, and put segment health on a radar to see how annual and monthly customers really differ.
- Pulled it together in a Tableau dashboard covering retention, plan mix and the revenue most at risk.
What the analysis found
- Early life churn (first 60 days) drove most of the loss, the heatmap shows the steep drop at M1.
- Monthly, low usage customers churned at 2 to 3× the rate of annual users and scored lowest on every radar dimension.
- Expansion revenue pushed net revenue retention above 100%, masking the early churn problem in headline numbers.
Recommendation: Fix the first 60 day onboarding for monthly low usage accounts and nudge healthy users to annual plans. Modeled impact: cutting early churn by a third lifts LTV and adds roughly 4 to 5% to annual recurring revenue.
Tools
SQL · Python · Excel · Tableau / Power BI
▸Built on a simulated SaaS subscription dataset so the method is fully on show without real customer data.