TECH & ONTOLOGY

What "POSM Recognition" Actually Has to Understand

Reading time:
8 mins

TL;DR
  • Reading a promotional display with a general vision model works and it is genuinely useful. Modern OCR and vision-language models will tell you a display is present, what brand it carries and what the sign says.
  • POSM compliance is three steps further on. It requires resolving the offer to a comparable mechanic, binding that mechanic to the specific SKUs it governs and identifying which version of the asset is actually in the store.
  • Only the first of those is a text problem. The other two need a reference catalogue. Claims of "no catalogue needed" sound attractive because building one used to be slow. With Neurolabs, it isn't any more.

What POSM compliance actually asks

POSM compliance tells us whether the promotional material in a store matches the promotion the brand funded: the right asset, carrying the right offer, applied to the right products, in the right place.

Notice how much of that sentence is relational. Not "is there a poster," but "is this the poster we paid for, saying what we agreed, over the products it was meant to sell." Every clause is a comparison against a plan.

Start with the money

Trade spend can reach 27% of revenue [9]. On many P&Ls it is the single largest line after cost of goods and it has spent most of its life as the least verified one. Materials shipped is not materials deployed. A display that never went up, or went up in the wrong place at the wrong price, still consumed the money.

The gap is not subtle when someone finally measures it. In one analysis at a major beverage bottler, head office assumed promotional compliance was running at roughly 90%. When the images were examined, the real figure was closer to 50%. Half of a funded, planned promotion was not running as designed and until the data existed nobody could say which half.

So the appetite for automated POSM verification is entirely rational. The value only lands, though, when a verified read is precise enough to change a spending decision.

What AI-powered POSM extraction genuinely does well

Open-vocabulary detection, specialised OCR and frontier vision-language models are very good at this. Without ever having seen your artwork, they will tell you a display is present, whether it is a floor unit or a shelf strip and that the sign reads two for three pounds, across languages and through partial occlusion.

We use the same tools: OCR and large vision models, with extraction treated as configurable rather than fixed. In our platform a recognised concept carries a set of modalities (think of them as rich properties), each returning ranked predictions with a confidence score and a main value.

And parts of it are commoditised. PaddleOCR is Apache 2.0 and runs on a CPU [11]; Qwen3-VL reads a shelf edge about as well as most hosted APIs. Open weights now match or beat the closed models on the document-parsing leaderboards [2][4][5].

Which is why the category keeps concluding that POSM recognition is solved. It isn't. If reading a document is close to solved by weights you can download, reading the poster is not where a POSM programme is won or lost. Detection and extraction are steps one and two of five. The three above them are where compliance lives.

The 5 steps of POSM Compliance

Steps The question What it takes Example
1 Is there promotional material in the image? Detection A shelf-edge runner and a display label are found in a cluttered cooler
2 What does it say? OCR and vision-language extraction Reads "2 for $4.50" and "$2.89" off the runner
3 What offer is that? A mechanic, not a string Resolves to multibuy, qualifying quantity 2, value $4.50
4 Which products does it govern? Spatial reasoning, a catalogue and often the TPO plan Binds that offer to the 24oz Coca-Cola SKUs on shelf row 2, not the 20oz beside them
5 Which version of this asset is it? An onboarded promo in the product master catalogue Identifies it as this quarter's 24oz runner, not last quarter's identically worded one

Steps one and two a general model handles well. Compliance is answering the rest: three, four and five.

Two worked examples

Example one: a display, with no prior knowledge at all

A standard retailer display label. Coca-Cola Soft Drinks, select varieties, 12 pack, 12 fl oz cans. $11.99 each. Buy 2, get 1 free. With card.

The same display, processed. Every SKU multi-pack recognised, the promotional label detected as its own concept, a spatial primitive in the CPG ontology and the same building block a SKU or a price tag is, with its extracted modalities on the right. The promo itself matched no catalogue item and is marked Unknown.

Every case pack is detected and bounded. The promotional label is detected as its own concept. And the extraction returns the shelf price, the qualifying quantity, the composite price-quantity value and the offer text.

Note what is not there. The label matched no catalogue item. It is marked Unknown, with no product reference at all. Nothing about this asset had to be onboarded in advance.

The offer text on its own is not enough to close anything off. "Buy 2, get 1 free" could apply to the 12-packs beneath it, the single cans on the next shelf, or the whole bay. Trade spend is committed against specific SKUs, so the association has to be made at that level before a campaign can be settled.

