Data Science
Customer Churn Early-Warning Model
Monthly churn scoring with reason codes delivered straight to account managers.
All projects

Pythonscikit-learnSHAPPostgres
Business problem
B2B accounts were churning without warning, and customer success had no prioritised list of who to save or why they were at risk.
Dataset
90k B2B accounts with 24 months of product usage, billing, support ticket and NPS history.
Methodology
- Framed churn as both a survival and a classification problem.
- Balanced classes with time-aware sampling to avoid leakage.
- Ensembled logistic regression and gradient boosting.
- Generated SHAP reason codes for every scored account.
Key findings
- 68% of churners were identifiable a full quarter ahead.
- Support-ticket sentiment outweighed usage decline as a signal.
- Risk clustered in accounts without an executive sponsor.
Recommendations
- Run a monthly save play on the top decile of risk.
- Route negative-sentiment tickets to senior support immediately.
- Require an executive sponsor on every renewal above $50k.