Financial Intelligence Dashboard
Built reporting infrastructure from scratch for four business units across three countries. Before: four spreadsheets and a two-day monthly consolidation. After: one model, one report, one version of the numbers.
Four spreadsheets, every month
Four business units. Three countries. Four different ideas of when revenue gets recognised — at invoice, at delivery, somewhere in between depending on the contract.
Every cycle, four analysts pulled four exports and stitched them together over two days. Disputes almost every time. Leadership got the snapshot four days late and no clue why the numbers had moved — decisions that should have taken an hour took a week.
It worked. But every month, the same work, again.
I'm lazy, and that's the point
Anything I do with my hands every month is a bug. Not a workflow — a bug. That framing changes what you build.
But the actual hard problem wasn't tooling. The four entities had four different revenue recognition policies, and no pipeline fixes that. I spent three weeks getting entity heads to agree on a chart of accounts and a single recognition policy before writing a line of code.
The political work was harder than the engineering. It was also what made the engineering possible.
A pipeline you can trust
The pipeline itself isn't fancy. Power Query connectors pull from each entity's source system every night, transform to a canonical schema — 12 dimensions, one fact table — and write to the model Power BI reads.
Validation happens at ingestion, before data hits the model. Duplicate invoice IDs. Negative revenue on non-credit lines. Missing project codes. FX rates outside a ±5% band from last week. Anything that fails those checks lands in a quarantine sheet with a reason attached.
Multi-entity P&L view
Synthetic data above, same shape as the internal model. The public version — running on real Online Retail II data (~1M transactions across 38 countries) — is on Kagglearrow_outward. Validation at ingestion, one canonical fact table, every filter recomputes. Nothing is hardcoded.
The goal is to make it boring
Now the cycle is: drop in the new data, run the model, look at the dashboard. Reporting time is 40% shorter, errors are down ~30%, and 15 hours a month freed up. The analysts who built it do analysis now.
The dashboard is the single source of truth for ~₹33 Cr in strategic investment decisions. No pushback on the numbers in over a year.