That is what the spatial reasoning does here. Containment within the display region, the geometry of the stack and the SKU-to-promo association together let us say the offer governs the 12-pack SKUs in that display and not the ones around it. From there you have, at store level and with no promo catalogue to maintain: the shelf price, the offer, the mechanic in structured form and the list of SKUs it applies to.

Point that at a trade promotion calendar and you can answer the question trade marketing actually asks: is the promotion we funded live in this store, on the products we funded it for, at the price we agreed, this week? Yes or no, per store, with photographic evidence attached. That is a claim you can close a campaign against.

Example two: a cold fixture, where the same data is not enough

A cold door. Five shelves: cans on top, 20oz and 24oz bottles below, promotional runners along the shelf edges.

One shelf edge, close up. $2.89 · 24oz Coca-Cola Products · 2 for $4.50 · $2.89.

The fixture processed. Shelf rows decomposed, the runner matched to a specific catalogue asset and the modalities returned for the selected concept.

The fixture decomposes into shelf rows and the modalities on the selected runner read:

price
2.89 · 4.50
quantity
1 · 2
promo:price
2.89_1 · 4.5_2
promo:text
"24oz coca-cola products" · "2 for $4.50 coca-cola"
realogram:shelf
2
fixture
cold

4.5_2 is the line to dwell on. "2 for $4.50" has become a value and a qualifying quantity. It is a mechanic that can be compared to a plan and to other mechanics, regardless of how the retailer chose to word it.

realogram:shelf: 2 places it on a specific row. fixture: cold distinguishes a cold door from an ambient display, so the same recognition stack reports both without needing a separate product.

Then the part the display example could not do. The runner is matched to a specific catalogue asset (a particular promotional runner, not just "a runner"), with the detected crop shown against the catalogue reference so a person can confirm or reject it.

This matters most to marketing. Shopper activation is supposed to carry the brand campaign into the store and whether it did is a question about which creative went up, not whether some promotion did. A brand team running a seasonal or licensed campaign needs to know their asset is the one on the fixture, in the accounts they paid for. Without asset identity, shopper activation and brand marketing are measured on separate evidence and nobody can say whether the two were ever aligned.

The identity step. The detected crop sits beside the catalogue reference it was matched to, RUNNER_COKE, with the match offered at 54% confidence rather than asserted and controls to reject it or set it back to unknown.

Look closely at the two thumbnails, because this is the whole argument in one screenshot. The detected runner is the 24oz strip carrying 2 for $4.50 and $2.89. The catalogue reference beside it is a 20oz runner at $2.49. Two red Coca-Cola shelf runners, same brand, same visual language, different pack size and different price point.

That is exactly why the confidence is 54% and not 95%. It is exactly the case the earlier sections were about. A system that returns one confident label would have quietly booked this as RUNNER_COKE and moved on. Every number downstream would have inherited the error. Instead the ambiguity is visible, both candidates are on screen and a person decides.

Fifty-four percent is not a figure most vendors would put in a screenshot. It is the right one to show. It is honest about a genuinely hard discrimination task and it demonstrates the behaviour that matters more than any accuracy headline: when the system is unsure, it says so.

Why that last step is worth paying for is the subject of the last section. First, the two steps in between.

Step 3: from promo text to promo mechanic

A promotion is a structured concept: a mechanic type, a qualifying condition, a value, a scope. Reading the text off a poster is only the first step. The mechanic still has to be resolved and where that resolution happens decides whether the data is usable.

Consider what an ordinary grocery aisle contains:

  • Multibuy: two for £3, three for two, two for one
  • Free product: buy one get one free, buy two get the third free, 25% extra free
  • Straight discount: 20% off, £1 off, was £2.50 now £1.99
  • Price-marked pack: the price is printed on the packaging rather than the shelf edge, which changes who is accountable when it's wrong
  • Threshold: spend £10, save £2
  • Loyalty-conditional: a members-only price beside the standard one, so one shelf edge carries two valid prices and the compliance answer depends on which the plan funded
  • Cross-category bundle: a meal deal, where the qualifying products sit in different fixtures and may not appear in the same photograph
  • Multi-tier: "two for £3 or £1.75 each", a single asset carrying two mechanics at once

And the trap that decides whether your compliance data is usable at all:

"Three for two" and "buy two get one free" are the same offer. "Two for £3" and "£1.50 each when you buy two" are the same offer. A system that compares extracted text sees four different promotions.

