Inspiration
We build online stores for small businesses, and beauty shops keep telling us the same thing: shoppers stand in front of forty serums, ask "which one is for me?", and leave without buying when nobody is there to answer. Skin analysis apps exist, but they recommend from their own brand catalog, not from the shelf the shopper is standing in front of.
What it does
The shopper takes a selfie (or a judge taps "Use sample selfie"). Shelf Check sends it to the YouCam Skin Analysis API, which measures eight concerns: breakouts, pores, redness, oiliness, dehydration, fine lines, dark circles and dark spots. The app shows the skin map and then picks the three products, from this store's own catalog, that cover the most of the shopper's measured need. Every pick says why ("For: Dehydration, Redness"), so the shopper trusts it and the store sells what it actually has.
How we built it
The YouCam flow is File API (pre-signed upload) → skin-analysis task (SD, 8 concerns, mask overlay, 12 units) → poll until success. For each concern, need = 100 - raw_score; each catalog item scores the sum of the needs it treats, ties go to the cheaper item. The store's catalog is a plain catalog.json (sku, name, price, treats), so any shop plugs in its own shelf. The live app runs on Cloudflare Workers with the API key as a secret; a dependency-free Python server is the reference implementation, and a parity test keeps both rankings identical. A demo mode replays a real API response captured from the sample photo, so judges can try it without spending units.
Challenges we ran into
The engine rejects faces that are too small (error_src_face_too_small): the face has to fill more than 60% of the frame, so the sample photo had to be cropped. The mask URLs returned by the task are signed and expire in two hours, so the demo serves the captured masks from the app itself instead of dead links.
Accomplishments that we're proud of
A live public app that answers in about seven seconds with a real YouCam call, and a recommendation that is explainable line by line: every pick shows which measured concerns justified it.
What we learned
The raw scores are precise enough to rank products directly, and turning "score" into "need" makes the recommendation feel like advice instead of a diagnosis.
What's next for Shelf Check
Import the catalog straight from Nuvemshop and Shopify product tags, add the Apparel VTO step for the clothing side of the same store, and an in-store kiosk mode for a tablet next to the shelf.
Built With
- cloudflare-workers
- javascript
- perfect-corp
- python
Log in or sign up for Devpost to join the conversation.