Case study

DashboardSQLPower BIdbt

Revenue Retention Dashboard

Executive Power BI dashboard tracking net revenue retention across 1,200 B2B accounts, surfacing expansion and contraction by segment, cohort, and CSM. Became the source of truth for the weekly revenue review.

Case study
Variation 1/3
Question

How can revenue retention performance be tracked and understood at a glance?

Approach

Using SQL, Power BI, and dbt, the data was shaped into interactive views — executive Power BI dashboard tracking net revenue retention across 1,200 B2B accounts, surfacing expansion and contraction by segment,…

Result

Executive Power BI dashboard tracking net revenue retention across 1,200 B2B accounts, surfacing expansion and contraction by segment, cohort, and CSM.

Hover a row to edit · changes save to your portfolio

Revenue Retention Dashboard

Problem

Revenue leadership reviewed retention from three different spreadsheets that never agreed. Net revenue retention (NRR) was quoted as anywhere between 104% and 118% in the same meeting, and no one could explain which accounts were driving expansion versus quietly contracting.

Approach

I built a single account_revenue_monthly model in Snowflake, version-controlled with dbt, that reconciled the billing system, the CRM, and the usage database into one grain: one row per account per month. From there I designed a Power BI report with:

  • A waterfall of starting ARR → expansion → contraction → churn → ending ARR
  • Cohort retention curves sliceable by signup quarter, plan tier, and segment
  • Row-level security so each CSM only sees their book of business

I added dbt tests for the non-negotiables — no negative ARR, no account counted in two segments — so a broken upstream load fails loudly instead of silently skewing NRR.

Result

One agreed NRR number, refreshed every morning at 6 AM. The waterfall made it obvious that contraction — not logo churn — was the real drag on growth.

Impact

The expansion view flagged a cluster of mid-market accounts downgrading after a pricing change. The team intervened on the top 40 and recovered an estimated $610K in annualised revenue over the following two quarters.