Posts

Showing posts from July 10, 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 ...

The Dirty Secret to Cleaning Transaction Data: My 8-Year AML Journey in Bangladesh

Image
Photo by Vital Sinkevich on Unsplash I still remember the night our AML system crashed from a false positive tsunami. It was a massive structuring ring, over BDT 100,000 in tiny transactions, slipping through our defenses. I had to act fast, or we'd face a BFIU audit. That's when I realized: dirty transaction data was the hidden enemy. The Hidden Problem Standard approaches to data cleaning just don't cut it in Bangladesh. With bKash, Nagad, and Rocket, our MFS landscape is unique. We have to monitor transactions above the BDT 100,000 threshold, but most systems fail to account for our local nuances. I've seen it time and time again: 80% of banks and fintechs struggle to write effective SAR narratives . It's not just about identifying suspicious activity; it's about understanding the context. Technical Breakdown & Logic Flow To tackle this problem, I had to think outside the box. I chose to use isolation forest to identify anomalies in our transaction data...