Merchandising & on-device AI

A shelf gap is not
a percentage.

It's money, leaving. Most merchandising tools hand you a store average and let you work out what it cost. We weight every rule by what that SKU actually earns, answer in currency per week at stake, sort worst-first, and attach the order that fixes it.

01 · Perfect Store

Weighted by what
it actually earns.

In production

You build the scorecard in the portal — sections, rules, weights — and target it at an org, a route, a store or a store group. The device resolves the right one by precedence and scores it offline. The scoring engine exists twice on purpose, once on the server and once mirrored on the handset, so the number is identical either way.

Proven end-to-end on real data. An out-of-stock on a high-revenue SKU scored QAR 951 per week at stake. The identical out-of-stock on a low-revenue SKU scored QAR 0. A flat store average would have called those the same finding and sent the rep to the wrong shelf.

How a finding is priced
InputWhere it comes fromWhy it matters
Velocity The store's own recent invoice history — not a category assumption. A slow SKU's gap is genuinely worth less. Saying otherwise wastes the visit.
Price The live resolved price for that store, in its own currency. Exposure is revenue, so it has to be that store's actual price.
Rule weight Your scorecard — the section weights you set, summing to 100. Availability and visibility rarely matter equally. You decide the ratio.
Result Currency per week at stake, per finding, per store. Sorts worst-first and adds up to a number a sales director can act on.

02 · ShelfLens

Add a SKU.
Not a training run.

Feature-complete

Point the phone at the shelf. It detects each product, embeds every crop, and matches against your catalogue by cosine similarity — then fills the scorecard in. On the handset. Offline. About 150 milliseconds a frame, verified on real hardware, not a spec sheet.

Why this survives your catalogue

A trained classifier has to be retrained every time you launch a flavour — which, at real catalogue scale, means the model is permanently out of date. ShelfLens detects first and matches by embedding second, so onboarding a product is uploading photos. There is no retraining step, because there is no per-SKU model.

Better still, it compounds. Teach a pack on one phone and the embedding is quantised, posted up as a master record and pushed to every other device on the next sync. One rep in one aisle teaches the whole fleet.

A lesson we paid for. An embedding is a fingerprint of one viewpoint. Ten photos from the same angle are worth far less than three from different ones — and early on, taking the largest detected box in a wide shot meant we once embedded a sofa. Teaching is now tap-to-select: you point at the product you mean.

01

Capture

One frame, letterboxed so tall retail packs keep their aspect ratio.

local file
02

Detect

An object detector proposes every product box in the frame.

on-device
03

Embed

Each crop becomes a vector via a small mobile backbone over JSI.

~150 ms / frame
04

Match

Cosine similarity against your enrolled catalogue in local storage.

no server
05

Score

The scorecard fills itself, prices the gaps, and offers the fix.

QAR / week
Inference129–150 msdevice-verified, per frame
Model load~5 sonce, at first use
New SKUPhotos onlyzero retraining
Cost / scan0.00no cloud vision API
NetworkNot requiredmodels load from local store
LicensingApache-2.0AGPL detectors rejected
APK impactNonemodels ship out-of-band
Fleet learningAutomaticteach once, sync to all

03 · The Fix-It loop

A finding that
does something.

In production

The industry's real failure isn't detection — it's the last mile. A gap gets photographed, uploaded, dashboarded, and is still a gap next week. Here the finding carries a button.

01

See

The audit — or ShelfLens — records the gap and prices it in currency per week.

02

Prescribe

It becomes a named action, sorted against every other finding by money.

03

Order

"+ Order" seeds the rep's order screen with exactly those SKUs — respecting the cart, skipping unpriced lines.

04

Verify

The next visit re-audits it. Either the money came back or the finding is still open.

Why it's one tap and not two screens. A merchandiser has a few minutes per store and both hands full. Any fix that requires re-finding eight SKUs in an order screen doesn't happen — so the loop closes in the app or it doesn't close at all.

04 · Capture depth

Everything else
on the shelf.

In production

Recognition is one input. A merchandising visit also has to handle planograms, point-of-sale material, competitor pricing and the photograph itself — all of it offline, all of it synced when signal returns.

Planogram compare Build shelf, position and facings in the portal; the store's planogram resolves automatically by mapping precedence. The compare view groups by shelf with a live compliance bar. Facing-weighted match ratio
POSM audit Good, damaged or outdated — judged against a reference image on screen, so a temp rep grades it the way a brand manager would. Reference-image benchmark
Competitor intelligence Barcode scan or AI match, head-to-head against your own SKU, with live price, facings, promo and new-launch capture. Company and brand are normalised masters. Head-to-head · normalised
Why brands are masters Free-text would fracture share-of-shelf across "Coke", "Coca Cola" and "coke" — three brands where there's one. One brand, counted once — so share-of-shelf means something. One brand, one row
Shelf photos Captured to a local file, uploaded on sync, path rewritten, local copy unlinked. The rep never waits for an upload and never loses a photo to a dead signal. Offline-first · verified end-to-end
Shelf Command What the supervisor sees: money in play, average score, worst-first leaderboard, top leaks and weakest sections — from the latest submitted visit per store. Worst-first · money-ranked

05 · What we refused

The features
we didn't build.

We ran a deep research pass against the category leaders before writing a line of this. Some of what the market sells didn't survive it — so we left it out and told the client why.

AR planogram overlays Demos beautifully, collapses in a real aisle with real lighting and a rep holding a scanner. We found no evidence of it working at scale, so we didn't ship a version that would only work on stage. Refused · research-refuted
Predictive restock percentages A hard percentage implies a confidence the underlying data can't support. We ship the leading signals and name them instead — you can see why the store is at risk, and argue with it. Refused · replaced with signals
AGPL vision models The best-known detectors carry a licence that would reach your deployment. We took the accuracy hit and used Apache-licensed models, because a licence problem is not a problem you want later. Refused · licence-driven
Calling it "AI powered" ShelfLens genuinely is on-device AI. Our report builder is not — it's a deterministic query engine, so we don't market it as AI. When the language-model feature ships, we'll say so then. Honest labelling

Next

Bring a shelf photo.

The most honest demo of ShelfLens is your own products on your own shelf, in a store you already argue about. Bring one, and put the phone in flight mode.