Supply chain & demand planning

Forecasting and inventory work, scoped small enough to ship

Most supply chain teams we work with are still forecasting in Excel and reconciling inventory across two or three systems by hand. It holds up until someone asks why the forecast missed. Below is the work we actually take on, and what each piece involves.

How we work with you

We listen, we diagnose, we solve, we iterate — sitting with your SMEs rather than reporting at them. No months-long scoping exercise, no account team in between. You get us embedded.

01

We listen

A working session with the people who build the plan today, not with a steering committee. You describe the problem in your own words and we ask about the parts that usually break.

02

We diagnose

We go into your real data and come back with what is actually happening and where the money is. Days, not a scoping phase that eats the quarter before anything is built.

03

We solve

We build the smallest thing that is useful on its own, embedded with your team. What you see each week is something running, not a status report about something that will run later.

04

We iterate

Your planners use it and push back, and we tune it against what they accept and reject. Then we pick the next piece — or we tell you there isn't one worth doing.

Supply chain & demand planning

Who you would be working with

Four people, and they are the four who do the work: two senior data solutions architects specialised in logistics network optimisation and supply chain, plus two data scientists with deep transport and logistics experience. Whoever you talk to is whoever writes the code.

Where we go deepest is supply chain cockpits and recommendation engines on Databricks — a digital control tower that keeps a company in control of its own data, able to act on a sudden problem the same day and, increasingly, to see it coming. Engagements still start narrow on purpose: one forecast, one reconciliation, one decision that today lives in a spreadsheet. The first working thing lands in weeks.

What we have built

Two platforms, both on Databricks, both built for the same reason: a supply chain team that can see the whole network in one place, and act on it the day something breaks rather than the week after.

Network optimisation & control tower

A cockpit that plans the network and reacts when it breaks

Outcome

More than 30% off supply chain associated costs.

Customer demand lived in one system, returned supply in another, transport costs in a third. Planners could say what had happened, usually a week late, and never what it had cost. Rebalancing the network was an annual exercise done in spreadsheets, and every sudden event — a storm, a line down, no trucks — was handled by a chain of phone calls.

We built a network optimisation platform that models customer demand together with the probability of supply being returned to each plant, prices both against real transport costs, and turns the result into rebalancing recommendations: which plant should serve which demand, and what it costs to get that wrong. On top of it sits a full supply chain cockpit — one set of numbers for planning, for operations and for the people who sign the invoice.

  • Return probability estimated per plant rather than assumed, because the flow back into the network is what quietly decides real capacity.
  • Every rebalancing recommendation carries its transport cost, so the trade-off is visible at the moment of the decision instead of in next month's report.
  • An operational layer that learns every day from which recommendations planners accept and which they reject, so it stops proposing what this team never does.
  • Sudden events — weather, production shortfalls, transport capacity — arrive as proposed actions with their cost attached, not as an alert somebody has to interpret.
  • Built on Databricks, so the same lakehouse feeds the optimisation, the cockpit and the models without a second copy of the truth.
Transport benchmarking & carrier recommendations

What transport should cost, and who will actually take the load

What changed

Rejections stopped being fire-fighting and became pricing information.

Rates were negotiated against last year's rates. There was no way to tell whether a lane was expensive because the market was expensive or because nobody had looked at it in three years. And when a carrier rejected a load at the last minute, covering it was a scramble against the clock with no idea what the right price was.

We benchmarked the transport operation against the industry lane by lane, and built a recommendation engine on top of it that reacts to last-minute rejections: when a carrier drops a load, it proposes which carriers to go to next and at what price, ranked by who has actually run that lane, how reliably, and at what cost.

  • Each lane compared against the market rather than against its own history, so the conversation with a carrier starts from evidence instead of from last year's number.
  • Rejections treated as pricing information, not as incidents: a carrier that keeps turning down the same lane is telling you your price is wrong before your spend does.
  • A proposed price attached to every carrier suggestion, so whoever is covering the load at six in the evening is not negotiating blind.
  • The same lakehouse behind both the benchmark and the recommendations, so what the analysis says and what the tool proposes cannot drift apart.

Where we tend to be useful

The ERP holds the data, Excel makes the decision

The forecast gets built outside the system of record, keyed back in, and the reasoning disappears somewhere in between. The BI layer then reports on the result rather than the process.

Inventory reconciled by hand every Monday

Positions live in two or three systems that never quite agree, so someone spends the start of every week rebuilding a number that should already exist.

A miss nobody can explain

The forecast was wrong and the postmortem stops at “the customer changed their mind”. Nobody can point to the assumption that broke, so the same miss is available to happen again.

What the work looks like

01

A demand forecast that refreshes nightly

Instead of a monthly cycle that is already stale by the second week. Same inputs, run automatically, with the accuracy of each run tracked so you can tell whether it is actually improving.

02

Inventory positions reconciled across systems

ERP and WMS matched automatically rather than in a Monday spreadsheet, with the exceptions surfaced instead of buried inside a variance column nobody reads.

03

Effort aimed where being wrong is expensive

The SKUs that carry service risk and the ones that tie up cash rarely deserve the same model, and the long tail almost never deserves the same attention as the runners. Segmenting the catalogue usually comes before modelling it.

04

Channels planned as the different animals they are

Retail and foodservice, DTC and wholesale, commercial and consumer. Promo-driven spikes and contract volume in one model cancel each other out, and the top-line accuracy number looks fine while both halves are wrong.

05

Branch-level inventory positioning

A plan per branch rather than a national average pushed down, so it matches how replenishment is actually decided. Otherwise stockouts and dead inventory end up in the same region at the same time.

06

Promotions the model learns from

Promo history usually sits in a different system from the forecast, so the baseline gets tuned carefully while most of the volume and nearly all of the error live in the lifts.

07

Long-lead buys treated as the forecast they are

When the material lead time is longer than the horizon anyone can forecast with confidence, the purchase order is a bet. Making that assumption explicit, and reviewable, is most of the work.

08

A miss you can explain in minutes

Every run versioned with the inputs it used, so “why did we miss” is answered by looking rather than by a week of archaeology across mailboxes and spreadsheets.

None of these start as a big program. Each piece is scoped to be useful on its own, so it can be judged on its own — and dropped if it is not.

Deliverables

What you get

Questions we usually get

When a forecast misses, how long is it before anyone can say why?

If the honest answer is “a while”, that is usually the cheapest place to start. Tell us how you plan today and we will tell you what we would do first.

Start a conversation