Work samples

Eight samples. Every number carries how it was measured.

Screenshots of dashboards are easy to fake and tell you nothing about whether a number can be trusted. So each sample below leads with a metric, states the measurement window, prints the sample size where one applies, and ends with what we would do differently next time.

How to read these samples. Illustrative example. This is a composite of the kind of engagement we deliver, built from our own method and representative market benchmarks. It is not a specific client project and the figures are directional, not verified client results. We can walk you through anonymised, NDA-covered engagements on a call: the numbers, the stack, and what did not work.

Want the real version? We can walk through anonymised, NDA-covered engagements on a call: the numbers, the stack, and the parts that did not work.

BI · 2 samplesPlatform · 3 samplesAI · 3 samplesAll figures directional
BIB2B distributionSemantic layer and close reporting in 8 weeks

Monthly close went from six days to one afternoon across five markets

A Nordic distributor, five markets, around 210 employees

6 days → 4 hours
Group margin close
first full month live
€310K
Margin leakage found in supplier terms
6 months reviewed
3 → 1
Sources of record for margin
at handover

The challenge

Each country finance team calculated gross margin in its own spreadsheet from its own ERP extract. Group could not explain a two-point gap between the board pack and the management accounts, and the monthly consolidation consumed six days of three people’s time before anyone could discuss a decision.

The approach

A five-day metric audit defined gross margin once, reconciled it to the finance system, and named the owner. Freight allocation turned out to be the real disagreement: two markets charged inbound freight to COGS, three treated it as overhead.

How it was measured

Close duration measured over the first three live closes against the prior six months. The leakage figure is what the model surfaced when the 20 largest supplier agreements were re-tested; not all of it is recoverable.

What changed

  • One margin definition, signed by the group CFO, versioned in code.
  • Consolidated close runs against the warehouse: six days of hand-work became a four-hour review.
  • Margin bridge per market showing price, volume, mix and freight as separate drivers.
  • Three legacy extracts retired, including one nobody would admit to owning.

Why it worked

The CFO owned the definition and chaired the one argument that mattered. Freight allocation was settled in a 40-minute meeting because the decision rights were written down before the meeting.

What we would do differently

We modelled freight twice. The first version followed the contracts, the second followed what the warehouse actually did. That cost a week and should have been the first question.

Stack
SnowflakedbtPower BIFivetranAzure DevOps
Artefacts at handover
Metric definition sheetMargin bridge pagedbt test suiteHandover runbook

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

PlatformLogisticsTelemetry platform and fleet reporting in 11 weeks

Fuel spend per kilometre down 14% and unplanned stoppages nearly halved

A regional haulier, 184 vehicles, three depots

-14%
Fuel cost per kilometre
12 months, like-for-like routes
54 → 29
Unplanned roadside stoppages per quarter
measured over 4 quarters
≈€210K
Annualised fuel and downtime saving
run rate at 12 months

The challenge

Telematics data landed in a vendor portal nobody exported. Maintenance was reactive, fuel was reported as a monthly total with no route comparison, and the only signal the depot managers trusted was the repair invoice.

The approach

A stream from the telematics API into the warehouse, joined to route plans, fuel cards and workshop records. Idling, harsh braking and route deviation became driver-level metrics with a league table the depot managers asked for.

How it was measured

Fuel is measured per kilometre on routes with unchanged plans, so a route change does not flatter the number. Uptime counts stoppages requiring roadside attendance, over four quarters, same vehicle set.

What changed

  • Fuel per kilometre split by route, vehicle and driver, refreshed every 15 minutes.
  • Preventive maintenance triggered on engine hours rather than the calendar.
  • Six vehicles flagged for mechanical faults from fuel-efficiency outliers before the workshop found them.
  • Depot level reporting replaced the vendor portal entirely.

Why it worked

The depot managers shaped the league table. Tying the metric to a driver and publishing it weekly changed behaviour faster than any dashboard we have shipped.

