The Spreadsheet Killer
8 hours of reconciliation, compressed to 15 minutes
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.