Skip to content
Pythonscikit-learnMLflowDockerFastAPISHAP

Telecom Churn Prediction

Production-grade telecom churn prediction system: a config-driven scikit-learn pipeline with SHAP explainability, MLflow experiment tracking and FastAPI serving, trained on real IBM customer data (ROC-AUC 0.883).

Problem

Telecom operators lose significant revenue when they can't identify at-risk customers early enough to act with a retention offer.

Solution

A config-driven scikit-learn pipeline trained on real IBM customer data (0.883 ROC-AUC), with SHAP explainability so retention teams see exactly why a customer is flagged, tracked in MLflow and served via a containerized FastAPI endpoint for real-time scoring.

Overview

Telecom operators can usually see churn only after a customer has already left. This project builds a system that flags the customers most likely to leave before they do, so a retention team can actually act on it.

How it works

A config-driven scikit-learn pipeline is trained on real IBM telecom customer data — contract type, tenure, monthly charges, service usage — and outputs a churn probability per customer. Rather than a black-box score, every prediction is paired with a SHAP explanation showing exactly which factors pushed that customer toward the “at risk” bucket, so a retention agent knows what to actually offer them. Experiments (features, hyperparameters, splits) are tracked in MLflow so results are reproducible, and the trained model is served through a containerized FastAPI endpoint for real-time scoring.

Result

The model reaches 0.883 ROC-AUC on held-out data, with explainability built in from day one rather than bolted on afterward.

More projects