What we would do differently

Driver-level metrics needed a works-council conversation we had not planned for. On a second run we would open that in week one, before the first schema was written.

Stack
BigQueryPub/SubDataflowTableauPython
Artefacts at handover
Fleet health pageRoute profitability viewAlert routing configBackfill runbook

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

PlatformHealthcareCompliant warehouse and clinical reporting in 10 weeks

Nine clinics on one outcome set, with patient data never leaving the EU region

A private clinic group, nine sites, Northern Europe

26 h → 2 h
Reporting effort per clinic per month
measured over 2 quarters
9 sites
Consolidated on one outcome set
at go-live
0
Transfers of patient data outside the EU region
by architecture

The challenge

Each clinic reported treatment volumes to the group in a spreadsheet of its own design. Clinical leads could not answer whether a pathway change had improved recovery, and the group could not produce a compliance pack without three weeks of manual assembly.

The approach

Regional deployment with pseudonymised identifiers and EU-only storage. A small set of clinical outcome metrics was agreed with the medical director before any pipeline was built, then enforced as code with row-level security matching site and role.

How it was measured

Reporting effort is clinic-reported hours logged over two quarters. The EU-residency claim is architectural: all storage, processing and model calls run in the Frankfurt region, and the pattern is documented for your DPO.

What changed

  • One outcome set across nine sites, defined once and used by every clinical lead.
  • Compliance pack generated from the warehouse instead of assembled by hand.
  • Site-level dashboards that respect patient volume masking thresholds in small cohorts.
  • Access audit trail retained for every query against patient-level data.

Why it worked

We agreed the metrics before the technology. The medical director signed off the outcome definitions, which removed the political argument that usually stalls clinical reporting.

What we would do differently

Two of the original outcome metrics were dropped: the data existed but was recorded inconsistently by site. Publishing that gap early would have saved a month of modelling.

Stack
AWS RedshiftLookerMatillionPythonTerraform
Artefacts at handover
Outcome definition setDPIA input packRLS matrixCompliance query pack

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

BIFinancial servicesConsolidation model and group reporting in 12 weeks

Fourteen entities consolidated nightly instead of quarterly by hand

A multi-entity asset manager, 14 legal entities, four currencies

11 days → 2 days
Consolidation cycle
first two live quarters
14 entities
On one chart of accounts mapping
at handover
94%
Intercompany balances auto-matched
latest live close

The challenge

Fourteen sub-ledgers produced in different currencies and two local charts of accounts. Consolidation was an eleven-day exercise in a shared workbook, and the intercompany reconciliation was the recurring reason the group audit ran late.

The approach

A mapped chart of accounts, FX rate handling with an auditable rate source, and an intercompany matching engine that proposes pairs and routes everything else to a review queue with a reason code.

How it was measured

Cycle time measured from the last sub-ledger close to group sign-off across two live quarters. The unmatched 6 per cent is published with a reason breakdown rather than hidden in an adjustment.

What changed

  • Consolidation runs nightly, so group finance reviews a two-day-old position instead of a quarter-old one.
  • Every FX rate and mapping is versioned, with the effective date carried through to the report.
  • Intercompany exceptions have an owner and an ageing bucket instead of living in a workbook.
  • Audit pack builds itself from the same lineage the reports use.

Why it worked

The matching engine was built to refuse. Anything under a confidence threshold goes to a human queue, which is why the finance team trusts the 94 per cent it approves.

What we would do differently

We under-scoped the FX rate governance. Three sources of truth for one rate is a governance problem, not a modelling problem, and it should have been a week-one deliverable.

Stack
Microsoft FabricPower BIAzure Data FactorySQL Server
Artefacts at handover
Mapping tableFX rate control sheetIntercompany queueAudit pack generator

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

PlatformManufacturingSensor pipeline and quality analytics in 9 weeks

