Project Story
Inspiration
Buying lingerie online creates a contradiction.
It is one of the categories where customers most want to understand how something might look on them, yet it is also one of the categories where uploading a personal photo can feel the most sensitive.
Most virtual try-on experiences solve one part of the problem:
“What might this look like on me?”
But after the rendering appears, the shopper still has to decide:
Which one do I actually want?
We built NUDE Private Fitting Room to explore what virtual try-on could become if privacy and decision-making were treated as part of the product from the beginning.
NUDE is a real direct-to-consumer apparel brand, so we did not build the project around a fictional catalog or mock products. We used real NUDE products, real product imagery, real construction details, and a real shopping journey.
The goal was simple:
Try privately. Compare clearly. Decide with confidence.
What it does
NUDE Private Fitting Room is a privacy-first virtual fitting and decision experience for intimate apparel.
A shopper can:
- Browse a curated digital showroom of real NUDE products.
- Open a product and review detailed construction information.
- Upload a photo and generate a virtual fitting using Perfect Corp YouCam Virtual Try-On.
- Save generated fittings locally in My Looks.
- Compare two or three looks side by side.
- Create a private comparison card and send it through their own messaging app.
- Return to the fitting room and manually record Friend's Pick.
The full journey is:
Showroom → Product → Virtual Try-On → My Looks → Compare → Ask a Friend → Friend's Pick
Virtual try-on is therefore not the end of the experience. It becomes the visual input for a larger decision process.
How we built it
The application is built with:
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS
- Zustand
- Framer Motion
- IndexedDB
- Canvas
- Perfect Corp YouCam Virtual Try-On
- Vercel
The virtual fitting flow integrates Perfect Corp's cloth-v4 API.
When a shopper starts a fitting, the application uploads the shopper photo and the selected garment reference through Perfect Corp's file flow, creates a cloth-v4 task, polls for completion, and returns the rendered result to the browser.
We built the integration with production safeguards including request-size limits, per-IP rate limiting, garment-category validation, API error handling, and fail-closed behavior.
If the Perfect Corp API is unavailable, the product does not pretend that an AI fitting was generated. Instead, it clearly presents a labeled side-by-side fallback.
We also prepared garment reference assets specifically for virtual try-on. Retail imagery is designed for merchandising, but a VTO system needs a clean garment reference, so supported products use dedicated garment crops rather than treating every storefront image as interchangeable.
Privacy by design
Privacy is especially important in intimate-apparel retail, so we did not want it to exist only as a disclaimer.
Before a shopper uploads a photo, the interface explains what happens to it.
The shopper photo is sent to Perfect Corp only when a fitting is generated. NUDE's server processes the request in memory and does not persist the uploaded photo.
The shopper's fitting-room state and generated looks are stored locally in the browser using IndexedDB.
Changing the source photo clears the previous fitting-room state.
The same principle shaped Ask a Friend.
We deliberately did not build a NUDE social network, friend account system, or voting backend. Instead, the comparison card is composed client-side and shared through the user's own messaging app.
The conversation stays where the shopper already talks to someone they trust.
Privacy is therefore reflected in the architecture, not only in the copy.
Building the decision layer
One of our biggest product decisions was not to stop at a successful virtual fitting.
A rendering may answer whether someone likes a single product, but shopping often involves comparison.
So we built My Looks and a two- or three-look comparison interface.
Each comparison can combine the visual fitting with real garment construction information such as cup structure, wire, padding, straps, closure, material, available colors, and sizing.
From there, Ask a Friend lets the shopper generate an A/B or A/B/C comparison card.
The friend does not need a NUDE account or another app.
The shopper can then return and record the recommendation as Friend's Pick.
This turned the project from a virtual try-on demo into a lightweight decision tool.
Challenges we faced
1. Retail images are not automatically VTO inputs
Product photography is optimized to sell a garment, not necessarily to act as a clean AI reference.
We had to separate the images we wanted customers to see from the garment references we wanted the VTO model to process.
That led us to prepare dedicated garment assets for supported colorways.
2. A failed AI result must still be honest
Virtual try-on can fail because of pose, source-image quality, garment references, file constraints, or API processing.
Instead of hiding those failures, we mapped API states into understandable product messages and built an explicitly labeled fallback.
A preview is useful.
A preview pretending to be a successful AI render is not.
3. Comparison usually creates more infrastructure
Once we added "Ask a Friend," the obvious architecture was to build accounts, voting links, friend profiles, and a backend.
We chose not to.
The comparison card is generated locally, sharing happens through the user's existing communication tools, and the final pick is recorded manually.
That made the feature both simpler and more consistent with the privacy thesis.
4. Keeping a hackathon project feeling like a real product
We wanted the technical integration to remain visible enough for judges to understand, without turning the experience into a developer console.
That meant balancing API evidence, privacy disclosures, loading states, product information, and branding while keeping the fitting room calm and usable.
What we learned
The biggest lesson was that virtual try-on quality is only part of the consumer problem.
After seeing a generated fitting, a shopper still has to remember what they liked, compare alternatives, understand product differences, and sometimes ask someone they trust.
The API creates the visual evidence.
The product still has to help the shopper make sense of it.
We also learned that privacy UX becomes much stronger when it describes a concrete data flow instead of making broad promises.
For a sensitive retail experience, the question:
“Where does my photo go?”
is not a legal footnote.
It is part of the user experience.
Finally, we learned that graceful failure matters in AI products. Allowing the system to say that something could not be rendered reliably creates more trust than quietly substituting a different result.
Accomplishments we're proud of
During the hackathon we built a complete end-to-end product flow around a real retail catalog:
Showroom → Product → Live Perfect Corp VTO → My Looks → Compare → Ask a Friend → Friend's Pick
We also built:
- A working Perfect Corp
cloth-v4integration - Dedicated garment reference assets
- Server-side safety and rate-limit controls
- Local fitting-room persistence with IndexedDB
- Two- and three-look comparison
- Client-side private comparison-card generation
- A no-account Ask a Friend flow
- Friend's Pick recording
- A graceful non-AI fallback
- An agent-facing WebMCP tool layer
- A deployed production experience
Our demo also includes a real Perfect Corp API call from loading state through the generated result rather than replacing the core integration with mock footage.
Most importantly, the finished project still feels like a fitting room rather than an API demonstration.
What's next
The next step is not simply adding more AI.
It is making the decision layer more useful while keeping the experience private.
We want to explore better garment-reference preparation, broader colorway coverage, richer comparison across product attributes, and better ways to understand which parts of the fitting journey actually help customers move from curiosity to a confident choice.
The broader opportunity is a reusable privacy-first virtual fitting layer for sensitive-category retail.
Perfect Corp gives retailers the ability to generate the fitting.
NUDE Private Fitting Room explores what happens next:
helping the shopper make the decision.
Built With
- canvas
- client-side
- e-commerce
- indexeddb
- next.js
- privacy
- react
- rest
- serverless
- tailwind
- typescript
- vercel
- vto
- web
- webmcp
- youcam
- zustand
Log in or sign up for Devpost to join the conversation.