The problem
Eighteen workbooks arrived from different teams in different shapes every month. Consolidating them took two days and the errors were only found after the pack had been circulated.
Automation
The unglamorous work that gives a month-end report its deadline back — recurring workbook cleanup, consolidation and validation, run on a schedule instead of by hand.
Portfolio demonstration — illustrative figures, real structure
Eighteen workbooks arrived from different teams in different shapes every month. Consolidating them took two days and the errors were only found after the pack had been circulated.
The reporting analyst who owned the consolidation, and the finance lead who signed off the output.
Whether the month-end pack is safe to publish. Validation failures now surface before circulation rather than after.
Each stage writes a log and can be re-run on its own, so a failure costs one step rather than the whole cycle.
Validation sits before consolidation deliberately. Merging bad rows and then hunting for them is far more expensive than refusing them at the door.
Minutes per stage, automated run.
Normalisation is the expensive stage because the source layouts are inconsistent. Standardising the templates upstream would cut it further — an organisational fix, not a technical one.
What the pipeline refuses to pass through.
| Rule | Checks | On failure |
|---|---|---|
| Schema | Expected columns present and typed | Reject file |
| Completeness | No gaps in the reporting period | Reject file |
| Range | Values inside plausible bounds | Quarantine row |
| Duplicates | Composite key uniqueness | Quarantine row |
| Cross-total | Consolidated total ties to source sum | Block publish |
Rejecting a file is recoverable; publishing a wrong total is not. The severity of each rule reflects that asymmetry.
The parts that carry over to a production deployment.
Source workbooks are mapped to a canonical schema rather than being edited into shape, so a supplier changing their template is a mapping change instead of a rewrite.
Every stage can be re-run without side effects, which is what makes recovering from a mid-cycle failure cheap.
Quarantined rows go to a review queue with the failing rule attached, rather than being dropped or silently coerced.
Each run logs inputs, row counts and rule outcomes, so a number in the published pack can be traced back to the file it came from.