RavenStack Churn Decision Engine
Customer Churn &
Retention Engine
RavenStack wrapped up its pilot phase with ~500 accounts and a massive churn problem. I built an end-to-end ML pipeline that flags at-risk accounts 30 days before renewal so Customer Success knows exactly who to call and why.
The goal wasn't just to model historical churn in a notebook. It was to build something a Customer Success Manager could open in the morning and act on. I built an end-to-end pipeline connecting Google BigQuery, an XGBoost classification model, and a live Power BI dashboard to make that happen without relying on static spreadsheets.
The Methodology
1. Data Warehousing
I engineered a SQL pipeline in BigQuery that ingests five normalized tables. I used window functions to calculate complex behavioral features like inactivity, support friction, and satisfaction trends anchored to the dataset timeline.
2. Predictive Modeling
Missing a churner costs MRR, but sending a false alert just costs a 15-minute phone call. I applied scale_pos_weight to handle the severe class imbalance and aggressively optimized the XGBoost classifier for Recall.
3. Live Decision Engine
The model writes its predictions and SHAP explainability scores back to BigQuery. Power BI queries this live, mapping out a dynamic waterfall chart so a CSM can see exactly what behavioral metrics are pushing an account to cancel.
The Deliverables
Key Findings
Inactivity dominates everything.
Days since last usage consistently has the highest absolute SHAP values. An account that hasn't logged in for months is going to churn, period. CSAT surveys and support ticket resolution won't save them at that point.
$503K at risk from "happy" customers.
Accounts with high satisfaction scores (4–5) contributed over half a million dollars in at-risk MRR. Satisfaction scores are a lagging indicator; a high score just means a support interaction went well, not that the account is healthy.
Churn is behavioral, not plan-driven.
Enterprise customers churned at nearly the exact same rate as Basic customers. Upgrading accounts to higher tiers does not meaningfully reduce churn risk if the core engagement isn't there.