Why do min/max levels drift out of line?
Because they are usually set once and rarely revisited, while usage, lead times and suppliers keep changing. The common causes are the same at most sites.
- Returns not netted off usage. A part issued and then returned is counted as used, so demand looks higher than it is.
- Master data lead times. The lead time in the system was typed in years ago and does not match how long POs actually take.
- One-off demand treated as normal. A shutdown or rebuild spike gets built into the everyday level.
- The same part under different numbers. Each site holds its own stock of a part another site already has.
- Criticality not recorded. A part that stops a fleet if it is missing is treated the same as a box of rags.
How does the stock level engine work, step by step?
It rebuilds every level from your own history using fixed rules, then shows your team the reason for every change before anything is approved.
- Load history. Stock on hand, issues, returns and PO lines, 12 months minimum, from your ERP or data platform.
- Clean usage. Net returns off issues and separate one-off demand such as shutdowns.
- Measure lead times. Work out actual lead time from PO date to receipt date, by part and supplier.
- Apply criticality. Critical and insurance spares get their own rules so low usage does not strip them out.
- Calculate min and max. The same formula, every line, every time.
- Explain. AI writes a plain reason for each change, such as "lead time went from 30 to 45 days".
- Approve. Your stores or inventory lead accepts, changes or rejects each proposal. Disputed items feed back into the rules.
- Re-run monthly. Levels stay current as usage and lead times move.
What formula sets min and max?
Min is the reorder point: min = average daily usage × lead time in days + safety stock. Max is max = min + order quantity. Here is a worked example with made-up figures for one part.
| Step | Netting returns | Not netting returns |
|---|---|---|
| 12 month usage | 158 issued minus 12 returned = 146 | 158 |
| Average daily usage | 146 ÷ 365 = 0.40 | 158 ÷ 365 = 0.43 |
| Lead time demand (45 days) | 0.40 × 45 = 18 | 0.43 × 45 = 19.5, rounded up to 20 |
| Safety stock | 6 | 6 |
| Min | 18 + 6 = 24 | 20 + 6 = 26 |
| Order quantity | 36 | 36 |
| Max | 24 + 36 = 60 | 26 + 36 = 62 |
The order quantity of 36 is about 3 months of net usage (146 ÷ 4 = 36.5), rounded down to a pack size of 6. Two extra units on one line looks small. Across thousands of lines it is real money sitting on shelves. The guides on how to set min/max levels and safety stock calculation go deeper on each input.
What has this delivered for a tier 1 mining operator?
The engine was built and tested inside an international tier 1 mining operator, against the judgement of the people who run the stores.
- It matched the site inventory expert's own spreadsheet 99.8% of the time.
- One rule change, netting returns off usage, took agreement on disputed items from 73% to 98.4%.
- Every answer passes 511 automated checks, and every mistake a user catches becomes a permanent test.
The full write-up is in the min/max inventory engine case study.
Can stock be shared across sites instead of re-bought?
Yes, if you can prove two sites hold the same part. Cross-site parts matching sorts every possible match into evidence tiers and refuses to be confidently wrong.
A match on manufacturer and manufacturer part number is strong evidence. A match on description alone is weak and goes to a person to confirm. Only confirmed matches are used to suggest a transfer instead of a new PO. See the cross-site parts matching case study.
Which stock lines get reviewed first?
The lines with the most money or the most risk attached. A store with thousands of lines cannot review them all in a week, so the engine ranks proposals before your team sees them.
| Priority | Which lines | Why first |
|---|---|---|
| 1 | Critical spares with min below lead time demand | A stockout here stops equipment |
| 2 | High value lines with max well above usage | Most working capital tied up per line |
| 3 | Dead stock held at more than one site | Can be moved instead of re-bought |
| 4 | Everything else, by dollar change | Worked through on the monthly re-run |
Your stores lead can sort and filter the list any way they like. The ranking just makes sure the first hour goes on the lines that matter.
What does it cost?
Work is charged at a consulting day rate. The price depends on your sites, systems and data, so Tristan talks to you first, then sets out what he'd build, how many days it takes and what it costs. You get a clear scope and price before any work starts.
| Step | How it's priced | What it covers |
|---|---|---|
| 15 minute call | Free | What you run, what is costing you, and whether there is something worth fixing |
| Build | Consulting day rate, agreed after a 15 minute call | Stock level engine, PO vs contract checker, contract price book, Teams assistant |
| Support | Consulting day rate, agreed after a 15 minute call | Monthly re-runs, new sites, fixes |
The number of days depends on how many sites you have, your data platform, how clean the data is and which tools you need. See how an engagement runs on the AI for mining supply chain page.
Lower stock levels show up as released working capital over time, as you stop reordering and use down what is on the shelf. It is not instant profit, and the numbers never pretend it is.
How is your data kept safe?
The engine is built inside your own Azure, Databricks or Snowflake environment with read-only access to source data. It proposes levels. It never writes them back to your ERP. Your team makes the change once they have approved it, and every proposed level links back to the usage, returns and PO lines it came from. Critical and rotable spares are handled on their own rules, covered in the guide to critical and rotable spares.

