Try it in 2 minutes (judges)

  1. Open https://verdict-youcam.vercel.app on a phone (on a computer, /phone shows it in an iPhone frame). No sign-up.
  2. Today shows a demo shelf: one product per outcome (Keep it, Return it, Stop, still Measuring). Open the Calming Serum and tap Replay: watch "Measuring" turn into Keep it on day 13, 17 days before the deadline. This shelf is synthetic data, labelled on every screen, so you can see every verdict in seconds.
  3. Tap + → Scan the label: point the camera at a skincare bottle. Verdict reads the name and the promise and keeps only the concerns it makes. No bottle at hand? Paste the claim instead.
  4. Open a product → Take today's photo → consent → camera. On-device face tracking guides you ("Turn slightly to your left", "Hold still") and the photo takes itself. Then Analyse with YouCam. Each visitor gets a few live YouCam calls a day; after that, or if the shared unit reserve is reached, the same flow runs in demo mode and the screen says why.
  5. After the analysis, Show me: YouCam Skin Simulation renders the promised result on the same photo.
  6. Try: a makeup look, a hairstyle or an outfit on your own photo, with YouCam virtual try-on.
  7. How it works (link at the bottom of Today): every YouCam call Verdict makes, in order, with its cost.

Cosmetic guidance, not medical advice. Anonymous usage is logged to improve the demo (no photos, no address; see /privacy).

Inspiration

You buy a serum that promises "less redness in 14 days". Day 27 of a 30-day return window, you look in the mirror and honestly can't tell. So you keep a product that doesn't work, or you return one that does. The brand doesn't know either: the return form says "didn't work for me", with no evidence either way.

Returns are not a side issue: US retailers expect 15.8% of 2025 sales to be returned ($849.9 billion), and 19.3% of online sales (NRF and Happy Returns, 2025 Retail Returns Landscape, all categories). Skin analysis apps measure your skin. Nobody measures a product against its own promise, on the return-window clock. That is Verdict.

What it does

  1. Reads the promise. Scan the bottle (a vision model reads only what is printed: name, claim, timeframe, actives) or paste the claim. Verdict keeps only the concerns the promise makes, plus what its actives are known to target, up to four. Four concerns or fewer keeps every photo in the 9-unit SD tier, so the whole return window is priced before the first photo.
  2. Takes comparable photos. MediaPipe face tracking runs on the phone and checks framing, face size, angle and light. It guides you in plain words and the photo takes itself only when it is right. A bad photo never costs a unit.
  3. Measures with YouCam AI Skin Analysis. Only the promised concerns. Upload, task, polling: every call is shown as it happens, with its cost.
  4. Shows what "working" looks like. YouCam Skin Simulation renders the promise on your own photo, reusing the file already uploaded for the analysis. A slider compares today and the promised result.
  5. Decides on a trend, in time. Every day the verdict is recomputed from comparable photos, on raw_score, against a noise floor: Keep it, Return it (while you still can), Stop using (an irritation-type concern gets worse) or Mixed. It lands two days before the deadline at the latest, earlier when every promised concern clearly improves. A promise longer than the return window (retinol: 12 weeks vs 30 days) is flagged.
  6. Gives proof. Replay the window day by day; save or share a report of every photo, its quality and its scores.
  7. Offers an alternative. When the answer is return it, try a makeup look, a hairstyle or an outfit on your own photo with YouCam virtual try-on before you buy again.
  8. Tells the brand. A Brands view aggregates verdicts per product: which claims deliver, which ones drive returns, median verdict day, and claims that over-promise. This view uses synthetic data, labelled.