If a compliance engine treats wording variants as distinct mechanics, the compliance rate is not slightly wrong. It is arbitrary. Stores get flagged non-compliant for running exactly the funded offer in the retailer's own house wording. Someone spends a field visit correcting a display that was already correct and the promotion that genuinely failed two aisles over goes unreported.

The fix belongs upstream

Our pipelines are built from modalities and a modality is not a fixed column in a schema. It is something you define. And critically, you can constrain its output to a specific vocabulary.

A free-text modality returns whatever the sign happens to say. A constrained modality can only return a value from a list you define. Nothing outside it is a valid answer.

So rather than extracting "buy 2, get 1 free" as text and hoping a downstream rule recognises it, you define a mechanic modality whose vocabulary is the set of mechanics that actually exist:

promo:mechanic
one of { multibuy · bogof · extra_free · straight_discount
· price_marked · threshold · loyalty_conditional
· bundle · multi_tier }
promo:price
value_quantitye.g. 4.5_2
promo:condition
one of { none · loyalty_card · spend_threshold }

"Three for two" and "buy two get one free" cannot come back as different mechanics, because no such output exists. The ambiguity is never created, so nothing downstream has to resolve it. That is the difference between a system that reports promotions and one you can trust to compare them.

The mechanic is something we construct, so it can be yours

A mechanic is not a fixed field we ship. We build it out of modalities and modalities are flexible: you choose which ones apply and you choose what each one is allowed to return. Which means the vocabulary can be the customer's own taxonomy, the mechanic types their trade promotion system already uses.

If a brand's TPM platform recognises eleven mechanic types, the modality is constrained to those eleven. The recognition output is then directly joinable to the trade promotion calendar: no mapping layer, no reconciliation table, no semantic drift between what the model reports and what the planning system means. Two teams stop arguing about whether a "multi-buy" in the compliance report is the same thing as a "multi-buy" in the promo plan.

That is what a shared execution signal has to mean in practice. Not a dashboard everyone looks at, but a vocabulary everyone's systems already speak.

Step 4: which products does it actually govern?

In the earlier piece on the CPG ontology I described associating a price to the nearest SKU within a region of interest. In messy real-world environments, that can break:

  • A poster hanging above three brands' facings. Nearest is meaningless. It governs a campaign, not a neighbour.
  • A shelf strip that has drifted one facing left after a reset. Nearest is now confidently wrong.
  • Two adjacent promotions with overlapping zones of influence.
  • Promotional material for a product that is out of stock, so the SKU it governs is not in the image at all.

Proximity alone won't do it. You need containment within a region of interest, fixture geometry, shelf-row decomposition and the catalogue binding that turns a detected shape into a specific product.

And you need the plan as an input, not just as the thing you compare against afterwards. Knowing which SKUs the promotion was meant to cover turns an open question (what might this sign refer to) into a narrow one: does the evidence support the association the plan asserts.

The out-of-stock case shows why it matters. Material present, offer correct, product absent. Step two calls that display compliant, because everything visible is right. Step four calls it the most urgent fix in the store.

Step 5: the text on a poster is not the identity of the asset

Two pieces of promotional material can carry identical text and be operationally different things:

  • Artwork refresh. Same offer, this quarter's creative. Last quarter's version should have come down four weeks ago and the fact that it hasn't is the compliance failure.
  • Format and size. An A4 header card and a full-height floor unit carrying the same message are different funded line items, with different costs and different execution standards.
  • Retailer-exclusive versions. Identical offer, retailer-specific execution, negotiated separately.
  • Funded tier. A premium display pack and a standard one running the same mechanic.
  • Licensed or seasonal creative where the offer text never changes.
  • Regional and language variants of a single campaign.

In every one of those, the words are the same and the thing is different. Which gives the claim this section exists to make:

The text on a poster is not the identity of the asset. When the difference between two assets is not in the text, no amount of reading the text recovers it.

That is not a competitive point. It is a statement about recognition in general and it constrains us exactly as much as anyone else. A model cannot reliably distinguish two things it was never shown to be distinct. You can get lucky on incidental cues (a layout difference, a logo placement) but you cannot systematically resolve an identity you have no reference for and a compliance programme cannot run on luck.

