Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for SkinCart

Inspiration

People think about their skin right before a purchase, and carts fill with trendy products that do nothing for their actual concerns, or that clash (retinol + glycolic acid). We wanted the skin analysis to happen at that moment.

What it does

  1. You provide a front-facing photo (upload or public URL) and confirm you have the rights to it.
  2. SkinCart calls the YouCam Skin Analysis API for 10 concerns: acne, hydration, oil, pores, redness, texture, fine lines, dark circles, radiance, firmness.
  3. Cart check: every item in your cart is marked KEEP (matches a weak score), SKIP (addresses nothing found), or CONFLICT (actives that shouldn't be stacked), with dollars saved.
  4. Routine builder: a morning/evening routine built greedily from the weakest scores, inside your budget, always with sunscreen, never stacking clashing actives.

How we built it

Zero-dependency Node (>=18) app: static UI + serverless functions (Vercel). lib/youcam.js uses the File API (pre-signed upload) then Skin Analysis v2.1 format=json, polls the task, and normalizes results.output[]. The API key stays server-side. lib/planner.js is a pure, unit-tested rules engine (concern severity -> product value per dollar, with an active-ingredient conflict matrix).

YouCam API used

AI Skin Analysis (File API /s2s/v2.0/file/skin-analysis, task /s2s/v2.1/task/skin-analysis).

Challenges we ran into

Asynchronous task polling, SD/HD concern mixing rules, and keeping personal photos out of storage.

Accomplishments that we're proud of

A complete flow from score to a purchase decision, not just a score display; planner covered by unit tests.

What we learned

Scores need a decision layer: the value is in what the user does next.

What's next for SkinCart

Add Virtual Try-On (makeup/clothing APIs) to the SKIP/KEEP flow, retailer catalog connectors, and an agentic loop that re-scans weekly.

Significant update during the Submission Period

New project, built entirely after the Submission Period opened (Sep 29, 2026).

Test image used: public-domain StyleGAN2 synthetic face (Wikimedia Commons); no real person's photo.

Built With

Share this project:

Updates

Submission history