Case study
Churn Early-Warning Model
Gradient-boosted model scoring every B2B account for 60-day churn risk, delivered weekly to the customer success team with the top three risk drivers per account in plain English.
Which enterprise accounts were about to churn — and could we see it coming in time to act?
Using Python, SQL, and Power BI, the data was explored and analyzed in depth — gradient-boosted model scoring every B2B account for 60-day churn risk, delivered weekly to the customer success team with…
Gradient-boosted model scoring every B2B account for 60-day churn risk, delivered weekly to the customer success team with the top three risk drivers per account in plain English.
Hover a row to edit · changes save to your portfolio
Problem
Customer success was reactive: they usually learned an account was unhappy when the cancellation email arrived. There was no systematic, early signal of risk.
Approach
I pulled 24 months of account-level signals in SQL — login frequency, seat utilisation, support ticket sentiment, time since last QBR, and invoice payment delays — and trained a gradient-boosted classifier (XGBoost) in Python with a strict time-based train/test split to avoid leakage.
Crucially, I shipped SHAP values alongside each score so the output wasn't a black box: every flagged account came with its top three human-readable risk drivers. The weekly scores landed back in Power BI next to the CSM's existing book.
Result
- 0.86 ROC-AUC on a held-out future quarter
- 71% precision on the highest-risk decile
- Adopted into the CS team's Monday workflow
Impact
Of the at-risk accounts flagged in the first two quarters, the team saved 38 of 52 it actively worked — protecting roughly $1.4M in ARR that historically would have churned without warning.