Posts

Showing posts from July 29, 2026

I Built a BFIU-Compliant AML Detection System in Python (Here's Why the Kaggle Approach Doesn't Work

I Built a BFIU-Compliant AML Detection System in Python (Here's Why the Kaggle Approach Doesn't Work)

Most AML tutorials end with a confusion matrix and a 99% accuracy score. Here's why that doesn't work — and what I built instead. I've been working in fintech compliance data for a while. The one thing I kept noticing: every "fraud detection project" on GitHub or Kaggle uses the same dataset — the UCI credit card fraud dataset from 2013. It has 284,000 rows, 30 features labeled V1-V28, and approximately zero explanatory value for anyone who wants to understand how financial crime actually works. So I built something different. The problem with the standard approach Real transaction monitoring engines don't work like Kaggle competitions. They don't take a CSV, train a model, and output a probability score. They work like this: A rule engine runs first — deterministic, auditable, regulatory-cited rules that generate alerts Those alerts get scored and triaged by risk tier An ML layer reduces false positives among the high-risk alerts ...

How I Uncovered the Dark Side of AML Models: The Urgent Need for Explainability

Image
Photo by Juno Jo on Unsplash I still remember the day our AML system flagged over 10,000 transactions as suspicious, only to find out that 90% of them were false positives. The regulator was breathing down our necks, and our team was under immense pressure to explain each and every one of those flags. That's when I realized the harsh truth: our AML models, despite being highly accurate on paper, were black boxes that nobody could interpret. The Hidden Problem In Bangladesh, where the BFIU guidelines are strict and the MFS threshold monitoring is a challenge, AML models need to be more than just accurate. They need to be explainable. But standard approaches often fall short. I've seen it time and time again: a model is trained on a dataset, it performs well on the test set, and then it's deployed. But when it comes to explaining why a particular transaction was flagged, the model falls silent. Technical Breakdown & Logic Flow To tackle this problem, I decided to take ...