Posts

Showing posts from July 30, 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 1.3 Million BDT Fraud Attempt in bKash Using Simple Yet Powerful Data Analysis

It was 3 am on a Tuesday when I got a call from our head of compliance. A massive fraud attempt was unfolding in real-time on the bKash platform. 1.3 million BDT was at stake. I jumped out of bed and rushed to the office. My mind was racing - what could be happening? Was it a phishing attack? A compromised account? Or something even more sinister? The Hidden Problem As I dove into the data, I realized that standard approaches to fraud detection were failing us. Machine learning models were flagging too many false positives, and our team was getting overwhelmed with alerts. We needed a more targeted approach, one that could pinpoint the exact source of the fraud attempt. That's when I turned to good old-fashioned data analysis. Deep Breakdown & Logic Flow Here's how I did it: first, I extracted all transactions from the past 24 hours that exceeded 10,000 BDT. Then, I filtered out any transactions that were not tagged as 'suspicious' by our machine learning model. Nex...