An e-commerce business selling across a major marketplace had a returns problem. Not an unusual one on the surface — every marketplace seller deals with returns — but this one had a shape to it that nobody had ever looked closely enough to see.
The finance team had reviewed the returns numbers every month for years. They looked reasonable. A few percent of sales, roughly in line with the category average. Nothing that would make anyone stop and ask a harder question — because nobody was looking at three years of transactions at once, row by row, the way a script can.
Why a spreadsheet couldn't catch it
A human reviewing monthly returns data in Excel sees one month at a time, and one month at a time, the pattern looks like noise. It's only when you line up thirty-six months side by side, at the SKU and order level, that a very specific, very repeatable pattern shows up — the kind of pattern a person would only notice if they had the patience to check every single row against every other row, without getting tired around row 30,000. No human has that patience. A script does.
What the script actually did
Three years of transaction history were pulled directly from the marketplace via API using Python, instead of relying on manual monthly exports that vary in format and completeness. The script then ran the same pattern-detection logic used across the Last Layer Approach™ — checking returns against order value, return frequency by handler, and timing patterns that a coincidence wouldn't produce but a repeated manual process would. The results were pushed into Power BI so the pattern was visible, not just statistically implied.
Returns Fraud — E-Commerce
What happened next
Once the pattern was laid out — not as a suspicion, but as a documented, repeatable trend across three years of data — the manager responsible admitted to diverting approximately ₹1.25 crore over that period. The single cycle that triggered the investigation had already surfaced ₹37 lakh on its own.
Fraud rarely announces itself in a single number. It hides in a pattern too small to notice once, and too large to ignore across three years — which is exactly the gap a script is built to close.
The lesson wasn't really about this one case. It was that "the numbers look reasonable" is a monthly judgment, and monthly judgments miss multi-year patterns by design — not because anyone was careless, but because no spreadsheet workflow was ever built to check three years of data against itself. That's the entire reason Python exists on this site as a separate discipline from Excel: some questions can only be answered at a scale a human reviewer was never going to reach by hand.
