Inspiration
My grandmother has a cupboard full of sarees. Some are forty years old. She hasn't worn them in years, and she won't. But she won't give them away either.
My mother wants to wear one of them. To do that, a tailor has to cut it. And once you cut a saree like that, there is no going back. You cannot un-cut silk. So it stays in the cupboard, and nobody wears it, because nobody wants to be the person who ruined it.
That is the whole problem, and it isn't a shopping problem. Nobody is asking "will this look nice on me." They are asking "will I destroy the thing that reminds me of her."
Every virtual try-on tool we looked at starts with something for sale. We wanted to start with something that cannot be replaced.
What it does
You give ReWeave one photo of the saree. It shows you three ways the garment could be remade, and puts each one on the woman who will actually wear it.
Then it does the part nobody else does. It measures them.
ReWeave compares the fabric in every result against the fabric in the original saree, and tells you in plain words what came through and what didn't.
Remake it as an anarkali, and the teal body and the gold border come through intact. But the maroon pallu shrinks to a little over half the presence it had.
Remake it as a column gown, and the pallu survives almost perfectly. But the gold border thins out to about two thirds.
Remake it as a kurta set, and the teal comes through even stronger than before. But the maroon pallu is essentially gone. About a fifth of what it was.
Read those three again and you notice something. There is no clean winner. Every direction protects something and gives something up, and it's a different thing each time.
That quietly changes the question being asked. It stops being "which one looks nicest" and becomes "which part of her am I willing to lose."
So before we show her anything, we ask her to star the one detail that matters more than the rest. For my mother, it's the maroon pallu. That's the part she remembers her own mother in. The moment she stars it, the three futures reorder themselves, and the kurta set falls to the bottom. Not because it's ugly. It's lovely. It falls because it's the one design that would take the pallu away.
She can still choose it. It's her saree. But now she chooses it knowing what it costs her.
Once she picks a direction, ReWeave reads her face too, and turns that into two useful things: which makeup finish will survive a long ceremony under hot lights, and what to start doing about her skin, counted backwards from the actual wedding date.
Then it prints one page for the tailor. What to protect. What to avoid. What the measurements found. Agreed on paper, before anyone picks up a pair of scissors.
How we built it
Three YouCam APIs, producing one answer instead of three separate features.
Image Generator V2 redesigns the saree three ways, with each prompt deliberately placing a different part of the original against the face. AI Clothes V3 puts each direction on the person who will wear it. Skin Analysis reads her face across fourteen concerns, which sets the makeup finish and the preparation timeline.
The measurement layer is ours and runs in the browser. Every pixel of fabric is sorted into a colour band, teal, maroon or gold, and compared against the same measurement of the original saree. No API call, no cost, no key. Anyone can read the code and check us.
The ranking combines two things: how much of the heirloom survived, and how the colour at the neckline sits against the wearer's skin. Preservation wins by design. It's the promise we made, and it's the part we can actually measure.
Before building any of it, we tested the risky assumption first. Could YouCam carry a very distinctive textile through both a redesign and a try-on without losing its identity? We ran it, scored it against a written rubric, got 97 out of 100, and only then started building. That report is in the repo.
Challenges we ran into
The documentation didn't cover what we needed. The skin analysis request format wasn't published, so we didn't guess it. We wrote a probe that discovered it. The concern names are impossible to guess: it's age_spot, not spot. dark_circle_v2, not dark_circle. moisture, not hydration.
We found all fourteen names without spending a single credit. Rejected requests are free, so we sent a deliberately invalid value at position zero. The request always fails, and the error message lists exactly which of the other values were wrong. One free request tested fourteen names.
Our best idea turned out to be impossible. We were proud of "one photo, two APIs", the same wearer photo doing double duty for the try-on and the skin reading. Then the API returned error_src_face_too_small. A full body photo has a face about 220 pixels tall, and skin analysis needs far more. We had to ask for a second, closer photo. Annoying, but it's what a real bridal fitting does anyway. One photo for the drape, one for the face.
We almost shipped a measurement that was completely wrong. Our first version compared what share of the whole image was teal. But the heirloom is photographed flat, filling most of the frame, while the try-on is a person on a white background. Teal appeared to drop from 48% to 15%, and our code would have declared a perfectly preserved saree destroyed. We caught it while calibrating on real photos. Everything is now measured as a share of fabric pixels, which makes the two comparable.
Gold and skin are the same colour to a computer. Both land around the same hue, so bare arms and a face were being counted as gold border. Teal and maroon don't have that problem in a portrait. So we report those two as measured, and gold as approximate, never as proof.
We had to delete our own clever feature. We wanted to say "your undertone is warm, so choose this one." Then we measured two real faces at 16.9 and 21.8 degrees. Five degrees apart, well inside ordinary lighting noise, and our thresholds put them in different categories. That isn't science, it's a coin flip with a confident voice. We widened the neutral band so we only claim an undertone when it's obvious, and added a test that fails if a few degrees of noise can flip the answer.
A test told us our product design was wrong. With all three details locked equally, "maroon reduced" and "gold reduced" scored identically. The ranking literally could not tell a customer who came for the pallu from one who came for the border. Three pre-ticked checkboxes carried almost no information. That's why the "matters most" star exists. A failing test found the missing feature.
Two smaller ones. Skin analysis returns a ZIP file rather than scores, so we wrote a tiny reader; every entry is uncompressed, so it's a byte slice with no library needed. And YouCam result images sit on another domain, which stops a browser reading their pixels, so we proxy them through our own server to measure them.
Accomplishments that we're proud of
Our tool is allowed to disappoint you. That's the whole thing. Every AI demo tells you the result is beautiful. Ours will tell you it ruined the part you loved. We wrote tests that enforce that honesty, so we can't quietly soften it later.
A flattering direction cannot win by destroying something you locked. Neutral skin can never be named as the deciding factor, and no explanation is allowed to say "warm" or "cool" about a neutral reading. The preparation plan admits when your date is too close for something to help. And the measurement is proven capable of failing: pointed at an unrelated garment, it correctly reports the teal as lost.
That last one matters most. A preservation check that always says "preserved" proves nothing at all.
38 tests that run with no API key and no credits. Clone the repo, run npm run check, and verify every claim on this page yourself against the real data we captured.
We used 6 credits. Not because we were being careful with someone's money, but because we did the thinking before the spending.
What we learned
Measure before you build the story. We validated the hard part first, then built a product around it. Twice, real measurements contradicted what we had planned, and the real numbers made a better product than our plan did. The maroon pallu reducing was supposed to be a bug. It turned out to be the feature.
Don't guess an API, interrogate it. Every field name we guessed was wrong. Every one we discovered was right.
Honesty has to be enforced. Good intentions drift under deadline. Tests don't.
A failing test can be a product review. The tie between maroon and gold wasn't a code bug. It was our design telling us we had forgotten to ask the customer the most important question.
What's next for ReWeave
Work on any heirloom, not just this one. The colour bands are currently tuned to this saree. Upload a red Banarasi and the numbers mean nothing. The fix is to read the dominant colours out of whatever garment is uploaded and name them automatically. That's the difference between a demo and a product, and it's the next thing we build.
Prove it on a completely different heirloom, on screen, so nobody has to wonder whether we tuned everything to one photo.
Measure the motifs, not just the colours. We can tell you the teal survived. We can't yet prove those are still peacocks. That stays a human confirmation in the app today, and we say so plainly.
Give the tailor a link that never expires. The preview images come from YouCam and expire in 24 hours. Real ateliers work on longer timelines.
And the honest long term goal: get a few sarees out of that cupboard and onto people.
Built With
- cloudflare-workers
- html5
- next.js
- node.js
- perfect-corp
- react
- rest-api
- tailwindcss
- typescript
- vite
- youcam-api
- youcam-apparel-vto
- youcam-image-generator
- youcam-skin-analysis
Log in or sign up for Devpost to join the conversation.