# Excess inventory — action matrix

Companion to **AI agent for excess inventory and dead stock**.

Fill **Margin floor** and **Owner**. Demo SKUs are fixtures, not client markdown KPIs.

## Aging buckets (example policy — replace)

| Bucket | Days since last sale (or last receipt if never sold) | Label |
| ------ | ---------------------------------------------------- | ----- |
| Slow-moving | 45–89 | Watch; stop replenishment first |
| Aging | 90–179 | Active exit: promo / bundle / transfer |
| Dead stock | ≥180 **or** zero sales in two full seasons | Liquidation candidate — still HITL |
| Overstock | Units on hand > 90-day cover **and** inbound still open | Stop purchasing; consider cancel/defer PO (HITL) |

## Recommended actions (margin-aware)

| Action | When | Margin rule | Auto? |
| ------ | ---- | ----------- | ----- |
| **Stop purchasing** | Overstock or dead; open PO exists | N/A | Recommend only; PO change is HITL |
| **Channel transfer** | Sells on marketplace B, sits on DTC | Keep landed cost; no silent price rewrite | Recommend; transfer ticket HITL |
| **Bundle** | Complementary SKU still moving | Bundle GM% ≥ floor | Draft bundle; merch publish HITL |
| **Promo / discount** | Aging, GM% after discount ≥ floor | Cap % off in Policy, not in the prompt | Draft offer; price write HITL |
| **Liquidation** | Dead stock, floor cannot be met | Record expected recovery | HITL always |

**Never auto:** live PDP price, coupon codes, marketplace price, PO cancel, liquidation shipment.

## Sample row (fixture)

```text
SKU-HOOD-GRY-XL  | aging 112d | on-hand 84 | 28d velocity 1
GM% at -20% still 38% (above 30% floor) → draft promo, merch HITL
Open PO 40 pcs ETA 2026-09-12 → recommend defer/cancel PO, buyer HITL
Do not: stack a reorder; do not fire 40% off because the model is "confident"
```

## What the agent must cite

Every recommendation needs `evidence_tool` (position, velocity, aging, open PO, cost) and **gross margin after action**. If cost is missing, refuse the markdown path and recommend **stop purchasing** only.
