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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
Tell us in a thirty-minute conversation. If the path is not ours, we say that too.