Ensemble is an AI sales associate that fuses Skin AI and Apparel VTO into one decision engine — coordinated looks that grow baskets and cut returns.
Ensemble answers one question — "How do I put myself together today?" — by treating skin and clothing as one styled look, not two shopping trips. The user names the occasion, scans their face, uploads a full-body photo, and gets back a single coordinated look: an outfit rendered on their own body, plus the makeup and skincare that finish that exact look, plus one unified explanation tying it all together.
Why wouldn't a retailer just embed Perfect Corp's Skin AI and VTO widgets separately?
Because the widgets can't talk to each other. Perfect Corp sells capabilities; Ensemble is the decision layer between them — near-face colour rules, safety suppression, shade-matching, one rationale.
The deletion test. The combined-track brief asks whether removing the Skin AI half would visibly degrade the Apparel half. For Ensemble the answer is yes, catastrophically: without the skin scan there is no undertone, so no seasonal palette, so no near-face colour logic, so no shade-matched makeup and no skin-state skincare. The look collapses into a generic clothes render. The two APIs are load-bearing for a single output, and that interdependence is the product.
You can watch this happen in the app itself. Every item on the final screen carries a "Why This Look?" checkmark tagged with the API output that drove it — so the dependency isn't a claim in a pitch deck, it's visible in the UI.
YouCam APIs used
skin-tone-analysis— returns skin colour, from which we derive undertone and depth (Lab/ITA°) and select a seasonal colour palette.skin-analysis— HD concern scores (redness, oiliness, moisture, radiance, age spots, texture, skin type) that drive near-face colour constraints, skincare prep, and makeup base finish.cloth(Apparel VTO) — renders the chosen outfit on the user's own body photo, chaining a top and a bottom into one full-outfit render where the look isn't a single dress.
How the fusion actually works
- Undertone and depth from the tone API select a colour season and palette.
- Skin-analysis concern scores constrain which palette colours may sit near the face — visible redness pushes cool colours forward, because warm corals amplify it.
- The garment is chosen from that constrained palette, then rendered on the user via Apparel VTO.
- Makeup coordinates to both the garment colour and the skin read: lip and blush harmonize with the near-face colour, base finish follows the moisture and oiliness scores, and the shade matches the depth from the scan.
- Safety answers (pregnancy, sensitivity, allergies) suppress actives from the skincare and makeup output before anything is shown.
- A rationale generator emits the same reasoning twice — a narrative paragraph for emotion, and a sourced checklist for trust.
Trust layer
Skin output is cosmetic guidance, never medical. Scores are remapped into empowering language, focus areas are capped at three, and banned framing (severity, flaw, problem, damage) never reaches the screen. The app reports skin state, never cause, and pairs any skin-health surface with a "see a professional" note. This is an ethical position and a commercial one: a tool that refuses to pathologize skin is the reason the retail metrics move.
Retail KPI map
| Ensemble feature | Retailer metric |
|---|---|
| Skin-aware outfit recommendations | Conversion rate |
| One coordinated look (apparel + beauty) | Average basket size / cross-sell |
| Undertone-accurate colour + shade matching | Fewer returns |
| "Why This Look?" transparent reasoning | Trust → completion rate |
| Occasion-first personalized journey | Engagement / session depth |
Where this goes. Every item is an affiliate link today (Impact, Rakuten, CJ), monetizing the confidence the look creates. The same composer white-labels as an embedded AI sales associate for beauty and fashion retailers — SaaS plus rev-share, sold on the KPI map above. The consumer app is the proof; the retailer integration is the business.
Deliberate strength: accuracy and dignity across the full tone range, especially medium-to-deep tones — the segment incumbents fail, and the market we build from.
Tech. Next.js 16 (App Router) and React 19, TypeScript, Tailwind 4. All YouCam calls run server-side through a proxy route so API keys never reach the browser, with exponential backoff on 429 and the universal 4-step workflow (file → PUT → task → poll). Client-side image compression before upload. Optional Postgres response cache via Drizzle that fails open, plus a per-visitor usage cap so a shared demo key cannot be drained. Catalog is a 136-product snapshot across both wardrobes (Sephora + ASOS via RapidAPI, ingested once to local JSON — the demo never calls RapidAPI live).
Built With
- nextjs
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.