back to portfolio
case study · business intelligence & dashboards

Executive KPI Dashboards for Demand & Supply Risk

Leadership was making capacity and pricing decisions from scattered spreadsheets and gut feel. I re-architected the reporting layer and shipped self-serve Power BI dashboards that put volume, margin, and supply-risk KPIs in one place — and put the answers in stakeholders' hands without an analyst in the loop.

Self-serve
executives answer their own KPI questions without ad-hoc requests
1 source
consolidated reporting replacing fragmented spreadsheets
Capacity
forecasts informed a major capacity-investment decision

01. The problem

Reporting was manual, slow, and inconsistent. Different teams pulled different numbers, KPIs were recomputed by hand each cycle, and by the time a report reached leadership it was both stale and hard to trust. Capacity and pricing calls were being made on intuition rather than evidence — and there was no shared view of supply risk.

Executive overview dashboard: revenue, gross margin, margin percent and supply-risk KPIs, monthly volume with six-month forecast, gross margin by product, and margin percent trend
Fig 1. Executive overview — KPI cards, a six-month volume forecast with confidence band, and margin breakdown by product.

02. Approach

Re-architected reporting

Rebuilt the data layer with SQL and a clean ETL process so every KPI traced back to a single, consistent definition — no more competing versions of the same number.

Demand forecasting

Built demand forecasts that fed directly into a capacity-investment and capital-allocation decision, giving leadership a forward-looking view instead of a rear-view mirror.

03. What I built

Supply-risk drill-down dashboard: monthly risk heatmap by corridor, current risk ranking, and a volume-versus-risk exposure scatter
Fig 2. Supply-risk drill-down — risk heatmap over time, current corridor ranking, and a volume-vs-risk exposure view.

04. Impact

The dashboards shifted leadership conversations from "what do we think happened" to "what does the data show". Demand forecasts informed a major capacity investment, reporting cycles got faster and more trustworthy, and product managers and executives could finally self-serve — the exact kind of leverage that frees an analytics team to work on higher-value questions.

05. Data model & forecasting methodology

Under the dashboards sits a small star schema: a fact_trip table (one row per shipment — revenue, distance, on-time flag, empty kilometres) joined to dimension tables for corridor, date, and load type. A semantic layer defines the KPIs once — revenue, gross margin, margin rate, on-time %, supply-risk index — so every visual reads from a single, governed definition rather than ad-hoc spreadsheet formulas.

The demand forecast that informed the capacity decision is an OLS linear-trend model with a 95% prediction interval, fit on the weekly revenue and volume series. It is deliberately simple and transparent — the band, not just the point estimate, is what made it decision-grade.

def forecast(y, h=8):
    """OLS linear-trend forecast with a residual-based 95% prediction band."""
    t = np.arange(len(y)); A = np.column_stack([np.ones_like(t), t])
    coef = np.linalg.lstsq(A, y, rcond=None)[0]
    resid = y - A @ coef; s = resid.std(ddof=2)
    tf = np.arange(len(y), len(y) + h); Af = np.column_stack([np.ones_like(tf), tf])
    pred = Af @ coef
    se = s * np.sqrt(1 + 1/len(y) + (tf - t.mean())**2 / np.sum((t - t.mean())**2))
    return pred, pred - 1.96*se, pred + 1.96*se      # forecast + 95% band
Fig 3. Weekly revenue with an 8-week trend forecast and 95% band — the view behind the capacity call.
Fig 3. Weekly revenue with an 8-week trend forecast and 95% band — the view behind the capacity call.
KPI semantic layer — gross margin by load type (H1 2025)
load typerevenuegross marginmargin ratetrips
bulk$1.61M$177k11%1,697
general$4.89M$684k14%5,202
industrial$2.22M$354k16%2,349
perishable$2.21M$398k18%2,346
Fig 4. Margin pool by load type — perishable carries the richest rate, bulk the thinnest.
Fig 4. Margin pool by load type — perishable carries the richest rate, bulk the thinnest.
Fig 5. Supply-risk index by month (empty-capacity exposure proxy).
Fig 5. Supply-risk index by month (empty-capacity exposure proxy).

06. Interactive — the executive KPI explorer

A self-serve slice of the production dashboard. Switch the metric and filter by load type to watch the weekly trend, the trend forecast, and the headline KPI cards recompute — the same "answer your own question" experience the executive build delivered.

revenue (filtered)
margin rate
trips
latest MoM revenue
actual forecast95% band
Forecast = OLS trend + 95% prediction band, recomputed per filter. All client-side — no server, no libraries.