Scrap rate down 18% after line sensors were joined to order margin

A component manufacturer, nine production lines, two sites

-18%
Scrap rate on the two lines in scope
6 months
2 of 9
Lines in scope, deliberately
phase one
€74K
Scrap cost avoided in the first 6 months
6 months

The challenge

Quality control recorded scrap per shift on paper. Nobody could connect a bad batch to a machine setting, and product margin was calculated at product-family level, which hid the lines losing money.

The approach

Two lines instrumented first. Sensor readings joined to work orders at batch level, so scrap could be attributed to a machine setting, a material lot and a customer order simultaneously. Margin was recalculated at the line-order grain.

How it was measured

Scrap rate is defined as rejected units over produced units on two lines, measured over six months against the prior twelve. The saving is scrap cost avoided at standard cost, not revenue.

What changed

  • Scrap attributed to setting combinations, which took the trial-and-error out of changing over.
  • Two product families were found to be unprofitable at current yields, which had not been visible.
  • Operators see yield at the end of a shift rather than at the end of the month.
  • The roll-out pattern to the remaining seven lines is documented with measured effort per line.

Why it worked

Two lines instead of nine. The plant manager asked for full scope in phase one; measuring the effort on a small scope made the second phase quote credible.

What we would do differently

Sensor clocks drifted by up to 40 seconds between lines, which broke batch joins until we caught it. Clock synchronisation is now the first item on this type of project.

Stack
DatabricksDelta LakePower BIOPC UAPython
Artefacts at handover
Grain decision recordYield pageLine margin viewRoll-out estimate

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

AIUtilitiesExtraction pipeline and validation layer in 7 weeks

Invoices stopped being retyped: 87% extracted automatically, with a reason code on the rest

A utility supplier, around 38,000 supplier invoices a year

87%
Invoices extracted without human touch
1,240-invoice held-out set
2.4 days → 6 hours
Invoice batch cycle time
8 weeks after cutover
13%
Routed to the exception queue, each with a reason code
latest live month

The challenge

The finance team keyed supplier invoices by hand. The legacy scanner handled the clean ones, which were the ones that needed the least attention, and failed on exactly the invoices that carried the risk: multi-page, credit notes, and anything with a purchase-order reference in a table.

The approach

Extraction with a layout model plus a validation layer that runs before anything reaches the ERP: purchase-order match, approved vendor list, arithmetic, duplicate detection and a date plausibility check. Failures land in a queue with the reason and the page image, so the reviewer starts at the problem.

How it was measured

The 87 per cent is extraction accuracy against expected values on the held-out set. Cycle time is measured from batch receipt to ERP posting across the first eight weeks after cutover.

What changed

  • Accuracy reported on a 1,240-invoice held-out set the model never trained on, with the sample size printed beside the number.
  • Every rejection carries a reason code, so finance can see whether a supplier is generating the same defect every month.
  • Cost per document and per exception are tracked as a live metric, not a one-off business case.
  • One supplier reformatted their invoices after the reason codes pointed at them for three consecutive months.

Why it worked

We did not chase the last 13 per cent. The exception queue is a design feature, and reviewers who trust the queue process more exceptions per hour than they used to type invoices.

What we would do differently

We spent two weeks on supplier-specific templates before accepting that a general layout model with a strong validation layer was the cheaper architecture.

Stack
Azure Document IntelligencePythonPostgreSQLPower BI
Artefacts at handover
Held-out evaluation setReason-code dictionaryCost per document cardException queue view

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

AIMedical devicesRetrieval system and evaluation harness in 6 weeks

Regulatory questions answered in under an hour, with a citation or an explicit refusal

A medtech manufacturer, 340-document regulatory corpus

4.5 h → 55 min
Average research time per question
12-week measured period
92%
Questions answered with a citation to a source document
340-question evaluation set
8%
Refused because no source supported an answer
same evaluation set

The challenge