This is also where ranked predictions earn their place. When two onboarded variants are genuinely close, the useful output is not a confident single label. It is the top candidates with their scores, so the ambiguity is visible and routes to review rather than resolving silently into whichever variant happened to win. A system that only ever returns one answer cannot tell you when it nearly returned a different one.

The same problem is arriving from another direction, incidentally. Packaging design across large portfolios has been converging, with sugar and flavour variants of the same brand made deliberately more similar. Near-identical discrimination is getting harder, not easier. The industry's own design trend is working against the idea that you can skip the reference set.

Why the identity of the runner is worth money

Everything above the identity step verifies an offer. The identity step verifies an asset. The asset is frequently the thing being paid for.

Credits. A brand agrees to pay a retailer a credit for displaying a specific promotional runner, in that fixture, for that period. The credit is not owed because a promotion was displayed. It is owed because that asset was. Verifying the offer text does not discharge the obligation. Identifying the asset does.

Customer marketing agreements. A CMA commits the brand to a set of in-store executions with funding attached to named elements. Settling one requires knowing which of several near-identical runners was actually up. Two runners can advertise the same offer, sit in different agreements, at different values, for different periods.

So "no catalogue needed" is not simply a faster route to the same place. Extraction tells you the promotion ran. Identification tells you which funded asset delivered it: the question a credit or a CMA settlement turns on. One is compliance reporting. The other is money.

We removed the cost of the catalogue, not the catalogue

The objection that makes "day one, no catalogue" attractive is real and deserves a real answer. Building a catalogue by photographing everything in the field genuinely was slow and for years that was the honest price of accuracy.

That has changed and the shape of the change is visible in how the catalogue is structured. A catalogue item is the product identity: barcode, brand, size, flavour, container type, packaging size. Beneath it sit variations, each a distinct visual appearance of that item. Beneath each variation sit seeds, the visual evidence the model learns from, typed as a thumbnail, a synthetic render or a real photograph.

Two consequences matter commercially.

Variation is a first-class level in the model, not an edge case. Near-identical-but-different is where the data structure begins, rather than something patched in later.

A variation can be onboarded from artwork or from synthetic renders. You do not need a field photograph of an asset to recognise that asset. Which is why new SKUs onboard inside a day and a catalogue goes live in weeks rather than quarters.

So "you would need a catalogue" is no longer a cost objection. It is a design choice. The vendors leaning hardest on avoiding it are optimising away the one structure that resolves variant identity.

It is worth adding that the catalogue is governed rather than a free-for-all: entries can run through moderation, with defined validation on what is allowed in. If the catalogue is the reference every compliance number depends on, who is permitted to change it is not an administrative detail.

And it reframes onboarding entirely. Onboarding a runner is not overhead accepted for tidiness. It is what makes the asset a payable, auditable object. If a brand pays credits against specific POSM, the reference set is not administrative cost. It is the ledger.

Where this sits on the Execution Maturity Ladder

The Execution Maturity Ladder in our pillar piece runs from no data at all to fully connected execution. It maps onto these steps almost exactly.

Steps one and two get a programme to Level 2, digitised capture: you have images and descriptions of what is in them. Useful and a long way from nothing.

Levels 3 and 4 need steps four and five: corrections delivered by the next visit and rules replacing rep discretion. You cannot instruct a rep to fix a specific thing you cannot specifically name. "Something promotional here looks wrong" is not an instruction. "This is last quarter's header card, the current one is in the stockroom and the price should read two for three pounds" is.

What to ask any recognition vendor about POSM

Question Why it separates vendors
If two promotions have the same mechanic but different wording, does your system report them as the same promotion? Tests whether the mechanic is a constrained value or a string. A no makes every compliance percentage unreliable
Can the mechanic vocabulary match the one in my trade promotion system? Decides whether the output joins to my calendar or needs a mapping layer nobody maintains
How do you determine which SKUs a piece of promotional material applies to? "Nearest" is a heuristic, not an answer. Ask what happens with a poster above three brands
What do you report when the material is correct but the product is out of stock? Reveals whether compliance is checked against a plan or against the image alone
How do you distinguish this quarter's artwork from last quarter's when the offer text is identical? The variant question. Any answer that doesn't involve a reference is not an answer
What does the system return when it is genuinely unsure between two variants? A single confident label on an ambiguous case is worse than a ranked pair
Can I define a new attribute to extract without waiting for your roadmap? Fixed schema, or a modality I can configure

A Note from Patric Fulop, Co-Founder & CTO of Neurolabs

