Themis
liveLooks at a loan applicant's payment history and decides whether to approve them, with the cutoff tuned so the bank loses the least money overall rather than just being right most often.
View source on GitHubCalibrated XGBoost tuned on an asymmetric cost matrix, with SHAP explainability and a Fairlearn fairness audit. Full MLOps stack: MLflow experiment tracking and a Dockerized FastAPI service, deployed and verified end to end.
The demo calls the live FastAPI backend, not a browser model. The free-tier host sleeps when idle, so the first prediction after a quiet spell can take up to a minute.
Results
Tuned on an asymmetric cost matrix where a missed defaulter costs ~14x a wrongly rejected applicant. Every number below is on the held-out test set (5,993 accounts).
| Model | ROC-AUC | Cost @ tuned threshold | Saved vs. naive |
|---|---|---|---|
| Logistic regression (baseline) | 0.755 | NT$40.7M | NT$50.0M |
| XGBoost (deployed) | 0.773 | NT$37.9M | NT$54.0M |




Architecture
Data to a served decision: MLflow tracks training runs, the API serves a static exported model, and an Evidently drift report can trigger a retrain.

