Elara
An AI stylist that learns a person's real closet, dresses them from what they already own, and only goes shopping when there's a gap it can prove.

The problem
People own more clothes than they wear — and keep buying what they already have.
A typical user has around sixty pieces hanging in the closet and lives inside a rotation of eight. Not because the other fifty-two are bad, but because nobody can hold a full wardrobe in their head at 7:15 in the morning. So the same shirt goes on again, the linen jacket stays on the rail, and a duplicate black tee gets bought online three weeks later.
The reason isn't taste. It's that the loop is broken across five places that never speak to each other: the closet is in the bedroom, the inspiration is on Pinterest, the shopping is in ten open tabs, the try-on is in a fitting room, and the feedback — what actually got worn — is nowhere at all. Every decision restarts from zero.
A style quiz doesn't fix that. A feed of trending outfits doesn't either, because trends are generic and a wardrobe is specific. What was needed was a system that holds all five stages in one place, so each one makes the next one better.
What I built
One loop: closet, profile, styling, shopping, learning.
Elara digitizes a wardrobe from photos, builds a style profile that keeps updating, composes outfits from real owned garments against real context — weather, calendar, occasion — and searches across retailers only when the closet genuinely can't cover the request. Every wear, skip and swap feeds back into the profile.
I built it end to end: the garment ingestion and tagging pipeline, the styling engine, the cross-retailer retrieval layer, the virtual try-on flow, and the iOS, web and browser-extension surfaces that sit on top of them.
- Wardrobe digitization pipeline — batch photo upload, garment isolation, and automatic tagging across 15+ attributes (category, color, fabric, fit, occasion, season)
- Living style profile — a preference graph built from wear history, accepted and rejected outfits, and how the user talks about clothes in chat, rather than a one-time questionnaire
- Outfit composition engine constrained to owned items, conditioned on weather, calendar events and stated occasion
- Virtual try-on — garment rendered on the user's own body before any purchase decision
- Cross-retailer search across 100+ brands, filtered to size, palette and budget
- Gap detection — a shopping suggestion only surfaces when the wardrobe can't already solve the request
- Chrome extension bringing the same profile to any product page on the web
- Conversational interface that accepts a whole situation ("outdoor wedding next month, semi-formal, don't want to buy anything") as a single request
By the numbers
- 100+ hrs
- Saved per year on getting dressed
- 2–3x
- More of the existing closet back in rotation
- $400+
- Avoided duplicates and impulse buys per year
- 10,000+
- Users joined before launch
- 100+
- Retailers searchable
- ~10 min
- Onboarding to first styled outfit
Illustrative figures.
System design
Style from the closet that exists, not the one a model imagines.
The core design decision was that an outfit is a set of real garment IDs, never a description a model wrote. The styling engine can only assemble looks from items that exist in the user's digitized wardrobe, so it is structurally incapable of suggesting a jacket the user doesn't own. Every outfit comes back with its reasoning attached — why linen for an outdoor ceremony, why that palette for semi-formal — because a recommendation nobody understands is a recommendation nobody wears.
Shopping runs through the same discipline in reverse. A product is only surfaced when gap detection finds something the closet can't cover, and the candidate arrives already styled into a full outfit with owned pieces, one tap from a try-on. That inverts the usual incentive of a shopping app: the system's first move is to check whether the user already solved the problem.
The model proposes the outfit. The closet decides what's in it.
Reliability and rollout
A stylist that gets it wrong twice stops being a stylist.
Trust in a styling product is fragile in a way it isn't in most consumer software — a bad outfit on a Monday morning costs the user their actual day, and one hallucinated garment ends the relationship. So the constraints that mattered most were the unglamorous ones.
Wardrobe photos and body images are personal data, and the try-on flow was built around that from the start rather than retrofitted: scoped access, encryption in transit and at rest, and user-controlled deletion of source imagery.
Latency and cost were split by surface. Daily outfits are generated ahead of the morning against forecast and calendar, so they're waiting on the lock screen instead of spinning; interactive chat and try-on run on a tighter budget with the expensive generation steps reserved for moments the user explicitly asked for them.
The learning loop needed guardrails of its own. Naively optimizing on accepted outfits collapses a profile into a single safe aesthetic within weeks, so skips and swaps are weighted differently from wears, and exploration is preserved deliberately — the loud shirt that finally works on a Saturday is the whole point of the product.
Rollout went from a closed waitlist to iOS, web and the browser extension, with the extension as the wedge: it puts the same profile on every product page a user was already visiting, which is where the expensive mistakes happen.
Built with
- AI/LLM Development
- Computer Vision & Image Recognition
- Generative AI
- Virtual Try-On
- React
- React Native
- Frontend Development
- Python
- Backend Development
- Recommendation & Personalization Systems
- E-commerce
- Product Catalog API Integration
- Database & User Preference/Memory Systems