ShelfScan Gap
Empty-shelf tasks with a photo, for the bays that make the money
Battery cameras under the shelf edges photograph the shelf across the aisle every 15–30 minutes; the store's IEMI hub finds empty rows and sends staff a restock task with a photo, then confirms the restock.
- Who buys it
- Owner or operations director of an independent grocer or small chain (1–10 stores).
- Why it pays
- About $7.5k a year per store (est.) from gaps fixed hours sooner on 30 money bays plus less shelf-walking, against $1,188 a year of subscription.
- Target price
- $1,490 store starter (hub + 12 cameras) + $99/store/month (target)
- First-minute wow
- Twelve cameras on magnets in a morning, and the first 'Bay 4-C shelf 3, about 40% empty' task with a photo before lunch. No product catalogue needed.

What the research found
And how this design answers it
- Funded chain incumbents (Focal, Captana, Trax) → sell to independents, 20–40 money bays, published price, no RFP
- SKU catalogue cost → v1 detects gaps only; the task photo shows staff what is missing
- $299 4K AI cube needing shelf power → ~$32 battery still-camera, AI runs once on the store hub
- Shoppers in frame → any shot with a person over the shelf is deleted on the hub and retaken
- Price-tag OCR and freshness claims a camera can't prove → dropped
- Restock never checked → the next photo verifies it and logs time-to-restock
Use case
Saturday gap in the beverage aisle
Grocery managerStockerShelfCamEdge Hub
- 01Trigger: the 14:00 photo of bay 4-C shows the 12-pack row 45% empty, confirmed at 14:15
- 02Detection: the hub scores each 5 cm cell of the row and opens a gap after two low shots
- 03Alert: the stocker's phone shows the row photo and how long it has been empty
- 04Action: restock, tap Done; the next photo verifies the row and logs 22 minutes to restock
Outcome: The gap is fixed during the peak, not at the 17:00 shelf walk; roughly $15k a year of sales protected in one category (est.)
How it works
Architecture
- 01
Sense: ShelfCam (XIAO ESP32S3 Sense, OV3660) wakes every 15–30 min and posts one JPEG to the hub
- 02
Decide: the hub rejects shots with people, then scores shelf-row fill with hysteresis
- 03
Send: row states and gap events over MQTT/TLS; only people-free row crops for open tasks leave the store
- 04
Tell: store app tasks, a hot-bay re-check after restock, and a Monday worst-bays report
Hardware
Real parts, buyable today
Bill of materials: about $32 per ShelfCam and about $190 for the Hub Lite at retail qty (est.).
| Block | Part | Why this part |
|---|---|---|
| Camera + MCU | Seeed XIAO ESP32S3 Sense (ESP32-S3R8, OV3660 3 MP) | $13.90, 8 MB PSRAM holds a full 2048×1536 JPEG, LiPo charger on board |
| Battery | Adafruit 2000 mAh LiPo with protection | About 300 days at a 30-minute interval (est., bench test T1–T3) |
| Mount | Printed hinge + 4 × N52 12 × 3 mm magnets, steel tether | No tools on steel gondolas; tilt ±30° |
| Store hub | IEMI Edge Hub Lite (Raspberry Pi 5 4GB, no AI HAT) | About 0.02 images/s needs no NPU; full hub if the store runs other app packs |
Mechanical
Printable CAD
5 parts, generated from code and checked as closed solids. Pick a part to inspect it, or download the STL files to print.
See the CAD parts render

Loading the CAD…
Real CAD · drag to rotate · scroll to zoomReal CAD · swipe sideways
Bought hardware fitted inside this part (checked in the CAD: nothing collides with the plastic)
Open risks we are working on
- XIAO Sense sleep current above 100 µA would halve battery life and force a custom board
- The gap heuristic may confuse pale packaging with an empty back panel until the classifier is trained
- Independents may not pay $99 a month; the 30-day pilot tests it
- Firmware toolchain (ESP-IDF) is not installed in the lab yet
Design stage only: nothing on this page is for sale. Specifications and prices are targets.