Case · Logistics · Chemical industry

Three times a day, seven people
decide what the plant ships.

And they do it by cross-checking spreadsheets, by eye, in four to six hours per round. This is the case of how that decision became an engine that proposes the allocation in minutes, with every choice explained.

3×/day order allocation rounds, every business day, across three plants
4 to 6h from seven people in logistics, each round, just to decide
30 thousand orders assessed per batch, one by one, against stock and production
Rev. 285 the spreadsheet that decides today has been through 285 revisions, and nobody holds the map of it

Allocation is the most expensive decision in the operation, and it lives in a spreadsheet

Every manufacturer that sells more than it can ship does the allocation. It is the moment someone decides, order by order, what goes out today and what waits: to which customer, at what priority, from which stock, on which load. That decision sets the day revenue, the month service level and whether the truck leaves full or half empty.

In the operation behind this case, allocation happens three times a day. Seven people in logistics open spreadsheets of orders, stock, production schedule and commercial policy, and take four to six hours to reach the answer. They do it well. The problem is not the competence of whoever decides, it is where the rule is kept.

The rule that runs the operation lives in spreadsheet formulas and in the memory of whoever operates it. When that person goes on holiday, the rule goes with them.

That is what we found when the conversation opened. The spreadsheet that does the allocation is on revision 285. Each revision was a person solving a real case with one more formula, and nobody ever wrote down what that formula means. The knowledge exists, it just does not belong to the company yet.

Volume is not the challenge here. Thirty thousand orders per batch is small for a computer. The challenge is rebuilding, with a name and an example, every rule that today is implicit. That is the real work, and it is where the project starts.

What we did: reverse engineering the rules, before any screen

The first phase does not deliver software. It delivers a rule catalogue: one line per rule, with a name, what goes in, what comes out, the formula that exists today in the spreadsheet and a numerical example the client team recognises. Each rule leaves the phase marked in one of three states, validated, to be confirmed or divergent, and the people who validate are the people who operate.

That catalogue is signed. From then on, changing a rule stops being a corridor conversation and becomes a change of scope, with the schedule impact declared before it starts. It looks like bureaucracy and it is the opposite: it is what lets the client hold us to a deadline fairly, because the target was written down.

Alongside the catalogue comes the data contract: every piece of information the engine consumes, with its source, granularity, owner and what happens when it arrives wrong. In this operation it runs to 52 lines, and we treat real progress as how many of them are already buildable, not how many tasks were ticked off.

After the catalogue, the engine

The heart of the solution is a deterministic decision engine with an interface in front of it. It proposes the allocation and the person approves or adjusts. The operation moves from being executed to being orchestrated, and the decision stays human where it needs to be.

The architecture rule is simple and we do not give it up: whatever decides, transforms, validates or explains is versioned, tested code. The orchestrator schedules, triggers and notifies, nothing more. Business logic inside a visual tool is logic you cannot test, cannot audit and cannot hand to the client at the end of the contract.

Ingestion Reads the source files, applies the expected schema per source and loads with a batch stamp. It does not fix data: it marks the defect and moves on, so it shows up on the dashboard instead of becoming a quietly wrong number.
Refinement Normalises spelling, applies the mapping of customer, item and unit, and builds the tables the engine consumes. It decides nothing.
Engine The rules as independent, pure modules: tables go in, tables come out along with the decision log. Availability, priority, fulfilment, reallocation and load building, each with its own tests.
Outputs Writes the allocation to the database stamped with the engine version and the rule version that produced it. It recalculates nothing.
Explanation Answers why a given order was cut by reading the decision log, with no language model in the path. A deterministic answer, and no client data leaves their perimeter.

The engine never touches the database, and that is what makes it trustworthy

That choice sounds too technical for a case, but it is the one that changes the result. Because the engine only takes tables in and gives tables back, you can run a real batch of thirty thousand orders against it in a test, with no database, no server and no orchestrator in the way. And you can compare what it produced with what the spreadsheet produced that same day.

The acceptance criterion for the engine is reproducing a real historical allocation, with every divergence explained one by one. It is not whether the client liked it.

What the company gains beyond the time

Allocation used to take six hours a day from each of the seven people in logistics. Across a year of 250 business days, that is 10,500 hours spent deciding what ships and what waits.

With the engine proposing the allocation, the round became fifteen minutes of review, by one or two people. Over the same year, between 63 and 125 hours.

Before 10,500 h a year · 7 people × 6 h × 250 business days
After 63 to 125 h a year · 1-2 people × 15 min each × 250 business days
Handed back to the operation 10,375 h a year, on the most conservative scenario · the equivalent of more than five full-time people

That is the size of the sum, and it does not come from rounding: it is written above for anyone who wants to redo it. Even so, handing back hours is not what matters most in the year that follows.

The rule becomes the company property

Written down, versioned, with tests and examples. The people who operate still own the decision, but the knowledge stops depending on one person being available.

Every decision is born auditable

Every choice the engine makes records the rule applied, the value, the reasoning, the time, what went in and what came out. Auditing stops being archaeology in a spreadsheet.

Reproducible allocation

Because each allocation stores the engine version and the rule version, you can go back three months and redo exactly that day decision. Today that does not exist.

Bad data shows up instead of disappearing

Integrity checks across production, stock and orders run before the allocation. A divergence becomes a named alert, not a strange result at the end of the month.

It runs inside the client house

Installed on their server, with backup and access defined by us. No logistics data in a cloud of ours, and nothing sent to a third-party model.

The code is handed over

A repository with its history at the end of the contract, not a package exported from a tool. Independence is part of the delivery, and it is in the contract.

If your operation has this, the conversation is the same

Order allocation is the example. The pattern shows up in load planning, production sequencing, credit approval, order release and any decision repeated many times a day inside a spreadsheet that grew on its own.

The signs

There is a spreadsheet nobody can afford to lose. One specific person has to be available for the operation to run. The same question gets two different answers in two areas. And when someone asks why the decision was what it was, the honest answer is that the spreadsheet did it that way.

How it starts

It starts small and in the right place: a discovery round on the decision that hurts most, with the rules written down before any line of interface. Within a few weeks you know whether the path is to automate, to redesign the process or simply to write down the rule that was never written. All three answers are valid, and two of them cost less than software.

Which decision is holding your operation up?

Tell us in a thirty-minute conversation. If the path is not ours, we say that too.

Book a call →