A Singapore-headquartered group with regional entities across Southeast Asia had a consolidation problem that everyone had quietly accepted as normal: closing the group books took three weeks, and even after three weeks, the numbers never fully reconciled. Every month, someone would find a currency conversion done differently in one entity, a format mismatch in another, and the finance team would spend the last few days just explaining the gaps instead of fixing them.
Nobody had asked the obvious question: why does this take three weeks, every single time, for the same group, doing the same consolidation?
What was actually happening
Each regional entity was its own silo — its own currency, its own chart of accounts formatting, its own way of exporting from its local system. None of that was wrong on its own. But nobody had ever built a single model that could absorb all three differences and normalize them automatically. So every month, a person did it by hand, in Excel, entity by entity, and every month a slightly different set of manual judgment calls crept in.
What replaced it
The fix wasn't one tool — it was three, each doing the part it's actually good at. A Python data pipeline pulled and normalized each entity's export automatically, so currency and format differences were handled the same way every time, not re-decided every month. That normalized data fed a Power BI model built around inter-company eliminations from the start, not bolted on afterward. And an n8n workflow triggered the whole pipeline on its own, so nobody had to remember to kick it off.
Multi-Entity Consolidation — Singapore HQ
Why the dashboard was the easy part
Most people assume the dashboard is the hard part of a project like this. It isn't. The hard part is everything upstream of the Power BI dashboard — the discipline of getting five different data sources to agree on what "clean" means before a single visual ever gets built. A dashboard built on top of a shaky model just shows the mess faster and in higher resolution. A dashboard built on top of a properly normalized Python pipeline shows the truth, live, to everyone who needs it, without anyone re-explaining the gaps every month-end.
A live dashboard doesn't fix bad data. It just makes bad data impossible to hide — which is exactly why the data has to be fixed first.
SGD 280,000 in discrepancies got resolved once the normalization was automated instead of manual. But the number that mattered more to the finance team was the other one: 21 days down to 5. That's most of a month-end cycle given back to actual analysis instead of data wrangling.
