Inspiration
I kept buying the product an influencer swore by and watching it do nothing, or worse, break my skin out. One review says it works a hundred percent, the next says it caused the worst breakout of their life. Neither reviewer has my skin.
Star ratings and sponsored advice mix thousands of different skin types into one number. So we guess, we waste money, and because skin changes slowly, we never really know if anything is working. I wanted the opposite of a 4.7★ average: results from people whose skin measures like mine, and a way to prove to myself that my routine is working.
What it does
SkinTwin finds your skin twins and shows you what actually worked for skin like yours.
- Scan in 10 seconds. YouCam AI Skin Analysis measures 8 scores (hydration, oil balance, calmness, clarity, pores, smoothness, glow, fine lines), shown right on your face, with a heat map of where concerns sit.
- Meet your skin twins. The app compares your 8 scores with every profile and narrows them to the people whose skin measures closest to yours. You see their scan-verified posts: what cleared their skin, what was overrated, and what to skip. You can follow them.
- A verdict for your skin on every product. A toner that looks great for "everyone" can be flagged risky for your skin when you switch to your twins and see that people like you got worse on it. Every product gets Good match, Mixed, Risky or Few twins tried, with a confidence level.
- Check what you already bought. Drop in a cart screenshot or link and see how each item went for skin like yours before you open the bottle.
- See before you commit. YouCam AI Skin Simulation shows your realistic goal skin in about six weeks, and YouCam Makeup Try-On and Camera Kit let you try a shade live on your own face.
- Prove it's working. Once a week, one scan turns invisible changes into numbers. A page-turning skin journal shows week by week what went up and down, your goal, and a celebration when your scans confirm you reached it.
- Daily care. Hydration tracking, a sleep wind-down, a calm box-breathing minute (stress shows up as oil and redness), and a daily tip aimed at your weakest score.
- Not a store. No sponsored picks, no brand bias. SkinTwin tells you what to use and why, then links out to where to buy it.
- Fully bilingual: English and Arabic (right-to-left).
Retail value: for shoppers, fewer wasted purchases and returns. For retailers and brands, the same data answers a question star ratings can't: who a product works for, segmented by measured skin. That makes product pages, recommendations and try-on far more trustworthy.
How we built it
- Next.js 15 (App Router), React 19 and TypeScript, styled with Tailwind CSS v4 (logical properties for RTL) and animated with Motion.
- YouCam APIs (Perfect Corp.):
- AI Skin Analysis: the 8 scores, face map and heat map, twin matching and weekly check-ins.
- AI Skin Simulation: the realistic goal skin and the "6 weeks" Mix Lab preview.
- AI Makeup Virtual Try-On: a product's real shade rendered on your snapshot.
- Camera Kit (web SDK): live try-on on your own face.
- All YouCam calls run server-side in Next.js route handlers, so the key never reaches the browser. They are cached per photo and settings, capped per day and per visitor, and fall back to demo results on any failure.
- Twin matching: each person is a vector of the 8 scores, and similarity is
100 − 2.5 × RMS(difference). An 80% match means scores differ by about 8 points on average. Product verdicts come from twins' measured before/after changes. With fewer than 5 twins, the app says so and uses everyone's results. - MediaPipe in the browser for live face tracking and on-device shade matching (no API units, no photo upload).
- Supabase (optional) for accounts and community reviews; everything else works with private on-device storage.
- An installable PWA deployed on Vercel, with Vitest tests for the core logic (matching, verdicts, planner, swaps).
Challenges we ran into
- Making a score mean something. Plain Euclidean distance rated almost everyone above 80% similar. I switched to an RMS-based score with a strict threshold, so "twin" really means close skin.
- Uncommon skin. Some people have no 80%+ twins. Instead of an empty screen, the app falls back to your closest matches and says so honestly.
- Consistency. The overall score has to agree with the 8 raw scores everywhere: the analysis, the profile, the journal and the twins. I recomputed it from the raw scores in one place.
- Skin Simulation's oiliness. In the API a higher oiliness value adds shine, the opposite of an improvement, so oiliness is never sent as a goal.
- API units. Every live call costs units, so live calls run server-side, cached per photo, and capped per day and per visitor, with a clearly labelled demo fallback when a cap is hit.
- Arabic and right-to-left. Translating the whole app, including dynamic text, with correct bidi isolation for numbers and product names, without layout bugs.
Accomplishments that we're proud of
- A full loop on real YouCam data: scan → twins → product verdict → goal simulation → try-on → weekly journal.
- The "Everyone vs. Your skin twins" switch: the same product can go from "looks great" to risky for your skin. That one interaction explains the whole idea.
- A journal that makes slow, invisible progress visible week by week, with goals your own scans confirm.
- Honest data handling: no sponsored ranking, server-side keys, cosmetic guidance clearly labelled, and demo data clearly labelled as sample data.
- A polished, bilingual (English/Arabic) experience that feels calm rather than salesy.
What we learned
- Personalization beats popularity: an average rating hides the people a product hurts.
- Measured skin data is a much better basis for trust than self-described skin type.
- Retention in skincare is about seeing progress: a weekly number is more motivating than a mirror.
- Designing for right-to-left from the start (logical CSS properties) saves a lot of rework.
What's next for SkinTwin
- Grow the twin community with real, consented scan-verified results, replacing the synthetic demo cohort.
- A brand and retailer widget: "Works for skin like yours" on any product page, with segment breakdowns for R&D.
- Ingredient-level insights: which actives work for which skin profiles.
- A native mobile app with reminders tied to weekly check-ins.
- More languages and broader skin-of-color validation.
Data Honesty & Biometric Privacy
- Your photo stays yours. Face photos are kept on your own device. They are sent to YouCam only to run your analysis (and the goal preview or try-on), and SkinTwin never stores them on its servers. Only your scores and journal sync, and only if you create an account.
- Sample community, clearly labelled. To avoid an empty app on first use, matching runs against 1,240 synthetic skin profiles generated by a documented, seeded model. They are labelled as sample data in the app, and their product results are simulated too.
- What is shared. Reviews and circle posts are shared across users. Real users' scans are not yet added to the matching pool.
- Next step. Adding real, consented, scan-verified results to the matching pool, so people with similar skin can find each other, is our immediate priority.
Built With
- css3
- html5
- mediapipe
- motion
- next.js
- node.js
- perfect-corp
- postgresql
- pwa
- react
- supabase
- tailwindcss
- typescript
- vercel
- vitest
- youcam-ai-skin-analysis
- youcam-camera-kit
- youcam-makeup-vto
- youcam-skin-simulation

Log in or sign up for Devpost to join the conversation.