Explainable, not just accurate

Student Retention Prediction

An end-to-end ML system that flags students at dropout risk early enough to actually intervene, with SHAP explanations for every prediction.

scikit-learnXGBoostLightGBMSHAPFastAPIStreamlit

By the numbers

137
Tests
100%
Coverage
$26B
Annual US dropout cost (the problem, not the fix)

What it actually does

The problem, and the shape of the fix

Student dropout costs higher-education institutions an estimated $26 billion annually in the US alone — and the standard institutional response is reactive: interventions trigger only after a student has already failed a course, missed a payment, or disappeared from attendance. By week 8–10 of a semester, the window for a meaningful intervention has often already closed.

This pipeline does feature engineering over enrollment/academic/engagement data, SMOTE to correct class imbalance, gradient-boosted models with probability calibration, and — critically — a SHAP explanation attached to every single prediction. A risk score alone tells an advisor nothing actionable; the specific factors behind it do.

Architecture

How data actually moves through it

Raw student data
enrollment, academic, engagement signals
Feature engineering + SMOTE
corrects class imbalance before training
Gradient-boosted model
XGBoost / LightGBM, probability-calibrated
FastAPI /predict
risk score
SHAP explain()
which factors drove it
Streamlit dashboard
advisor-facing view

Real facts, from the repo

Not marketing copy — checkable claims

i
Honest by design — here's exactly why this page is static
The model-serving stack (scikit-learn + XGBoost + LightGBM + SHAP + pandas) comfortably exceeds Vercel serverless Python's deployment size limit, and no pre-trained model artifact ships in the repo — data_generator.py builds synthetic training data locally, on purpose, since real student data obviously can't ship in a public repo. This page documents the real pipeline; the fastest way to see it run is the repo's own docker-compose up.