Posts

Showing posts from June 5, 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 Caught a Massive Money Laundering Ring Using Isolation Forest in Nagad Transaction Data

Image
Photo by Jason Leung on Unsplash It's 3 AM, and my phone is blowing up. Our Nagad transaction monitoring system has flagged a potential structuring ring involving BDT 50 million. I jump out of bed, grab a cup of coffee, and dive into the data. The numbers are staggering - 10,000 transactions in the past week, all just below the BDT 100,000 MFS threshold. This is the perfect example of why standard approaches to anomaly detection fail in Bangladesh. The Hidden Problem Most AML systems rely on simple threshold-based rules or basic machine learning models. But in Bangladesh, where the majority of transactions are small and frequent, these systems generate a ton of false positives. The BFIU guidelines are clear - we need to monitor all transactions above BDT 100,000, but the sheer volume of smaller transactions makes it difficult to identify real suspicious activity. Technical Breakdown & Logic Flow To tackle this problem, I decided to use an Isolation Forest algorithm. This appro...