Inspiration
Getting dressed for an important moment often begins with scattered questions: Which colors suit me? Will this makeup work with the outfit? Does the jewelry complete the look or compete with it? Existing tools usually answer only one question at a time and leave the user to connect the results.
Perfection was inspired by the idea that personal styling should feel coordinated from the first decision to the final look. We wanted an AI stylist that understands a person's visible features, respects their preferences, and turns disconnected try-on experiences into one clear journey.
Perfection is not a skin-treatment or beauty-rating app. It does not tell users that their faces need fixing. It uses visible color characteristics as creative context, helping people explore a style that already feels like them.
What it does
Perfection guides a user from a photograph to a complete, coordinated style direction.
The experience begins with a portrait captured in the browser or uploaded from the user's device. Before submission, an on-device face check gives immediate guidance about lighting, positioning, distance, visibility, and image quality. This reduces avoidable API failures and makes camera capture feel more like a guided studio session.
The portrait is analyzed to identify useful styling signals such as skin tone, hair color, eye color, lip color, and eyebrow color. Perfection translates those results into a readable Beauty Palette containing coordinated shades and style tags.
From there, the journey branches according to preference. Users can include a makeup try-on or skip makeup and proceed to clothing. They select an upper-body, lower-body, or full-body focus, a presentation, an occasion, and a curated catalogue item before continuing through jewelry and footwear. Perfection handles the required provider reference assets behind the scenes.
The final Coordinated Look card brings successful results together as one recommendation. Each section remains honest about its source: makeup, clothing, shoes, and jewelry are individual AI renders coordinated by Perfection, not a single provider-generated composite.
How we built it
Perfection is built with Next.js 16, React 19, TypeScript, Tailwind CSS, Supabase authentication, TensorFlow.js face detection, and the Perfect Corp YouCam API.
I designed the product as focused screens instead of one crowded dashboard. A validated workflow layer preserves the user's portrait, Beauty Palette, preferences, selected catalogue items, and completed results between steps.
The AI pipeline combines several specialized services:
- Facial Color Tones Analyzer extracts the color signals used to create the Beauty Palette.
- Look Virtual Try-On applies a coordinated makeup template when makeup is requested.
- Clothes Virtual Try-On handles upper-body, lower-body, and full-body garments.
- Shoes Virtual Try-On previews coordinated footwear.
- Necklace Virtual Try-On adds a focused jewelry option visible in portrait and outfit views.
All Perfect Corp communication runs through authenticated server-side route handlers, keeping the API key out of the browser. The server starts asynchronous tasks, validates user-bound polling tokens, normalizes provider responses, and returns stable application-facing results.
For the MVP, recommendations use deterministic palette, occasion, category, and presentation matching. We intentionally did not add an LLM merely to make the product sound more intelligent. Perfect Corp performs visual analysis and rendering while Perfection owns the coordination logic.
We also created an app-owned catalogue so users never need to find or upload garment, shoe, or jewelry reference images. Perfection selects the appropriate reference internally, turning a provider requirement into a seamless user experience.
Challenges we ran into
The first challenge was choosing the right analysis problem. We initially explored skin analysis, but acne, wrinkle, pore, and redness outputs did not support a personal styling product. Reframing the foundation around facial color tones gave every later recommendation a meaningful purpose.
Image quality was another major challenge. A photograph can look clear to a person while failing an AI service because the face is too small, poorly centered, hidden, or unevenly lit. We introduced an active preflight layer that provides feedback before capture or upload and made the checks practical enough for users to pass.
Virtual try-on APIs also require separate reference assets. Asking users to upload a shirt, shoe, or necklace image would have broken the experience. We moved reference management into Perfection's catalogue and select those assets automatically.
Finally, each AI feature has its own asynchronous lifecycle, response shape, failure cases, and temporary output URLs. We built shared task and error-handling patterns while allowing each feature to retain its specific request contract. The final experience can preserve successful sections even when one optional render fails.
Accomplishments that I proud of
I am proud that Perfection grew from a single analysis screen into a coherent styling journey.
The Beauty Palette transforms raw API colors into something a person can understand and use. The camera actively helps the user produce a valid image instead of waiting for an obscure server error. Makeup is treated as a preference rather than an assumption, creating a more inclusive flow for different identities and styling goals.
I am also proud of the architectural restraint behind the experience. Sensitive credentials stay on the server, provider errors become useful messages, asynchronous tasks are handled consistently, and the recommendation system remains deterministic and testable.
Most importantly, the technology does not become the interface. Users make familiar decisions about makeup, clothing, shoes, jewelry, and occasion while Perfection quietly coordinates the AI services underneath.
What I learned
We learned that successful AI products depend as much on orchestration and user guidance as model capability.
A powerful image API cannot repair a confusing capture flow. A technically correct color value is not useful until it becomes a meaningful recommendation. Multiple impressive try-on endpoints do not automatically create a coherent product; they need shared context, consistent state, clear progression, and honest presentation.
I also learned to separate detection from judgment. The provider can detect colors and render an item, but deciding what belongs in a coordinated look is a product responsibility. Keeping that distinction explicit made Perfection more explainable and easier to improve.
Finally, I learned that the best MVP is not necessarily the one with the most AI. Deterministic recommendations gave us consistency, traceability, and a dependable fallback while leaving room for conversational intelligence later.
What's next for Perfection
The next phase is to grow the curated catalogue with retailer and designer inventory, richer occasion filters, accessibility preferences, climate awareness, and user-controlled style constraints.
I plan to persist coordinated looks so users can compare, revisit, and share them. Feedback such as "more formal," "less bold," or "keep the shoes" will allow the recommendation engine to learn preferences over time without losing transparency.
I also want to add optional categories including earrings, watches, bracelets, hairstyles, and nails while preserving the focused step-by-step experience. A constrained language model can later translate natural requests into validated catalogue rankings and explain why each item was selected.
The long-term vision is for Perfection to become a trusted styling layer between people, their wardrobes, and digital commerce: one place where personal features, individual taste, real products, and virtual try-on come together as a look that feels intentional.
Built With
- nextjs
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.