-
-
Wedding date, city, budget and events shape the plan
-
The whole app works in Hindi too: here, the countdown plan
-
Guided capture with an oval crop before the scan
-
14-day re-scan: only changes beyond ±2 points count as progress
-
AI Necklace Virtual Try-On: kundan choker
-
AI Beard Style Generator for grooms
Inspiration
India's wedding economy runs in short, intense seasons. The Confederation of All India Traders projected 46 lakh weddings worth ₹6.5 lakh crore in just the 1 Nov–14 Dec 2025 window, with jewellery about 15% of the spend. Every one of those weddings has a bride, a groom and dozens of guests who all want to look good on camera.
Anyone who has been part of an Indian wedding knows the pattern: "skin prep" starts three weeks out, a new serum or a first-ever facial gets tried in the final week, threading happens the day before, and lipstick and jewellery are bought from flat product photos across five different apps. The problem isn't a lack of products. It's that nobody turns "what does my skin need?" into "what should I do on which day before my wedding, in my city's weather, on my budget?", and nobody lets you see the look before you buy it.
YouCam's Skin Analysis gives exactly the measurement that's missing, and its try-on APIs let you see the result first. ShaadiGlow connects the two.
What it does
ShaadiGlow is a mobile web app (phone browser, installable as a PWA) for brides, grooms and guests:
- Scan. A guided selfie (YouCam JS Camera Kit checks light, angle and distance) or an upload goes through the YouCam File API and AI Skin Analysis v2.1: 12 concerns a 30–90-day routine can act on, a skin score, skin age, T-zone vs cheeks skin type, and the AI's own masks, which you can tap to see where the AI looked.
- See the goal. AI Skin Simulation shows a wedding-day goal for your top concerns, labelled as a preview, not a promise.
- Follow a countdown plan. A deterministic, explainable rules engine turns your scores into an AM/PM routine dated to your wedding, adjusted for your city's humidity, temperature and UV, your budget and safety flags. Every active ingredient comes with a "Why?". It enforces real event-prep rules: actives need runway, one new product at a time after a 48 h patch test, nothing new in the last 14 days, retinol stops at D-7 and acids at D-5, threading at D-4, natural henna only (no PPD "black henna"). Milestones export to your calendar.
- Try every look. Each event (Haldi, Mehendi, Sangeet, Pheras, Reception) is a single AI Makeup Virtual Try-On call that stacks lipstick, kohl, eyeshadow, blush, highlighter and a shade-matched foundation, so one unit shows a whole look. AI Hair Color, AI Earrings and AI Necklace cover hair and jewellery, and grooms get the AI Beard Style Generator.
- Shop the look. Everything you tried lands in one cart, each item tagged with the concern it treats, with a budget meter and WhatsApp sharing. The store is a clearly labelled sample catalogue of fictional, unbranded products.
- Track progress. Every 14 days a quick re-scan measures only your 4 tracked concerns (9 units instead of 14). Changes inside ±2 points are reported as "steady", not celebrated as progress.
It works in English and Hindi, and "Delete my photos & results" also deletes every task and file on YouCam's side through the Task Management API.
How I built it
- Backend: Python FastAPI with an async httpx client for the documented YouCam flow:
POST /s2s/v2.0/file→PUTto the pre-signed URL →POSTthe task → polltask_status→ download results right away (result URLs expire after 2 hours). 429 back-off, engine error codes mapped to user-facing hints, plus the Unit API and Task Delete API. - Unit discipline: a disk cache keyed by
sha256(image) + feature + parameters, a seed cache shipped in the repo so the sample models cost 0 units on a fresh deploy, and a budget guard that reads the real balance, keeps a reserve and caps units per visitor. Every button shows its cost. - A mock that speaks the contract: before I had a key I built an httpx transport that answers the same endpoints with the same JSON shapes and validation as the docs. Setting
YOUCAM_API_KEYswaps the transport; nothing else changes. When the key arrived, a smoke script verified every endpoint against the live API and recorded the real responses as test fixtures. - Rules engine: a hand-written ingredient knowledge base (targets, runway, stop dates, pregnancy and sensitive-skin flags), bilingual rules, 16-city climate bands and phase scheduling. No LLM, so the same inputs always give the same plan.
- Frontend: vanilla JavaScript and hand-written CSS, Devanagari typography, vector product art, a before/after slider, and the YouCam JS Camera Kit.
- Quality: 82 automated tests, including contract tests and a Playwright run of the whole journey on a phone viewport. Deployed as a Docker web service on Render.
Challenges I ran into
- Building before the key existed. I made the mock a faithful simulator of the documented contract instead of canned JSON. On the first live run, every billed cost matched the docs exactly.
- Spending 1,000 units wisely. SD skin tiers are 9/12/14/16 units for 4/8/12/16 concerns, so I dropped concerns nothing topical can fix before a wedding and landed in the 14-unit tier. Re-scans track 4 concerns (9 units), and one makeup request renders a whole look.
- Different photo rules per API. Skin analysis wants the face to fill the frame; makeup and hair reject frames taller than about 1080 px; beard needs a long side under 1024 px; jewellery needs ears and neck visible. The backend builds a correctly sized variant of the same photo for each API.
- Honest progress. I scanned the same photo twice on the live API: the four tracked scores differed by at most 1 point. So re-scans only call a change "better" when it moves more than 2 points.
Accomplishments that I'm proud of
- A real product loop, not a wrapper: measure → plan → preview → try → buy → re-measure.
- Every recommendation is explainable and dated, with event-specific safety rules.
- Seven YouCam AI APIs plus the File, Unit and Task Management APIs and the JS Camera Kit, each where it changes a decision.
- A complete Hindi experience.
- Unit-aware engineering: cache, seed cache, budget guard and visible costs.
What I learned
- How YouCam's skin scores are built (
ui_scoreis calibrated for shoppers,raw_scoreis the model's estimate) and why ranking by the raw score is more honest. - Good event-prep advice is mostly about time: when to start, when to stop, and when to change nothing.
- A documented-contract mock makes a build fast: the client, cache and UI were finished and tested before the first paid call.
What's next for ShaadiGlow
- A small pilot with brides in Patna and Delhi this wedding season.
- A white-label version for beauty and jewellery retailers: the countdown plan is a 30–90-day engagement loop that ends in a high-intent basket.
- Makeup-artist mode: share saved looks with your MUA before the trial.
- More languages (Bengali, Tamil, Marathi).
Log in or sign up for Devpost to join the conversation.