Regulatory affairs answered the same class of question repeatedly across hundreds of documents, guidance notes and previous submissions. Generic chatbots were tried and banned within a month: they produced confident answers with no traceable source, which is the one failure mode this team cannot accept.

The approach

Hybrid retrieval over the internal corpus with access control inherited from the document store, and an answer contract: cite, or refuse. Answers quote the passage, name the document and version, and store the retrieval trail. A 340-question evaluation set runs on every change, with a regression gate before deployment.

How it was measured

Time per question measured over twelve weeks across 96 logged questions. Accuracy is the share of the 340-question set where the cited passage supports the answer, graded by the regulatory lead, not by a model.

What changed

  • Every answer carries document, section and version. No answer without a source reaches the user.
  • The refusal rate is published internally and treated as a health metric, not a defect.
  • Evaluation runs in CI, so a retrieval change that breaks an old answer cannot ship.
  • The team uses the tool to find documents, and still writes the determination themselves.

Why it worked

The evaluation set existed before the first retrieval change. Having 340 graded questions in week one is what made it safe to iterate fast later.

What we would do differently

The first two weeks were spent improving chunking, which moved accuracy by a point. Re-ranking the retrieval moved it by eleven. Baseline before you optimise.

Stack
Azure AI SearchAzure OpenAIPythonDockerGitHub Actions
Artefacts at handover
Answer contract spec340-question evaluation setRegression gate in CICost and latency card

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

AIWholesaleFour-week forecast pilot, then production

A forecast that beat the planning spreadsheet on four of six families, and said so about the other two

A wholesale distributor, six product families, 22-month history

26% → 15%
MAPE on four of six families
13-week held-back period
2 of 6
Families where the model lost, reported as such
same period
4 weeks
Pilot to a decision
pilot phase

The challenge

Demand planning ran on a spreadsheet with a growth factor applied to last year. Stockouts and overstock happened in the same quarter, and the planners had stopped using the output, which nobody had noticed.

The approach

The pilot began by scoring the existing process on held-back history, because a model that cannot beat the incumbent is a cost with no upside. Gradient boosting on order history, price changes and delivery lead time was then measured on the same weeks.

How it was measured

MAPE measured on 13 weeks of held-back history, per family, with the training window printed. The two losing families are published in the business case rather than averaged away.

What changed

  • Model error below the incumbent on four families, above it on two short-lifecycle ranges where promotions dominate.
  • Planners now see both forecasts and a disagreement flag instead of one number with no provenance.
  • Replenishment alerts tuned to the two exception patterns that actually move service levels.
  • Drift and input-quality monitors live before the first planning cycle used the output.

Why it worked

We reported the failures in the same table as the wins. The planners trusted the tool on the families where it worked because we had been honest about the ones where it did not.

What we would do differently

Two families should have been excluded in scoping. Their promotion history had two observations per year, which is not a forecasting problem, it is a data-collection problem.

Stack
DatabricksMLflowPythonPower BI
Artefacts at handover
Baseline scorecardHeld-back evaluationDrift dashboardRetraining runbook

Illustrative example. Figures are directional, built from our methodology, and not verified client results.

Evaluating any consultancy on work samples

Four questions that separate a walkthrough from a sales story

Worth asking us, and worth asking anyone else you are considering.

How was that number measured, and over what window?

A percentage without a measurement window is a slogan. On the samples above, the window is printed on every tile.

What is the sample size behind the accuracy claim?

Any AI accuracy figure needs an n and a statement that the evaluated items were not used in training.

What would you do differently if you ran it again?

A vendor with no regrets has either not measured anything or is not telling you. Every sample above answers this.

What happens to the artefacts when we stop paying?

The answer should be short and unqualified: repository, model, documentation and definitions are yours.

Bring your worst month to the call.

A month where the reporting was late, wrong, or argued about. We will trace it back to the definition that is missing, which usually takes less than half an hour.