> ## Documentation Index
> Fetch the complete documentation index at: https://docs.retailgrid.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Inventory-aware pricing with GMROI

> Optimize prices for GMROI so they reflect both margin and how fast inventory turns - with days-of-supply guardrails and end-of-life markdowns.

**GMROI** is a third optimization goal in [Price Optimization](https://docs.retailgrid.io/agents/price-optimization.md), alongside Maximize Profit and Maximize Revenue. Where those two look only at margin or volume, GMROI (gross-margin return on inventory) weighs margin against how fast a SKU's stock is turning - so prices protect fast movers from stocking out and clear slow movers before they age.

Use it when inventory position matters to the price, not just elasticity: seasonal stock, perishable or end-of-life ranges, or any category where capital tied up in stock is the constraint.

## How it reads inventory

GMROI routes each SKU by its **projected days of supply** - how many days current stock will last at today's price, from the seasonal demand forecast (the same figure as the [Forecasted days of supply](https://docs.retailgrid.io/reference/metrics.md) metric). Around that it applies the guardrails you set and still runs your pricing rules as the final gate.

## Configure a GMROI run

On the **General** tab of the Price Optimization dialog, set **Optimization Goal** to **GMROI**. Two inventory controls then apply:

* **Days of Supply min / max** - the healthy band you want stock to sit in, in days. Defaults to **7** and **30**. Below the minimum a SKU is heading for a stockout; above the maximum it is overstocked. The minimum must be lower than the maximum.
* **End-of-life date** (optional, per SKU) - a date by which the stock should be cleared. The optimizer treats the days remaining until then as a deadline for markdowns.

Everything else on the **Parameters**, **Rules**, and **Automation** tabs works exactly as for a profit or revenue run.

## What the optimizer does with it

GMROI adjusts to how much inventory configuration you've provided, so it never breaks for categories that aren't set up yet:

* **No days-of-supply band and no end-of-life date** - it falls back to profit-only and behaves like a Maximize Profit run.
* **An end-of-life date but no days-of-supply band** - it adds deadline-driven markdowns as the date approaches.
* **A days-of-supply band set** - it routes on projected days of supply: price up hard when a SKU is close to a stockout, optimize for profit while it sits in the healthy band, and mark down - more steeply the closer the deadline - when it is overstocked or near end-of-life.

Whatever branch a SKU takes, your pricing rules (margin floor, competitor corridor, price-change limit, rounding, and the rest) run last as guardrails on the recommendation, so a markdown can't breach your margin floor and a price-up can't jump further than your change limit allows.

## Read the result

GMROI recommendations land in the grid's **Price Approval** tab as a **Proposed Price** per row, with the same supporting columns as any optimization run, plus the forecasted sales impact over your chosen horizon. Open the **Price Analysis** panel on any row to see why that price was proposed, then review and publish through the [price approval workflow](https://docs.retailgrid.io/agents/price-approval.md). When a rule held a price during the run, Price Approval shows the blocked action rather than reporting no change.

## Common pitfalls

* **No forecast, no routing.** A SKU with no stock value or no forecast can't be placed on the days-of-supply band; it falls back to profit-only. Make sure stock is loaded and the SKU has enough history to forecast.
* **Too tight a band.** A very narrow days-of-supply band pushes more SKUs into the emergency and clearance branches. Start with the 7/30 default and widen or narrow once you've seen a run.
* **Rules still win.** GMROI proposes; your pricing rules and your approval step still gate every price. Nothing goes live without your sign-off.

## Related

* [Price Optimization](https://docs.retailgrid.io/agents/price-optimization.md)
* [Forecasted days of supply](https://docs.retailgrid.io/reference/metrics.md)
* [Pricing rules guide](https://docs.retailgrid.io/agents/pricing-rules-guide.md)
* [Review and approve price changes](https://docs.retailgrid.io/agents/price-approval.md)
* [Sales forecast & price impact](https://docs.retailgrid.io/agents/sales-forecast.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.