The challenge
Kiss and Makeup runs an online store and a busy shop in Upper Hutt. Watching every shelf by eye is not possible for a small team, and loss from unpaid items adds up quickly in beauty retail.
The goal
Let cameras, not staff, keep track of what each shopper picks up and whether it gets paid for.
What we built
- An overhead camera tracks each customer through the store and gives them one identity.
- Shelf cameras detect hand movement and pickups, and link each item to the nearest customer.
- A checkout model counts the items placed on the counter and assigns them to the right person.
- An exit monitor compares items taken with items paid, and sends a photo alert if they do not match.
- Each part runs as its own service and they talk in real time over ZMQ.
The hard parts
Keeping the same identity across different cameras.
Multi-object tracking with OC-SORT and ByteTrack, and one central customer registry.
The same item counted twice.
Persistent item IDs and a stability window before a pickup is confirmed.
Shoppers who step away in the middle of checkout.
Items stay with the last known customer until they are paid or put back.
Too many false alarms.
Two stage soft and hard alerts, with grace periods and cooldowns.
The result
Phase one delivered a working proof of concept in the live store, with the full pipeline from shelf to exit running together.