Excessorize
The problem
Most people own more accessories and clothes than they actually wear. Pieces sit unused because pairing them takes taste and confidence that not everyone has. Existing styling apps make it worse in two ways: they push products to buy instead of helping you use what you have, and they never explain why a pairing works, so the user never gets better at it.
Excessorize addresses three things at once. It surfaces what you already own, it removes the guesswork of pairing, and it teaches the reasoning so you learn over time. The positioning line I kept coming back to: a stylist that actually learns you, not a store that sells to you.
“You already own great outfits. We’ll show you how to wear them.”
My role
Solo, end to end. I wrote the PRD, built the brand, designed the full system, wrote the UX copy, and made the technical and privacy architecture calls. This is the deepest expression of how I work: product thinking first, then AI as the execution multiplier, with me as the quality gate on every pass.
Process
I started with a real PRD before touching a single screen: problem, goals and non-goals, user flows, MVP scope, and an honest section on the two risks that decide whether the product feels magic or mediocre, recommendation quality and AI vision reliability. Writing the risks down first shaped almost every design decision that followed.
Then came 12 design iterations, v1 through v12, each one a cycle of direct, audit, feed back:
- Every iteration started with a layout-level prompt. Not “make it nicer,” but placement, hierarchy, and states, screen by screen. Directing AI well turned out to be a design skill in itself: the more precisely I could articulate the intent, the better the output.
- Every iteration ended with an audit I ran myself. Iteration 1 found the cold-start problem: every screen assumed a 128-item closet while new users start at zero. A later pass scanned the generated source code and caught what eyes alone would miss, zero uses of the bottom safe-area inset and 36 near-identical header treatments making the design read generic.
- A competitive scan mid-project (Whering, Indyx, Acloset, Stylebook, Cladwell, and the viral “rate my outfit” wave) confirmed the teaching layer was genuine white space, told me time-to-value was still too slow, and showed the brand was about 20% too safe.
- A dedicated UX-writing pass locked the voice: encouraging best friend with taste. Verbs on buttons, never judge the user or their closet, name the benefit not the mechanic, keep the AI humble. A forgotten piece is a “forgotten favorite,” never “underused.”
Along the way I killed an entire aesthetic direction. v5 “Editorial Bold” had magazine energy on paper, but the serif read thin and dated in practice, so I cut it and committed to v6 “Premium Native,” grounded in Apple’s Human Interface Guidelines. Knowing when to kill your own darling is half of taste.
The result is a real design system in Figma: 17 color roles across dark and light mode, a type scale with per-size tracking, and a component library, plus working HTML prototypes for v6 through v12.
Key decisions
Teach, don’t just recommend
Every suggestion ships with a plain-language reason, like “warm gold picks up the tan in the jacket.” The reasoning is both a feature and a forcing function: if the AI cannot articulate a credible reason for a pairing, it should not suggest it. The competitive scan showed nobody owns this, so it became the brand.
Make the AI visible and editable
The taste model lives in an on-screen “Style DNA” profile the user can see, confirm, correct, and reset. Training the AI becomes a trust feature instead of a black box, and the profile that gets more personal with use is the product’s real moat.
Context over fine-tuning
Personalization runs on an editable profile plus feedback memory fed to the model as context at generation time, not per-user fine-tuning. It is cheaper, it is transparent, and it is the reason Style DNA can be shown and edited at all. The architecture choice and the trust feature are the same decision.
Privacy as architecture, not a policy page
Photo cutout happens on device, so the raw photo never leaves the phone. For an app pointed at your body and your closet, privacy had to be structural.
Switch to native SwiftUI when the design demanded it
The original plan was a PWA on my existing stack. But scan reliability for imperfect photographers needed a guided live viewfinder, which iOS PWAs cannot deliver, and the motion language needed real Liquid Glass. Changing the stack mid-project to serve the experience was the right call, even though it cost me the comfort of tools I already knew.
Favorites-first onboarding
Nobody wants to photograph 128 items before getting value. The flow asks for your 5 favorite pieces and styles a real outfit from them in under 3 minutes. Value first, cataloging later.
Outcome
Excessorize is design-complete: a full Figma design system, HTML prototypes v6 through v12, brand guidelines, the PRD, an architecture doc, and a written handoff brief for the functional build. It is the single best proof of how I work at the intersection of AI and design, on both sides of the equation: AI as the product’s core experience, and AI as the workflow that designed it.
What I’d do next
- Build the functional MVP: the capture, tag, and outfit loop, per the handoff brief.
- Test recommendation quality against a range of real outfits before polishing anything else. If the suggestions are not good, nothing else matters.
- Put it in front of a small group of real users and measure time-to-first-outfit, the metric the whole onboarding was designed around.

