Posts

Showing posts from September 19, 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 ...

Why My First Smurfing Alert Engine Missed a BDT 3 Million Rocket Ring—and How I Fixed It

Image
AI-generated illustration Bangladesh, 03:12 AM. The BFIU dashboard flashes a red line: a burst of 27 transactions, each just under the BDT 100,000 MFS threshold, moving between five Rocket agent accounts in 45 minutes. The total? BDT 3,027,842. My heart skips. The alarm that should have screamed never did. I was staring at a structuring ring that had slipped through the cracks of our rule‑based engine. The Hidden Problem: Why Classic Threshold Rules Fail in Dhaka We all start with the obvious: set a hard limit at BDT 100,000, flag anything above. Works for big jumps, but not for the slow, steady drip that smurfs money across multiple agents. In Bangladesh the BFIU Circular 15/2023 explicitly calls out “multiple low‑value transfers to a single beneficiary within a short window” as a red flag, yet most AML platforms still treat each transaction in isolation. My first attempt was a naïve count‑per‑hour rule. If an account sends more than three transactions over BDT 95,000 within an hour...