We met a planner keeping reorder points in a spreadsheet, and he was right to. Most of what this operation sells cannot be ordered from anybody. It exists only because something else was cut down to make it, so a shortfall is a question about routing rather than purchasing, and reorder points are not built for that.
Who we met
The partner responsible for buying and the people planning production across two sites. Their working position came from a manual snapshot, and the spreadsheet existed because no reorder-point system they had looked at could answer the question in front of them.
The daily feed had been carrying the on-hand quantity fields all along and returning zeros in them. That is a common enough behaviour in an inventory endpoint and it is not visible from the outside, so one site and a set of fast-moving stock at another were simply absent from the picture. Nobody was planning badly. They were planning against the only number available.
I'm asking it to go through my last six months of one item code, come up with safety stock, based on my purchases. Then I went through and started excluding certain things. See what it would do, and it just keeps kicking out more and more stuff.
Partner, lumber and millwork operationWhat we did
Interviews with the buyers and the planners first, then a line-by-line read of the spreadsheet, because it held years of judgement about what gets made and what gets bought.
Tracing the spreadsheet back to source
Tracing that spreadsheet's inputs back to source is how we found the zeros. Nobody had reason to check a field that was present, populated and wrong.
Then we connected the live per-site feed, verified it against the hand-load on the items that overlapped rather than assuming it was better, and modelled the position so board feet, lineal feet and each could sit in one view.
The bigger piece was the routing. We built the map of what can be made from what out of their own work-order history, which runs to thousands of routes, with a large share of items appearing as both an input and an output depending on the day. Several loop back to themselves through drying or heat treatment. That map is the thing no packaged system holds, and it took a fortnight of asking to get right.
Their rules went into the layer, not into our code. Which order types count as demand on stock and which never touch the warehouse. Which internal accounts and transfers come out. Which codes look like items and are not. Every one of those was their decision, and each one changes the buy list.
The first version we showed them was wrong in a way worth recording. Run rates were a flat six-month average, which one large order inflates for half a year before it falls away. They said so. It is now built from how often an item actually moves and how much moves each time, net of what the shop floor produces itself.
What we left them with
A board rebuilt daily that answers the question the spreadsheet was there for, and separates the three possible answers to a shortfall rather than treating all of them as a purchase.
Make it, buy it, or neither.
// Illustrative · not the customer's dataThe third row is the one that matters. An item with no supplier and no way to make it in time is a decision for a person, and it now says so on its face instead of sitting on a buy list.
Clear an excess line without checking what is spoken for and you sell the input a scheduled run depends on. The claimed portion is held back and shown separately.
Orders shipping straight from a supplier to a customer never touch the warehouse. They can dominate an order book without being demand on stock at all.
One purchase order on that board has been open for years. It stays there, flagged, rather than being filtered out, because the board's job is to show what the system holds and let a person decide it is wrong. Tidying it belongs to them. Being able to see it is what was missing.
The result
Rebuilt daily from the operation's own inventory, order and work-order data. Valued at recent selling price so board feet, lineal feet and each are comparable, which makes the total a resale figure rather than a book one. A share of volume carries no price or cost source and is shown without a value rather than dropped. Figures given as proportions throughout.
Excess separated into what is genuinely free and what a scheduled run already depends on, so clearing it releases cash without stopping production. Dead stock separated again as material with no movement at all.
The board went from showing roughly a third of the position to all of it, across both sites, with the units reconciled so they can be added together.
A buy list rebuilt daily with the un-buyable taken off it, and every open sales line split into what comes from stock, what comes from inbound and what has to be ordered.
The spreadsheet is gone, which was never the point. The point is that a planner opens the board and the number on it is the number in the yard. There's more on how this works across a finished-products operation on the wood products page.