AI Agent for Excess Inventory and Dead Stock (2026)
Quick summary: An AI agent for excess inventory recommends stop-buy, transfer, bundle, promo, or liquidation — margin-aware, never an uncontrolled markdown. Reuse Gateway ~180→95 ms and ~$791/mo at 50K.
Key Takeaways
- Reuse Gateway ~180→95 ms and ~$791/mo at 50K
- On 17 June 2026, AgentCore Harness reached general availability — a config-driven loop for a scheduled excess job (What's New)
- After 30 July 2026, Agents Classic is the wrong net-new host (lifecycle)
- First-party signals we reuse (not eCommerce outcomes) — Gateway server-side tools cut median tool round-trip ~180 ms → ~95 ms on a B2B CRM assistant (12 tools, ~8k turns/day) — Gateway post
- Platform TCO silhouette: support-style AgentCore at 50K sessions/mo ~$791/mo platform + model (decision guide)

Table of Contents
Dead stock is a working-capital problem that shows up as a merchandising argument. Slow movers, aging units, overstock next to an open PO, and “we’ll discount it later” that becomes never. None of that needs a chat widget. It needs a margin-aware action, then a human who owns price.
On 17 June 2026, AgentCore Harness reached general availability — a config-driven loop for a scheduled excess job (What’s New). After 30 July 2026, Agents Classic is the wrong net-new host (lifecycle). This post is a sample action matrix, not a client recovery-rate study. Aging buckets and GM% floors below are labels for you to replace.
First-party signals we reuse (not eCommerce outcomes) — Gateway server-side tools cut median tool round-trip ~180 ms → ~95 ms on a B2B CRM assistant (12 tools, ~8k turns/day) — Gateway post. Platform TCO silhouette: support-style AgentCore at 50K sessions/mo ~$791/mo platform + model (decision guide). Model your mix on the AgentCore pricing calculator.
Reproduce this — Copy
excess-inventory-action-matrix.md. Fill Margin floor and Owner. Ship gates:monday-checklist.md.
This is series part 23. It consumes class D from the inventory reorder brief. PO change still belongs with purchase orders. Back-office task 2 is the parent ops slice. Personalized offers and dynamic merchandising are later series posts — this matrix stops at the inventory recommendation.
Do not merge this prompt with reorder. Class A wants a draft PO. Class D wants to stop the next PO. One specialist with both write sets is how a markdown tool fires on a stockout SKU.
Opinionated take: recommend stop purchasing first, then transfer, bundle, promo, liquidation — never an uncontrolled markdown. Trade-off: stock sits longer than a cowboy 40% off. You also do not train the site that every slow SKU becomes a coupon.
Why this matters / who breaks without it: finance breaks when GM% after discount is below the floor the deck promised. Paid media breaks when a live SKU is 40% off while the campaign still bids full price. Planning breaks when you liquidate and still receive. The agent is useful when aging, cost, inbound, and channel velocity are in different systems.
Automate first
If ERP already flags “no sale in 90 days” and merch has a markdown calendar, do not wrap that in an agent until the calendar fails (inbound ignored, GM% not computed, ads still live). Rules own aging buckets. The agent joins cost, open POs, and channel velocity and drafts the next action.
Shopify Flow “if inventory > N then tag” is not this job. Flow cannot compute post-discount GM% against an open PO. Keep Flow for the tag. Keep the agent for the recommendation. Keep merch for the price.
The matrix
From the artifact:
| Action | When | Auto? |
|---|---|---|
| Stop purchasing | Overstock or dead; open PO exists | Recommend; PO change HITL |
| Channel transfer | Sells elsewhere, sits on DTC | Transfer ticket HITL |
| Bundle | Complementary SKU still moving | Draft; merch publish HITL |
| Promo / discount | Aging; GM% after discount ≥ floor | Price write HITL |
| Liquidation | Dead; floor cannot be met | Always HITL |
Never auto: live PDP price, coupon codes, marketplace price, PO cancel, liquidation shipment.
flowchart TD
AgingInventory[Aging Inventory]
AIAgent[AI Agent]
ActionMatrix[Action Matrix]
MerchApproval[Merch or Buyer Approval]
ExitAction[Stop Buy Transfer Bundle Promo Liquidate]
AgingInventory --> AIAgent
AIAgent --> ActionMatrix
ActionMatrix --> MerchApproval
MerchApproval --> ExitActionIf cost is missing, refuse the markdown path. Recommend stop-buy only.
Margin is a tool result, not a vibe. The matrix should compute GM% at the proposed % off from unit cost + current price. If cost is unknown, the only legal recommendation is stop purchasing (and defer inbound). Bundles need a complementary SKU that still has velocity — do not bundle two dead items and call it merchandising.
Channel transfer is not a price write. It is a ticket: move units, keep landed cost, let the destination channel’s price list apply. Marketplace repricers stay out of this agent.
Production shape
Bedrock = model. Harness or Runtime = host. Gateway + Cedar on every price and PO write. Browser off. Next.js can be the merch approval UI — not the runtime. Strands is not the VPC.
| Piece | Role |
|---|---|
| Gateway | Position, velocity, aging, cost, open POs, optional channel stock |
| Policy | DENY updatePrice, createDiscount, cancelPurchaseOrder except merch/buyer JWT |
| Identity | Shopper tokens never see this specialist |
| Observability | Markdown drafts vs actual price writes; PO-change attempts |
No native Shopify connector. Attach Admin, PIM, or ERP as your OpenAPI.
Context: Harness GA 17 June 2026 or Runtime; Gateway Policy LOG_ONLY then ENFORCE.
# From excess-inventory-action-matrix.md — fill floors for your store
Slow-moving 45–89d → stop replenishment first
Aging 90–179d → promo/bundle/transfer if GM% ≥ floor
Dead ≥180d → liquidation candidate, still HITL
Overstock + open PO → defer/cancel PO before markdownWeek-one evals: inbound ETA inside 14 days blocks markdown-first; GM% below floor fails even if aging is 180d; updatePrice on a shopper JWT must DENY.
What broke
What broke — Sample turn recommended 40% off on
SKU-HOOD-GRY-XLbecause aging was 112 days. An open PO for 40 units had ETA in five days; GM% at −40% was below the 30% floor the prompt mentioned but Policy never encoded. Detection: eval requiredgetOpenPurchaseOrders+ post-discount GM%; the turn had neither in the tool trace. Fix: matrix order is stop-buy / defer PO, then margin-checked promo; Cedar DENYupdatePrice; merch HITL. Lesson: aging without inbound and cost is how you discount next week’s receipt.
What This Post Doesn’t Cover
- Live offer engines and session-aware coupons (later merchandising posts in this series).
- Reorder class A/B/C — inventory agent.
- Marketplace liquidation networks as first-party tools.
- Measured sell-through or GM$ recovered from a FactualMinds client.
- AgentCore Browser on a wholesale buyer portal.
- Classic Agents cutover.
- A native Shopify markdown app (it does not exist).
What to Do This Week
- Clone
excess-inventory-action-matrix.md. Set a GM% floor with finance in the room. - Keep the aging report if it already works. Add the agent only to join cost + open POs.
- Read tools only: position, velocity, aging, cost, open POs.
- Harness or Runtime; Policy
LOG_ONLY. Prove DENY onupdatePrice. - Eval: inbound PO must block a markdown-first recommendation.
- Price the job on the AgentCore pricing calculator. Need Policy on price writes? Contact us, Bedrock, retail / eCommerce.
Full ship list: monday-checklist.md.
If you only do one thing
Encode the GM% floor and open-PO check in the action matrix and in Cedar — not only in the prompt. Stop-buy before markdown.
FAQ
When should we NOT use an AI agent for excess inventory?
Skip it when an aging report plus a merchandiser already decides markdowns, and the bottleneck is photography or channel mix, not analysis. Also skip it if you cannot name a gross-margin floor. An agent that “clears stock” with no floor is a liquidation bot you did not approve.
What could go wrong if the agent auto-markdowns?
You discount a SKU that has inbound arriving this week, cut below cost, or fire a sitewide code while ads still spend at full price. Price writes, coupons, and marketplace prices stay HITL. Policy DENY updatePrice and createDiscount for non-merch tokens.
What could go wrong if we liquidate without stopping purchase?
You sell through dead units at 20 cents on the dollar while a PO for the same SKU is still open. Every dead-stock row must read open POs. Recommend defer or cancel — buyer HITL — before you talk liquidation.
How is this different from the reorder inventory agent?
Reorder asks what to buy. This agent asks what to stop buying and how to exit units you already own. Same Gateway family, different writes (price, transfer, PO change), different evals. Do not merge the prompts in week one. See inventory reorder.
Should excess-inventory work run on Harness or Runtime?
Harness is enough for a scheduled matrix with read tools plus draft recommendations. Use Runtime plus Strands if merchandising and purchasing specialists must not share write tools. Net-new builds should not use Agents Classic after 30 July 2026.
Is there a native Shopify AgentCore connector for markdowns?
No. Price, discount, and transfer APIs are your OpenAPI or MCP targets on Gateway. Do not wait for a Shopify AgentCore markdown app.
AWS Cloud Architect & AI Expert
AWS-certified cloud architect and AI expert with deep expertise in cloud migrations, cost optimization, and generative AI on AWS.




