Skip to content
← All work

The Spreadsheet Killer

8 hours of reconciliation, compressed to 15 minutes

automation python ops

The monthly nightmare

At Shiprocket, billing validation was manual. Every month, someone had to sit down with carrier invoices, cross-reference them against our internal records, and flag discrepancies. The whole process took about 8 hours, if nothing went wrong.

It was tedious, error-prone, and a terrible use of anyone’s time. But it mattered: billing mistakes meant either we overpaid carriers or we overcharged customers.

90% pattern matching, 10% judgment

I watched the team do the reconciliation a few times and realized something: most of the work was just matching. Pull a number from here, compare it to a number from there, flag if they don’t match. That’s script work.

The remaining 10%, the edge cases and ambiguous charges and the “this doesn’t look right but I’m not sure why,” that’s where humans should spend their time.

The pipeline

A Python-based validation system that:

  • Ingested carrier invoices in various formats and normalized them into a common schema
  • Cross-referenced every line item against our internal billing records using SQL
  • Applied rule-based checks for common discrepancy patterns (duplicate charges, rate mismatches, missing credits)
  • Generated exception reports highlighting only what needed human review

The first version used VBA because that’s what the team was comfortable with. I later rewrote the core logic in Python for reliability and speed.

What changed

  • 8 hours to 15 minutes. That’s the headline, and it’s real.
  • The team went from dreading month-end to barely noticing it
  • Freed up analyst time for work that actually required thinking
  • Billing discrepancies dropped, and finance stopped second-guessing the numbers

I also received the Mission Possible Award at Shiprocket, partly for this and partly for a fraud detection tool I built that prevented €22K in losses.