Inspiration
We wanted one photo to be enough: a report that reads like a stylist actually looked at you, and a way to try a new haircut, hair color or makeup look on your own face before committing to it.
What it does
Beauty Studio turns one portrait into a personal beauty report and photoreal try-ons.
- 92 analyses across hair, color, makeup, outfits, skin, nails, face and style
- Written reports such as face shape, undertone and seasonal palette
- Try-ons for haircuts, hair colors, makeup looks, outfits and manicures
- Reports in 9 languages, in the tone you choose, and you can correct a wrong reading
- No account needed to start or to buy; Apple, Google or email can be linked later
How we built it
- Expo and React Native with TypeScript
- Supabase for auth, database, storage and edge functions
- fal.ai models called only from the server: Gemini 2.5 Flash for reports; Nano Banana 2, FLUX.2 Pro and Nano Banana Pro for try-ons, with an automatic quality check on every image
- RevenueCat for three subscriptions (weekly, monthly, yearly) and four credit packs. Purchases are confirmed on our server through RevenueCat webhooks, and credits are charged and refunded server-side.
- The Supabase user id is the RevenueCat app user id, so guests can buy right away and keep their purchases when they create an account
Challenges we ran into
- Keeping the person the same person. A try-on is only useful if you still look like yourself. Every try-on prompt locks identity (and hands for nail try-ons), each preset is limited to one scope such as hair color or outfit, and a second vision model rejects renders that change more than that scope allows. Rejected images are re-rendered on the next model with a new seed.
- Visual consistency across a session. In the Full Visual Session each step (hair, color palette, makeup, outfit, glow-up) is rendered on top of the previous step's result, so the look builds up instead of starting over. Outputs identical to the source photo are caught by hash and re-rendered.
- Shipping 92 analyses without chaos. Every analysis is a declarative entry (type, category, credit cost, cover image, promised outcomes) with a blueprint of typed report blocks. Generators copy them to the server, contract tests check every entry, and a QA mode renders all 92 screens with mock data without spending on AI. Each one ships in 9 languages.
- Reports that are true to the photo. Every sentence has to pass four tests: it would not fit anyone else, it names a mechanism, it measures in fingers, centimeters or tone levels, and it never repeats. Colors are read from the photo's own light, scores and medical claims are banned, and users can correct a reading to have the report rewritten.
- Payments that arrive later. The store charges instantly but the RevenueCat webhook lands a moment later, so the app keeps a silent watch until the credits appear, and every grant is idempotent.
Accomplishments that we're proud of
- 92 analyses from a single photo: including 47 photoreal try-ons and 3 multi-step sessions, all in 9 languages
- A design that feels like a beauty magazine: dark ink and champagne gold, editorial serif headlines, chapter-style reports with face diagrams and palette swatches, and a unique cover for every analysis
- AI art direction that matches the app: every analysis cover comes from one shared style brief, so the whole catalog reads as one collection
- Try-ons that look real and still look like you: identity locked in every prompt, one change per try-on, and an AI quality gate that re-renders anything that drifts
- Sessions that stay consistent: multi-step looks build on each previous render instead of starting from scratch
- Reports that read like they were written for you: grounded in your photo's light and proportions, in the tone you pick
- A monetization flow on RevenueCat: guests subscribe without signing up, grants are idempotent, and failed jobs are refunded automatically
What we learned
- Consistency comes from constraints, not longer prompts: lock identity, allow one change per try-on, verify with a second model, and chain steps on the previous result.
- Image generation is a queue, not a request: processing leases, attempt caps, a seed per attempt, hourly cleanup and automatic refunds keep long renders reliable.
- Honesty has to be measured: rerun the same photo to check that a reading is stable, and compare different photos to catch generic text.
- One source of truth for data: the analysis registry generates report blueprints, server copies and credit maps, and CI fails when anything drifts. Reports are typed JSON with a schema version, so old reports upgrade instead of breaking.
- Private by default: photos live in per-user private storage behind signed URLs, and users can really delete their photos, reports and account.
- Money data belongs on the server: RevenueCat owns the payment, our database owns the balance, and every grant has an idempotency key.
What's next for Beauty Studio - Glow Up AI
- AI Photo Studio: beauty-aware editing and natural retouching for your own photos. Apply the looks you loved to any picture and stay recognizably you.
- Your personal beauty guide: a coach that turns every report into a living plan, with daily routines, occasion looks and reminders that adapt to what you save.
- Smart recommendations: makeup shades, hair colors, jewelry metals and outfits matched to your palette, undertone and face shape.
- Glow-up tracking: follow your progress across analyses with side-by-side comparisons.
Built With
- deno
- expo.io
- fal-ai
- flux
- gemini
- nano-banana
- postgresql
- react-native
- revenuecat
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.