Inspiration

Great outfits rarely appear as neat product listings. We discover them in videos, pinterest posts, and street-style photos. Even when we love the complete look, finding every piece means opening multiple searches, guessing product names, comparing weak matches, and still not knowing whether the outfit will feel right on us.

That gap between “I want that” and “What can I actually buy, and how would it look on me?” inspired WANT!

What it does

WANT! is an agentic browser extension that turns any outfit you see online into a shoppable look you can try on yourself.

Press Alt+W, choose Pick a look, and draw around an outfit on the page. You can also upload a screenshot.

From that single request, WANT!:

  1. Identifies every visible clothing item, shoe, and meaningful accessory.
  2. Runs a separate live shopping agent for each distinct item in parallel.
  3. Validates the product images and links it finds.
  4. Shows up to three real options for every piece.
  5. Lets you choose the exact combination you want.
  6. Uses YouCam Clothes V3 to render the supported selections on your photo.
  7. Keeps every item shoppable and lets you save the completed look privately.

Items that YouCam does not render, such as jewelry or unsupported layers, remain available in the product tray and are clearly marked as not shown in the preview.

How I built it

WANT! begins as a Chrome side panel or Firefox sidebar built with React, TypeScript, Vite, and the WebExtensions API. The extension captures only the area deliberately selected by the user and sends it to a FastAPI processing service.

OpenAI first examines the reference image and returns a structured inventory containing the description, category, body region, visibility, and crop boundary of every wearable.

The workflow then fans out. One concurrent OpenAI Responses shopping agent searches for each item using hosted image and text search. Local validation checks the returned products, downloads and decodes their images, removes unusable evidence, and retries only the rows that failed.

The user then directs the workflow by selecting one product in each row. Those exact choices, together with the user’s photo, are sent through the appropriate YouCam Clothes V3 stages:

full body → shoes

or

upper body → lower body → shoes

Each successful YouCam result becomes the input to the next garment stage. This makes YouCam the fitting room at the center of the experience, not a decorative API call added after product discovery.

The final image, product evidence, profile photo, and saved looks are copied into private browser IndexedDB storage. The hosted Railway API keeps provider keys server-side and only handles transient processing data.

A repeatable benchmark produced 30 detected items, 38 retail products, only two honest fallbacks, 34.7 seconds mean discovery latency, and 49.1 seconds maximum latency. A measured end-to-end YouCam render completed in 43.3 seconds.

The agentic workflow

The user gives WANT! one high-level goal:

Recreate this look on me.

The system turns that goal into a coordinated workflow:

Capture → perceive the complete outfit → delegate parallel searches → validate and recover evidence → let the user choose → render through YouCam → save or shop

This is more than a wrapper around one model or API call. It combines visual reasoning, task decomposition, concurrent agents, evidence validation, targeted recovery, user-directed state, and real-world action through YouCam.

Challenges I faced

Finding products reliably

Search results often contained excellent products but unreliable image URLs. Retailer CDNs expired, blocked remote downloads, or returned formats that looked valid in search but failed inside YouCam.

I solved this by validating and decoding every image once, preserving usable evidence as look-scoped media, trying alternate image-search URLs, and retrying only product rows that had no viable image.

Recreating layered outfits honestly

Real outfits contain jackets, underlayers, socks, jewelry, bags, and other pieces that cannot all be represented by one virtual try-on request. Repeated garment stages can also replace details from an earlier layer.

Instead of pretending everything appeared in the render, WANT! chooses the best supported garment for each YouCam region and keeps the remaining pieces visible and shoppable with an explicit not in preview label.

Balancing hosting with privacy

A hosted backend makes judging much easier, but I did not want user profiles and saved wardrobes stored in a shared cloud database.

I separated processing from persistence. OpenAI and YouCam credentials remain on the hosted FastAPI service, while the user’s profile and saved collection live on their own device in IndexedDB.

Making a browser extension easy to judge

Unpacked extensions normally require cloning a repository, installing dependencies, configuring API keys, and starting a backend.

I built a small installation page with macOS and Windows installers. The judge only downloads the correct package, approves Load unpacked in Chrome, adds a full-body photo, and presses Alt+W.

What I learned

I learned that reliable agentic products need more than model intelligence. They need clear state, evidence checks, targeted recovery, and places where the user can direct the result.

I also learned that virtual try-on is most valuable when it stays connected to a real buying decision. In WANT!, the products selected by the user are the products that enter the YouCam workflow, and every result leads back to a real store.

Most importantly, I learned to make uncertainty visible. A credible fallback or an honest “not in preview” label is more useful than a polished but misleading result.

What is next

Next, I would add optional account sync, delivery-aware product discovery, more supported garment layers, and richer outfit comparison while preserving the same principle:

The internet is the inspiration. WANT! is the fitting room.

Built With

  • fastapi
  • manifestv3
  • openai
  • pillow
  • typescript
  • webextensionsapi
  • youcamapi
Share this project:

Updates