BCE's leadership needed to see project profitability clearly — indirect costs, expected tax, actuals versus budget — without waiting on someone to build a spreadsheet by hand every month.
Cost data existed in the system, but turning it into a trustworthy financial picture meant solving the model first: indirect costs and taxes were originally percentage-based, so every downstream number shifted whenever a base figure changed. Reports also needed to reach three audiences — CEO, Accountant, Senior — each with a different view of the same numbers.
An analytics service sitting on top of the cost data, with IndirectCost and ExpectedTax converted from percentage-based to fixed-amount logic so numbers stay stable and auditable. Interactive Plotly.js dashboards let people explore data live in the browser; the same data renders to PDF, Excel, and CSV for offline use. Role-based access controls which figures each tier can see.
A ProjectCost record gets saved, which automatically generates its related IndirectCost and ExpectedTax records — serial-numbered and timestamp-synced.
The analytics service rolls a project's cost records up into the numbers leadership cares about: budget versus actual, tax exposure, indirect cost load.
The same dataset renders two ways — live Plotly.js charts in the browser, or a static PDF/Excel/CSV export for sharing outside the platform.
Role-based access decides which of those views a given user can request, enforced at the query level.
Numbers that shift depending on who's looking erode trust fast. Fixed-amount costs and a bounded, correct slice of data per role mean the CEO and the accountant are always looking at the same underlying truth — just scoped differently.