Monish Gosar
Back to projects

Money Mule Detection

Stacked ensemble of Random Forest, XGBoost, and CatBoost over 100,000+ transactions. 0.987 F1 with SHAP and LIME explanations a reviewer can check.

PythonXGBoostCatBoostSHAP

The problem

Money mules move illicit funds through ordinary-looking accounts. They are rare among legitimate users, so a model can score high accuracy by simply ignoring them.

Flagging an account is a consequential call, so a reviewer needs to see why a transaction was flagged, not just a score.

Architecture

A stacked ensemble: Random Forest, XGBoost, and CatBoost as base learners, combined by a meta-learner. SMOTE rebalances the classes during training.

SHAP and LIME sit beside the model and produce a per-decision explanation for each flag.

How it was built

Trained on 100,000+ transactions. The result is 0.987 F1, 99% accuracy, and a 0.0013 Brier score, so the probabilities are well calibrated as well as accurate.

Built for a hackathon, with explainability treated as a requirement from the start rather than an afterthought.

What’s next

  • Graph features: shared devices and counterparties are the strongest mule signal and a flat feature table misses them.
  • Drift monitoring and a feedback loop from reviewer decisions back into training.