The AI Inventory Exception Agent: How It Finds Stockouts and Excess Stock in Odoo and MYOB Acumatica
An AI inventory exception agent reads stock, reservations and sales across every warehouse in Odoo 20 or MYOB Acumatica and drafts the fix a person approves.
By Bill Alvarez, Practice Manager, Auboros · · Updated
Updated 20 October 2026: rebuilt to the current post format with a short answer, an At a glance agent spec, four question headings, a captioned who-does-what table and a fifth FAQ. The Odoo section now covers Odoo 20 (suggested min and max levels, the stock aging report, inventory at a past date, the single Order button on the replenishment dashboard, the ai_stock module’s one sample prompt in the Enterprise source, scheduled agents and the MCP server as the read routes), the MYOB section is rebuilt on the replenishment job aid and MYOB’s current AI page (AI Studio preview wording removed, Anomaly Detection on generic inquiries added), the ATO trading stock page is re-quoted, the ABS figure is re-sourced to the 25 June 2026 release, and the register, Odoo 20 and MYOB platform posts are linked. Worked example and quote unchanged. Byline unchanged.
An AI inventory exception agent reads stock on hand, reservations, sales history and open orders across every warehouse in Odoo or MYOB Acumatica, finds what a reordering rule cannot see (the same SKU out at one site and overstocked at another, dead lines still being reordered, stock locked against stalled orders) and drafts a fix a person approves. As at 20 October 2026 neither platform ships that exception layer.
At a glance
- Who it is for: operations managers, inventory controllers and owners of Australian wholesalers, importers and multi-site distributors on Odoo or MYOB Acumatica who find the dead stock at stocktake and the stockout when a customer rings.
- Problem it solves: reordering rules watch one number for one product in one location; the expensive problems live between those numbers, and nobody has time to read two warehouses, a reservation list and a sales history side by side every week.
- Platforms: Odoo 20 (reordering rules with suggested min and max levels, the replenishment dashboard, the stock aging report) and MYOB Acumatica (replenishment classes, per-warehouse replenishment settings, transfer-based resupply). Both replenish per item; neither cross-checks across sites or against sales velocity.
- Trigger: a scheduled weekly run before the ordering day, plus an on-demand run before a stocktake or a range review.
- Inputs read: on-hand and reserved quantities by location, forecast and incoming quantities, active reordering rules, sales by SKU for the last 180 days, open sales and purchase orders, product supersessions where recorded, and landed cost.
- Systems: the ERP’s read access (in Odoo 20, the built-in MCP server’s read-only tools or a scoped API key, or an Odoo agent summoned by a scheduled action; in MYOB Acumatica, the REST API under a role that reads inventory, sales and purchasing and writes nothing) and a model from your approved-tool list.
- What the agent drafts: an exception list, each line carrying its evidence: a proposed internal transfer with freight against a new supplier order, a reordering rule it recommends switching off with the replacement part’s sales attached, a question for sales about a stuck reservation, and an aged-stock list with landed cost and last sale date.
- Approval gate: one per line. The operations manager approves, holds or rejects each proposal; transfers and adjustments are then created inside the ERP’s own workflow, not by the agent.
- Audit trail: each exception stores the record IDs it read, the date and the maths; the transfer or adjustment that follows carries the ERP’s native approval and user history.
- Typical cycle time: the run finishes in minutes; the manager spends twenty to thirty minutes on a weekly list that used to take a day of report wrangling, or never happened.
- What it never does: move stock, post an inventory adjustment or write-down, change a reordering rule, place a purchase order, or decide a trading stock valuation method.
- Typical cost: a scoped pilot from $5,000 ex GST per our AI agents for ERP in Australia hub, as at 20 October 2026; model usage for a weekly read of a few thousand stock records is small, and the running costs post shows how to budget it per agent.
- Typical timeline: one full ordering cycle read-only beside your existing reports, then the list goes to the manager weekly; the hub’s pattern is discovery 1 to 2 weeks, sandbox pilot 2 to 6 weeks, drafts-first go-live 1 to 2 weeks.
- Last verified: 20 October 2026 against the Odoo 20.0 reordering rules documentation, the Odoo 20 release notes and the Odoo 20 Enterprise source, MYOB’s replenishment job aid and AI page, the ATO’s valuing trading stock page (updated 7 May 2025) and the ABS Characteristics of Australian Business release of 25 June 2026.
Every stocktake finds them. A pallet of slow stock nobody remembers ordering, parked two aisles from a pick face that’s been empty since Tuesday. Most inventory reports treat the empty bin and the full rack as separate problems. More often they’re the same problem: the cash that should have bought the stock you’re missing is tied up in the stock you can’t sell.
The interest from Australian businesses is real. MYOB’s ERP Trends research found 78% of wholesale distribution businesses plan to use AI in their ERP, and the ABS reported 12% of Australian businesses using AI in 2024-25, up from 1% three years earlier, in its 25 June 2026 release. Inventory is a sensible place for that adoption to land, because the data already sits in one system and the cost of getting it wrong is easy to count.
What does an AI inventory exception agent actually look for?
An AI inventory exception agent is a program that reads stock levels, sales history, reservations and open orders across every warehouse in your ERP, hunts for the situations your reorder settings can’t see, and drafts a proposed fix for a person to approve. It doesn’t move stock, doesn’t write anything off and doesn’t place orders. It finds the oddities, builds the case with evidence, and waits for a human decision. That is the design rule behind all of our AI agents for ERP in Australia, and inventory is one of the easier places to keep it.
A reordering rule watches one number for one product in one location. Exceptions live in the gaps between those numbers. The ones we see most in Australian warehouses:
- The coexistence problem. The same SKU is out of stock at one site and overstocked at another. Neither location’s report is wrong, and neither shows you the transfer that would fix both.
- Stock that exists but doesn’t. The system shows 200 units on hand, all reserved against an order that hasn’t shipped in five weeks. Available stock is zero, the reorder rule hasn’t fired, and sales keep promising those units to other customers.
- Excess on autopilot. A line hasn’t sold in six months, but its reordering rule is still live and quietly topping it up every quarter.
- Superseded products. The new part number sells, the old one sits, and both carry stock and active rules because nobody linked them.
- Records that can’t be true. Negative stock, zero costs, locations holding stock that was written off last year. These are process faults wearing an inventory costume, and they corrupt every report downstream.
None of these are exotic. They’re invisible to threshold logic because each one only looks like a problem once two or more pieces of data are read together.
What do Odoo 20 and MYOB Acumatica already catch on their own?
Both platforms ship real replenishment machinery, and you should have it configured before any agent goes near your stock.
Odoo 20 covers the per-product layer well, and it improved this release. Reordering rules trigger purchases or manufacturing orders when forecast stock falls below a minimum, and the replenishment report puts everything needing action on one screen. The Odoo 20 release notes add suggested minimum and maximum levels based on demand history, days of coverage and order frequency, a stock aging report from the Moves Analysis pivot, an inventory-at-a-past-date picker on the stock report, and a single Order button on the replenishment dashboard that orders up to the maximum. Those are useful, and they are still per product, per location. Our guides to Odoo reordering rules and Odoo 20 inventory and manufacturing cover the setup.
We keep a local copy of the Odoo 20 Enterprise source and checked again on 20 October 2026: the ai_stock module adds one sample prompt to the Ask AI composer (the single most common stock move from one location to another) and nothing that watches for exceptions. What Odoo 20 does ship is the plumbing. Agents can be summoned by automated and scheduled actions, so a weekly run inside Odoo is possible, and the built-in MCP server exposes read-only tools for an outside agent under one user’s permissions. The exception layer is wiring you add, not a box you tick.
MYOB Acumatica goes further per warehouse. MYOB’s replenishment job aid walks through replenishment classes with a replenishment source (form IN208800), seasonality factors by date range (IN206600) and a replenishment class assigned per warehouse (IN204000), so transfer-based resupply from a nominated warehouse is native. Our MYOB Acumatica replenishment guide sets the reorder points and safety stock. On the AI side, MYOB’s AI page as at 20 October 2026 lists eight features: an AI Assistant that answers plain-language questions about inventory among other things, AI Automation prompts a person runs, AP Bill Entry, Expense Management, Anomaly Detection, Production Variance Anomaly Detection, Cross-Sell Assistant and Auto Complete. Anomaly Detection runs over generic inquiries, and the 2026.1.1 release notes extend it to inquiries built on other inquiries, so a stock inquiry can be watched for unusual values. Nothing in the list reads two warehouses against each other and drafts the transfer.
What neither platform does is investigate. They’ll tell you a number crossed a threshold. They won’t tell you why, whether it matters, or that the fix for this warehouse’s problem is sitting on a shelf in another one.
| Exception | ERP native (Odoo 20 / MYOB Acumatica) | Agent drafts | Person approves |
|---|---|---|---|
| Same SKU out at one site, excess at another | Per-location rules; MYOB can source a warehouse from another warehouse by class | Internal transfer with freight against a new supplier order and lead time | Operations manager approves the transfer; it is created in the ERP’s transfer workflow |
| Stock reserved against a stalled order | Reservation shows on the order; available quantity falls | A question to sales with the order, hold reason and days stuck | Sales manager releases or cancels the reservation |
| Dead line still on a live reordering rule | Odoo 20 suggests min and max from demand history; MYOB seasonality factors | Rule deactivation with 180 days of sales and the replacement part attached | Inventory controller switches the rule off, or rejects with the reason |
| Aged stock worth less than cost | Odoo 20 stock aging report; MYOB inquiries | Clearance candidates with landed cost, last sale date and quantity | Owner and accountant decide valuation and clearance; nothing is written down by the agent |
| Negative stock, zero cost, dead locations | Both block or warn on some of it at transaction time | A data-fault list grouped by cause | Inventory controller fixes the records and the process behind them |
Where does the agent add judgement? A worked example
Here’s the pattern on a mid-sized Queensland distributor running two warehouses, Brisbane and Townsville. Once a week the agent runs with read-only access and produces an exception list, each line carrying its evidence.
One line shows the coexistence problem: forty units of a fitting untouched in Townsville while Brisbane holds a backorder queue for the same SKU. The agent drafts an internal transfer and attaches the maths, transfer freight against the cost and lead time of a new supplier order. Another line flags those 200 reserved units: the customer order holding them has been stuck on credit hold for five weeks, so the agent routes a question to sales rather than proposing a move. A third catches a superseded part number with a live reordering rule still buying stock, and drafts the rule’s deactivation with the replacement part’s sales history attached. The last is a list: fourteen SKUs with no sales in 180 days, presented as markdown or clearance candidates with landed cost and last sale date on each.
The operations manager works through it before the Friday ordering run. She approves the transfer, holds the markdown list for the sales meeting, and rejects the rule deactivation because the old part is contracted to one customer until March, which the agent had no way to know. That rejection is not a failure. It revealed that the contract lived in someone’s inbox instead of the ERP, and that’s now fixed.
“Every warehouse has stock the system says is fine and the forklift driver knows is dead. The agent’s job is to put numbers behind what the floor already suspects, and to surface it before the stocktake turns it into a write-off surprise.”
Bill Alvarez, Practice Manager, Auboros
Does excess stock have a tax angle?
It does, and an exception list feeds it. The ATO requires a stocktake as close as possible to the end of each income year, and its valuing trading stock page (updated 7 May 2025) lets you value each item using the cost price method, the market selling value method or the replacement value method. You can choose a different method each year for different items of stock, and a fall in your total trading stock value over the year counts as an allowable deduction.
That choice is only usable if you know which items are worth less than they cost you. Fourteen SKUs with no sales in 180 days, each with landed cost and a realistic selling price attached, is exactly the evidence your accountant needs to decide which items justify a market selling value below cost. The agent must never make that call. Valuation methods are your accountant’s territory, and none of this is tax advice. But walking into the end-of-financial-year conversation with an evidenced list beats a shrug and a round number, and the agent can keep that list current all year.
Why does a person approve every move, and how do you start?
Language models make mistakes. In inventory terms that means misreading a unit of measure, treating a data-entry error as a demand collapse, or drafting a transfer for stock a technician already pulled this morning. On a chat reply those are shrugs. On stock movements they’re freight paid to send the wrong pallet north, then paid again to bring it back.
So the controls are the design, the same drafts-first pattern we use across our AI agent work. The agent’s ERP access is read-only and scoped to what a stock controller could see anyway. Everything it proposes lands as a draft in the ERP’s own transfer or adjustment workflow, so approvals, permissions and the audit trail are native rather than bolted on. Every line carries its evidence, so when a human disagrees you learn something about your data. The agent gets a row in your AI agent register like any other, with its owner, its read scope and the weekly hit rate. One quiet advantage of starting here: stock data holds almost no personal information, which makes an inventory exception agent one of the lower-risk first agents a business can run.
Start with one warehouse pair or one product category. Run the exception list weekly alongside your existing reports for a full cycle and count how many exceptions were real. If the hit rate is high, widen the coverage. If it’s low, you’ve usually uncovered the data problems that were making your reports lie anyway. An exception agent also pairs naturally with the replenishment agent that drafts purchase orders and the channel sync agent that watches price and stock drift across your sales channels. Same data, same guardrails, different jobs.
Goes well with
- The AI replenishment agent: once the exceptions are cleared, the next question is who drafts the purchase orders and how the person approves them.
- The AI demand forecasting agent: the forecast that tells you whether aged stock is dead or seasonal before you clear it.
- ERP for wholesale distribution in Australia: the multi-warehouse, landed-cost and GST foundations the agent reads, if you are still choosing the platform.
Stock in the wrong places, cash in the wrong stock?
We’re a Brisbane-based ERP consultancy implementing Odoo and MYOB Acumatica across Queensland and beyond, and we run drafts-first AI agents over both platforms. If you want to see what an exception list built from your own stock data would look like, book a free consultation. If a saved report would do the same job, we’ll say so and save you the build.
FAQ
Frequently asked questions
What is an AI inventory exception agent?
It's software that reads stock levels, sales history and reservations across every warehouse in your ERP, finds problems your reorder settings can't see, and drafts a fix for a person to approve. Typical finds include the same SKU out of stock at one site and overstocked at another, aged stock still being reordered, and stock locked against stalled orders. It never moves stock on its own.
Can Odoo 20 detect stockouts and excess stock automatically?
Odoo 20's reordering rules and replenishment dashboard catch products falling below their minimums, one product and one location at a time, and the release adds suggested min and max levels and a stock aging report. What Odoo doesn't do is connect a stockout in one warehouse with excess of the same product in another, or notice a live reordering rule on a line that stopped selling. That cross-checking is the agent layer, added alongside Odoo through its scheduled agents or MCP server rather than switched on inside it.
Does MYOB Acumatica have AI for inventory management?
Partly. Its replenishment engine is statistical: replenishment classes, seasonality factors and per-warehouse settings, with transfers from a source warehouse supported natively. MYOB's AI page as at 20 October 2026 lists an AI Assistant that answers questions about inventory and Anomaly Detection over generic inquiries, which can flag unusual stock values. Nothing shipping today reads two warehouses against each other and drafts the transfer, so that remains the agent layer.
Can an AI agent move stock between warehouses on its own?
Technically it could, and we recommend never allowing it. A misread reservation or unit of measure turns into real freight costs. The safe pattern gives the agent read-only access, has it draft the transfer with its evidence attached, and lets a person approve it inside the ERP's own workflow so the audit trail stays intact.
How do we start an inventory exception agent without disrupting the warehouse?
Pick one warehouse pair or one product category and run the agent read-only for a full ordering cycle beside your existing reports. Count how many of its exceptions were real. A high hit rate earns wider coverage; a low one usually means it found the data faults that were making your reports lie, which is worth fixing first. A scoped pilot starts from $5,000 ex GST as at 20 October 2026.