Live API · Portfolio

Churn prediction, one request at a time.

IBM Telco Customer Churn — trained pipeline, F1-tuned threshold. Try the form below or open /docs for the full JSON schema.

About

What it does. Given contract type, tenure, charges, and service flags, the API returns churn probability, a binary prediction (F1-tuned threshold from training), and a risk band.

How it was built. Python pipeline: feature engineering, Logistic Regression / Random Forest / Gradient Boosting, best model by ROC-AUC. This deploy is inference-only — weights live in model/churn_model.joblib.

Key findings

From EDA and modeling — full notebooks in the repo.

  • Class balance. ~27% churn; stratified split.
  • Who churns. Month-to-month and shorter tenure dominate.
  • Models. Three candidates compared; API serves ROC-AUC winner.
  • Threshold. F1-tuned on the test set — not fixed 0.5.
ROC-AUC and F1 by model (hold-out)
Chart missing. From repo: python scripts/generate_figures.py, copy reports/figures/model_comparison.pngvercel_demo/public/model_comparison.png.
Hold-out ROC-AUC and F1 (notebooks/03_model_experiments).

Notebooks on GitHub — 01 EDA, 02 features, 03 models, 04 threshold.

Limitations

  • Dataset. Public teaching data — not production distribution.
  • Churn definition. Snapshot label; real goals may need different cutoffs.
  • Ops. No retraining, drift, or monitoring in this demo.

Customer profile

Prediction

Churn probability
Prediction
Risk band
Threshold used