ANALYTICS

Numbers people actually trust.

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.

PythonDjangoPlotly.jsWeasyPrint
BCE / Financial Dashboard — Project Overview
■ Budget■ Actual
JAN
FEB
MAR
APR
MAY
JUN
CEO — full visibility Accountant — full ledger Senior — summary only
The Breakdown

The Problem

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.

What I Built

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.

Process

How it works.

01

Cost entry

A ProjectCost record gets saved, which automatically generates its related IndirectCost and ExpectedTax records — serial-numbered and timestamp-synced.

02

Aggregation

The analytics service rolls a project's cost records up into the numbers leadership cares about: budget versus actual, tax exposure, indirect cost load.

03

Render

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.

04

Gate

Role-based access decides which of those views a given user can request, enforced at the query level.

Outcome
3
EXPORT FORMATS
PDF · EXCEL · CSV
3
ROLE-BASED
DASHBOARD VIEWS
0%
CALCULATIONS STILL
PERCENTAGE-BASED
Why it matters

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.