Retail

What an agent needs to know before it can price anything

Elasticity is the easy part. The hard part is the list of prices you are not allowed to set, and why.

AI pricing constraints: bu ne anlama geliyor

AI pricing constraints: from data through prediction to a recorded decision

Pricing looks like the ideal decision to automate: the objective is clear, the feedback is fast, and the data exists. Then the first recommendation comes back and somebody says “we can’t do that”, and nobody can say precisely why.

The constraints that are never written down

Price relationships within a family that customers notice if broken. Commitments to key accounts. Regional consistency policies. Competitor price-matching promises. Rounding conventions. Lines used as price perception anchors, where margin is not the objective at all.

Almost none of this exists in a system. It lives in the heads of three people in commercial.

Why this is the actual project

An agent that optimises margin without these constraints produces recommendations that get rejected, and rejection teaches it nothing because rejection is not recorded as data.

The work is to write the constraints down. Once they are explicit, the optimisation is comparatively simple — and the constraints themselves usually turn out to be worth reviewing, since several will be defended by nobody once stated aloud.

How to get the constraints out of people’s heads

Not by asking for them. Asked directly, commercial teams produce a short list of the obvious ones and forget the rest, because a constraint you apply automatically does not feel like a constraint.

Run recommendations past them instead. Every rejection is a constraint surfacing, and the question “why not?” produces a precise answer when there is a concrete number to reject.

Twenty rejections will surface more rules than an hour of interviews, and they arrive with the case that motivated them attached.

The categories worth expecting

Family relationships: the 500ml cannot cost more per litre than the 1.5L. This is the most common and the most often violated by naive optimisation.

Account commitments: a customer whose contract fixes a differential to list price. Breaking it is a legal matter rather than a commercial one.

Perception anchors: lines priced to signal value for the whole category, where margin is deliberately sacrificed. An optimiser that does not know which lines these are will raise exactly them, because they look like the largest available gain.

Change limits: how often a price may move, and by how much, before customers notice the movement itself.

Writing them down has a second effect

Several will not survive being stated. A rounding convention nobody can justify, a regional consistency policy that predates the current store network, a differential defended by someone who left two years ago.

This happens reliably enough to be worth expecting. The constraint audit is often worth more than the optimisation that prompted it, and it is cheaper.

What the agent does once they exist

Optimises inside a feasible region rather than proposing points outside it. The recommendations stop being rejected, which is the difference between a system that gets used and one that gets switched off in the second month.

And when a recommendation now conflicts with a constraint, the system can say which one — turning “we can’t do that” into “that breaks the family relationship with SKU 4471”, which is a conversation someone can act on.

The order of work

Constraints first, objective second, automation third. Reversing the first two produces the failure this article describes; skipping to the third produces a system nobody trusts.

Most pricing projects that stall did the optimisation well and the constraint work not at all — which is why they look like modelling failures and are not.

What this looks like when it works

Recommendations that arrive already inside the rules, with the binding constraint named when one binds. Commercial stops reviewing every line and starts reviewing the exceptions, which is the only sustainable version of this.

Request a Demo