I want to be careful not to argue against something that works. Reading a display with a general model is real, we do it and anyone dismissing it is selling you something.

But there is a pattern worth naming. Every few years a capability arrives that handles the visible nine-tenths of a problem and the category briefly agrees the problem is finished. What's left is the tenth the plan actually depends on: not what the sign says, but which sign it is and what it applies to. That tenth is where the trade money sits.

The part I find most interesting is that the hard problem is often solved by narrowing rather than by scaling. Constraining a model's output to the vocabulary a business already uses does more for the reliability of a compliance number than another few points of raw extraction accuracy ever will. The most powerful solutions usually are the simple ones.

If you take one question into your next vendor conversation, make it this: show me two of my own promotional assets that read the same and are different, then tell me which is which. The answer tells you which step you are buying.

Request a walkthrough

Earlier in this series: the CPG ontology behind the extraction · where image recognition sits in the CPG tech stack


FAQ's

What is POSM compliance?

POSM compliance is whether the promotional material in a store matches the promotion the brand funded: the correct asset, carrying the correct offer, applied to the correct products, in the correct location. It is a comparison against a plan, not a description of a photograph.

Can AI recognise POSM without a product catalogue?

It can detect promotional material and read what is printed on it without any catalogue and that is genuinely useful for discovery and for cold-start coverage at a campaign launch. It cannot reliably tell you which of several near-identical versions of an asset is present, or which specific SKUs an offer governs, because neither is recoverable from the image alone.

Why do similar promotions get confused by image recognition?

Because textual similarity and offer identity differ in both directions. "Three for two" and "buy two get one free" are the same offer expressed differently, while two posters reading "two for £3" may be different funded assets from different quarters. Systems that compare extracted text rather than resolved mechanics get both cases wrong. Constraining the mechanic to a fixed vocabulary removes the first problem entirely; a reference catalogue is the only thing that addresses the second.

What accuracy should I expect from POSM recognition?

Ask instead what the accuracy is measured on. Detecting that promotional material is present is a much easier task than identifying which version of an asset it is and a single headline figure usually reflects the former. Ask for the number on the hard cases: near-identical variants, promotional material governing out-of-stock products and multi-tier offers.

How long does it take to onboard new promotional material?

With artwork or synthetic renders as the input rather than field photographs, a new asset can be onboarded in hours and new SKUs inside a day. The historic assumption that a catalogue takes months is what makes "no catalogue needed" sound like a good trade and it is the assumption that has changed.


Sources

  1. The Execution Gap: why it looks different in every market, Neurolabs, 2026 · neurolabs.ai
  2. OmniDocBench: Benchmarking Diverse PDF Document Parsing with Comprehensive Annotations, OpenDataLab, CVPR 2025 · arXiv:2412.07626 · leaderboard and code
  3. OmniDocBench is Saturated, What's Next for OCR Benchmarks?, LlamaIndex · llamaindex.ai
  4. olmOCR-Bench, Allen Institute for AI · 7,010 unit tests across 1,402 PDFs · leaderboard · olmOCR project
  5. OCRBench v2: An Improved Benchmark for Evaluating Large Multimodal Models on Visual Text Localization and Reasoning · arXiv:2501.00321 · project page
  6. Neurolabs Docs · docs.neurolabs.ai
  7. From Pixels to Decisions: The CPG Ontology That Turns Visual Data into Insights, Neurolabs · neurolabs.ai
  8. From Silos to Synergy: The CPG Tech Stack and the Role of Visual AI, Neurolabs · neurolabs.ai
  9. Trade promotion spend as a share of CPG revenue · What is Trade Promotion Management?, Salesforce
  10. BenchLM · leaderboard aggregator, 401 models across 406 benchmarks, refreshed 25 August 2026 · benchlm.ai.
  11. What is PaddleOCR? · LlamaIndex glossary · llamaindex.ai. Baidu, Apache 2.0, built on PaddlePaddle, 80+ languages, modular detection and recognition.

Patric is Co-Founder and Chief Technology Officer at Neurolabs. He leads the engineering and product teams behind Neurolabs' synthetic image recognition platform, building the technology that makes real-time shelf visibility possible at scale.

MONTHLY NEWSLETTER

Get the latest Execution Intelligence news and resources direct to your inbox

Industry insights, retail intelligence and field-tested execution playbooks, so you always know what's happening in store.

One email a month. No spam. Unsubscribe anytime.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.