Skip to main content
Price Optimization suggests an optimal price per SKU using your historical sales data, competitor prices (if available), and a demand model. Use it when you want the system to recommend prices instead of writing the rules yourself. Unlike Dynamic Pricing, Price Optimization is suggestion-driven: it looks at how your prices have moved and how units have responded, and picks the price that maximizes a goal you set.

When to use Price Optimization

Reach for Price Optimization when:
  • You have at least a few weeks of transaction history per SKU - the model needs signal.
  • You want a goal-based recommendation rather than a deterministic rule output.
  • You want to try “what if we re-priced this category to maximize margin?” without committing to specific guardrails.
Use Dynamic Pricing instead when you have explicit constraints (margin floors, competitor parity, rounding patterns) you want enforced consistently.

Open Price Optimization

In any grid:
  1. Click Agents in the top toolbar (or the pinned Price Optimization button if you have one).
  2. Select Price Optimization from the All Agents modal.
  3. The configuration dialog opens with a Config by AI panel beside three tabs - General, Advanced, and Source - and a Workflow panel on the right that shows the run pipeline: Optimize Prices → Apply Pricing Rules → Price Approval.
The dialog is a short wizard: fill each tab and use Next to move through them, then run the optimization from the final step.
Price Optimization - General tab with optimization goal and expected-impact timeframe

Configure by AI - describe what you want in plain language

The Config by AI panel sits beside the configuration tabs as a chat-style assistant, usable at any point. Use it when you know the outcome you want but not which knobs to turn.
  • Prompt - describe your goal in 1-3 sentences. Example: “Maximize profit across the KVI products without dropping margin too far or moving prices more than 10%.”
  • Run AI - generates values into the configuration tabs.
AI output is a starting point. Review the generated configuration before running - the AI gives a structured guess, not a final answer. Because Config by AI is independent of the tabs, you can keep editing the configuration manually after the AI fills it in - the two surfaces don’t lock each other out.

Configure across three tabs

The tabs can be filled in order using Next. Config by AI lives beside the tabs and can be used at any point.

General - goal and timeframe

  • Optimization Goal - Maximize Profit (prioritize margin and bottom-line return) or Maximize Revenue (drive top-line growth and sales volume).
  • Expected Impact Timeframe - how far ahead the optimizer projects the impact of the new prices when scoring them (e.g. Next 30 days).

Advanced - confidence tiers and thresholds

The Advanced tab controls how the model treats SKUs of differing signal strength:
  • Confidence Tiers - toggles for the tiers the optimizer will produce recommendations for (item-level and group-level tiers, including seasonal variants). Lower tiers borrow demand signal from clusters of similar SKUs so sparse items still get a sensible, lower-confidence suggestion.
  • Force Full Recompute - recompute every SKU from scratch instead of reusing cached model fits.
  • Confidence Thresholds - the fit quality (R²) required for a SKU or group to qualify for a higher confidence tier (e.g. Item High R² threshold, Group High R² threshold). Raise them for stricter recommendations, lower them to get suggestions for more SKUs.
Defaults are conservative. Start there and widen only when you trust the recommendations.

Source - scope and inputs

  • Scope - run against the Full grid or a Sample of rows to validate the setup before a full run.
  • Inputs - map the grid columns the model reads: Price (current selling price) and Cost (cost per unit). Historical sales/transactions provide the demand signal the model fits, and competitor prices (if present) let the model account for competitive position.
Without sales history the model has nothing to fit; without Cost the model can’t compute margin-based goals.

Read the result

After a run, each recommendation lands in its own cell in the output grid - one value per cell, so recommendations are easy to scan and act on row by row. Per recommendation you can:
  • Set the price type the recommended price should apply as (e.g. regular or promotional).
  • Set the effective date the price should take effect.
Supporting columns give the context behind each recommendation:
  • Optimal Price - the recommended price per SKU.
  • Expected Revenue Lift - estimated impact on revenue at the recommended price (vs. current price).
  • Expected Margin Change - margin pp change at the recommended price.
  • Confidence - how strong the model’s signal was for that SKU.
Click any Optimal Price cell to open the right-side Price Analysis panel - same panel pattern as Dynamic Pricing - which explains why that price was proposed (current price, optimal price, elasticity used, expected lift). When you’re happy with a recommendation, send it through the price approval workflow to review and publish it.

Common pitfalls

  • Sparse sales history - SKUs with very few transactions get low confidence and small recommended changes. That’s intentional. For SKUs too thin to model on their own, the optimizer borrows demand signal from a cluster of similar SKUs rather than dropping out, so sparse items still get a sensible, lower-confidence suggestion.
  • Recommendations go through approval, not straight to live - Price Optimization proposes prices; you review, adjust, and publish them through the price approval workflow. Nothing goes live without your sign-off.
  • Goal mismatch - if you set Goal = Revenue, expect the model to drop prices on elastic SKUs. If you set Goal = Profit, expect the opposite. Pick the goal that matches the decision you’re making.