How we used the YouCam API (Technological Implementation)

  • AI Skin Analysis is the core: POST /s2s/v2.0/task/skin-analysis with format: "json" and dst_actions limited to the promised concerns, then polling until task_status: "success". Mixing SD and HD actions is refused before the call.
  • The full asynchronous pipeline, traced step by step in the UI: POST /s2s/v2.0/file → PUT to the pre-signed URL → POST /task/… → GET until success. The trace never shows the pre-signed URL.
  • Skin Simulation reuses the analysed photo's file_id (no second upload) to render the promised result.
  • Virtual try-on: Look VTO, Hair Transfer and Clothes VTO with templates from the YouCam catalogue endpoints, on the user's own photo, behind the same unit guard.
  • raw_score vs ui_score. The docs say ui_score is adjusted upward "as a psychological motivator". Verdict shows ui_score but computes every trend on raw_score, with a least-squares slope and a noise floor, so one lucky photo can't flip a verdict.
  • Unit discipline for a public demo. A live call needs three locks: live mode switched on, a per-visitor and per-day quota, and the real balance read from YouCam's credit endpoint (free, cached 20 s) staying above a reserve. The last lock survives restarts and serverless instances, so the hackathon units cannot be drained. A local ledger reserves units before a task, confirms them on success and refunds them on error (failed tasks are free). When a lock says no, the same pipeline runs in demo mode and the screen says why; the browser asks first, so a photo is never uploaded just to be dropped.
  • Resilience: 429 back-off honouring Retry-After; results copied as soon as they succeed; documented error codes (error_no_face, error_lighting_dark…) mapped to user-facing hints; large phone photos resized before upload.
  • Privacy by default: in demo mode the photo never leaves the device; in live mode it goes through our server to YouCam and is not stored by Verdict. The API key never reaches the browser.
  • Tests: 83 Vitest tests: client, tracing transport, unit costs, claim reading, tracking plan, quality gate, trend, every verdict branch, demo replay, cross-screen consistency, the live gate and the anonymous usage log.

Design

Mobile-first, because skincare photos are taken on a phone, in a bathroom, at night. One number dominates each product: the days left to return. The camera talks to you instead of showing a score. The replay turns the verdict engine into something you can see in ten seconds, and the verdict moment only animates when the status actually flips. Light and dark mode, reduced motion, WCAG AA text contrast, an iPad layout and a desktop layout with a sidebar. Synthetic data is labelled everywhere. The demo products belong to HALVÉ, a fictional brand made for this project.

Potential Impact

  • Shoppers stop guessing on day 29: they keep what works and return what doesn't, with evidence, in time.
  • Brands and retailers get measured efficacy per product and an early warning on claims that over-promise, instead of "didn't work for me" on a return form.
  • Trust: reviews could carry a "measured with YouCam AI Skin Analysis" badge, backed by comparable photos.

Quality of the Idea

The obvious Skin AI app is "selfie → product recommendations". Verdict starts from the moment the hackathon page describes, when you wonder whether a product is working, and adds the one constraint nobody models: the return window. Domain details make it real: only the promised concerns, comparable photos, raw_score over ui_score, irritation stops everything, promises longer than the window, and virtual try-on as the next step after a return.

Challenges we ran into

  • Making a noisy measurement decide something with a deadline: regression with a noise floor and a quality gate that keeps photos comparable before anything is spent.
  • A free public demo on a fixed unit budget: quotas, a reserve checked against the real balance, refunds on failed tasks, and a demo fallback that keeps the whole flow testable.
  • Being honest in a demo about something that takes 30 days: a synthetic 30-day shelf, labelled, next to real calls on a real photo.

Accomplishments we're proud of

  • The camera that takes the photo itself, only when it is comparable.
  • The replay: the verdict engine made visible.
  • Every YouCam call shown with its cost, on a public demo that cannot drain its units.

What we learned

ui_score and raw_score answer different questions: one motivates, the other measures. A tracker that decides keep or return has to trend the raw number and to know its noise before it trusts a change.

What's next

A real 30-day study on my own skin (the /measured page and scripts/live.mjs are ready: test-retest noise per concern, a real change, a real product), reminders for the photo cadence, Fitzpatrick-aware thresholds, an agent that checks feature costs with the YouCam MCP server, and a Shopify app for the Brands view.

Source for the returns figures: https://nrf.com/media-center/press-releases/consumers-expected-to-return-nearly-850-billion-in-merchandise-in-2025

Built With

  • cloudflare-r2
  • gemini
  • mediapipe
  • next.js
  • react
  • tailwindcss
  • typescript
  • vercel
  • vitest
  • youcam-ai-skin-analysis
  • youcam-api
  • youcam-clothes-vto
  • youcam-hair-transfer
  • youcam-look-vto
  • youcam-skin-simulation
Share this project:

Updates

Submission history