The symptom
Every month, someone exports from the ERP, pastes into a spreadsheet, fixes the totals by hand and sends the report. The next week, a manager asks why the sales number does not match finance. Nobody is wrong. They are reading different copies of the truth.
Why it happens
The data is in the ERP, but the reports are not. They live in exports taken on different days, filtered by different people, with custom fields that only one person understands. Add a CRM, a fleet system and a few spreadsheets, and every number has three versions.
Dashboards make it worse when they are refreshed by hand: a two-week-old chart looks exactly like a live one.
The goal is not a new report. It is one number everyone trusts.
How we fix it
First, a read-only connection to the ERP and the other systems: nothing in the source changes. Then one data model, built with the finance team and reconciled line by line to the books, until the consolidated statements match the ERP to the cent.
From then on, every answer and every dashboard in CIRO shows its source: the query it ran and the systems behind it. When someone asks why a number changed, the answer is one click away.
Finance · Income statement
Consolidated P&L · 10 companies
Illustrative figures · customer data is confidential
Shipments · today
Streaming from SAP
Daily deliveries, stock and dispatch, near real time
Plants and warehouses
Receivables · cost reports
Reconciled · 6 of 6
production · warehouses · sales · finance
near real time, all day
one model, 10 companies
16 users
What changes
Finance and operations read the same live numbers. The monthly report stops being a project. And the team that used to rebuild reports starts asking better questions.
Key takeaways
- Connect read-only; never change the source.
- Reconcile the model to the books before you share a dashboard.
- Show the source behind every number.
- Keep dashboards live, never refreshed by hand.