DashboardPower QueryMulti-entity2024

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.

4Entities
~15Hours saved/mo
30%Errors cut
01
Chapter

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.
02
Chapter

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.

03
Chapter

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.

Why this matters
Errors get caught when they're cheap to fix, not after they've propagated into a board deck.
MIS dashboard · Synthetic data

Multi-entity P&L view

Revenue
₹248 L
+12%
Gross margin
34%
+2pp
Active accounts
82
+9
DSO
47 days
-5d
Revenue by line of business
Monthly trend — revenue vs cost
⚠ Synthetic data for demonstration only · Real implementation pulls from Postgres + Power BI

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.

04
Chapter

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.

The actual goal
Make your work as boring as possible — that's when you can actually start improving on it.