ML fraud detection for African mobile money (PaySim). Interactive Streamlit dashboard with clean vs stress-test comparison.
# African Fintech Fraud Detection
An ML-powered fraud detection system built for the African mobile money landscape. This project uses a 3-model ensemble trained on PaySim (a peer-reviewed synthetic dataset modeled after real African mobile money transactions) and stress-tests it against realistic adversarial conditions that mirror production environments.
> **Live Dashboard** - View the interactive Streamlit app
## What This Project Does
Most fraud detection models score near-perfect on clean benchmarks. But production data is messy. Balances have rounding errors. Fraudsters evolve their tactics. Labels get misclassified during investigations. This project quantifies exactly how much that messiness costs you.
Context: This is a public demonstration of techniques I have applied in production. At AFKiT Technologies I built and deployed a fraud detection system for e-commerce transactions that reached 89% precision across more than 280,000 transactions. That work is not public, so this project rebuilds the approach on PaySim, an open peer-reviewed dataset, and pushes further into the question that mattered most in production: what happens to model performance when the data stops being clean.
The pipeline runs in two modes:
- **Clean mode** trains and evaluates on the original PaySim data. Near-perfect AUC. The kind of number that looks great in a slide deck but means nothing in production.
- **Noisy mode** injects four types of realistic corruption (balance inaccuracies, sophisticated fraudsters who leave partial balances, label noise from investigation errors, and amount perturbation) then re-trains and re-evaluates. AUC drops to ~0.80. Feature importance collapses. The model that dominated clean data (XGBoost) no longer beats a simpler Random Forest.
The gap between these two modes is the real finding. It tells you where the ceiling is and why better algorithms alone will not close it.
## Key Findings
| Metric | Clean Data | Noisy (Stress-Test) |
|-------- …