25+ business units, one definition of margin
Multi-entity manufacturing group · three continents
Outcome at a glance
Sites and business units supported · 2017 to present
Business Intelligence · Financial Systems · Virginia, United States
Ten years turning factory floors, ledgers and disconnected systems of record into one set of figures that finance, operations and the board of a $2.2B+ manufacturing group can all argue from, and leading the team that produces them. Seven systems of record, 25+ business units, one definition of the truth.
01 — The architecture
Every organisation I have worked in starts the same way: systems of record that do not speak to each other, and a finance team reconciling them by hand. This is the shape of the thing that fixes it — and the shape I build toward.
02 — What I actually do
Most BI roles are one of these. The work I have spent ten years on is all three at once, which is why the figure on a slide and the figure in the ledger match.
ERP, accounting, plant-floor telemetry, logistics and market prices, each on its own grain and calendar. Loads that run unattended and say so when they have not.
The governed layer: margin is defined once, tested every run, and every report inherits it. The unglamorous half, and the half that decides whether two people in a meeting reconcile or just disagree louder.
Executive dashboards, close packs, forecasts and a natural-language agent over the same certified figures, so asking a question does not require knowing which table it lives in.
03 — Live demos
Every one of these is real code computing over a fabricated dataset built for this site: six business units, five product families, thirty-two months. Nothing here comes from any employer. Click, filter, ask it something — the numbers recompute in the browser.
Bars are revenue. The line is gross margin percent.
Share of revenue and the margin each family carries.
Click a column heading to sort. Click a unit to filter the charts above.
| Business unit | Revenue | GM % | YoY | Volume (t) | Share |
|---|
Built with no charting library — the SVG is generated from the data at render time. Filters, sorting and the aggregation all recompute client side, the same way a governed semantic layer recomputes a measure when you change a selection.
A natural-language layer over the same governed dataset the dashboard uses. It resolves a question to a measure, a dimension and a filter, runs the aggregation, and shows you the plan it used.
An agent over finance data is only useful if the answer is auditable. Every response here opens to reveal exactly what was computed — no figure appears that you cannot trace.
Intent resolution here is deterministic pattern matching, not a language model call — a live model would need a key, and a portfolio page should not carry one. In production the same shape holds: the model picks the measure, dimension and filter, and a governed query engine does the arithmetic. That separation is the point. The model should never be the thing doing the maths.
Refreshing continuously. Watch a run start, progress and land.
| Pipeline | Source | Schedule | Rows | Freshness | Status |
|---|
Newest first.
The band is the normal range. Points outside it are what you want an alert for, not an average.
The thing that makes reporting trustworthy is not the dashboard, it is knowing the dashboard is built on data that landed. Freshness, row-count drift and duration outliers catch the three ways a pipeline lies to you: it did not run, it ran on nothing, or it ran on something new.
Holt linear trend with additive seasonality, fitted in the browser. Bands are 80 and 95 percent.
Backtested by holding out the final six months, fitting on the rest and scoring the prediction — which is the only honest way to quote an accuracy figure. A forecast without a backtest is a drawing.
04 — Case studies
Written at the level of the problem and the approach. Client figures, architecture and screenshots stay where they belong, which is with the employer who paid for them. Each one opens into a full write-up — the constraint that ruled out the obvious fix, the decisions I made, and what each decision cost.
Multi-entity manufacturing group · three continents
Outcome at a glance
OPC line telemetry · ERP · conforming layer
Outcome at a glance
Customer rebate lifecycle · end to end ownership
Outcome at a glance
Natural-language layer over governed data
Outcome at a glance
Accounting automation · anomaly detection · reconciliation matching
Outcome at a glance
05 — Stack
Listed by how much of it I have actually run in production, not by how it looks on a keyword scan. Everything here is in production use; each tag says how.
Career
Education
Professional development
Ten years of this work has mostly been a long conversation with people solving the same problems — reconciling systems that disagree, closing the books faster, making a number one that people trust. Always glad to have that conversation.
Email is the surest way to reach me.
ResumePDF, two pages. Current as of September 2026.
Download PDF