As-Shown

Try on thrift finds. Keep the real details in view.

Inspiration

A virtual try-on can make an outfit feel convincing. A secondhand purchase depends on a particular physical piece: its original photos, disclosed wear, measurements and what the seller has not supplied. We wanted the generated look to help answer a style question without quietly replacing those other questions.

As-Shown is a decision space for secondhand finds, not another shop. Its central distinction is simple: the look is not the whole story.

What it does

Bring an authorized garment photo, choose its category and name the piece. My Rack organizes your own finds, decisions and collections on your device; the three synthetic examples are demonstration cases, not the available inventory. Quick references explicitly say when condition information was not supplied.

Three focused tools carry the decision end to end. Try on compares an actual YouCam style result with the unchanged reference. Inspect keeps original source views, seller-linked close-ups and private questions in view. Save downloads a decision as a verified ZIP or a standalone, script-free HTML record whose photographs work offline. A personal generated look has a separate device-local save opt-in; an input portrait stays in memory.

Optional seller records add versioned front/back photographs, explicit declarations and linked condition details. Optional seller-only links expire and can be revoked; they exclude personal looks and buyer notes. No seller message is sent automatically.

How we built it

The application integrates YouCam Clothes Virtual Try-On V3 at /s2s/v2.0/task/cloth-v3, with explicit upper-body, lower-body, full-body and shoe categories. Only the approved prepared garment reference and adult photo enter the preview path. Condition close-ups and private buyer notes are not forwarded as a collection to the VTO API.

Next.js, React and TypeScript power the interface. IndexedDB holds device-local records. Sharp decodes bounded server images, Zod validates structures, and Redis/Lua atomically admits request intents and conservatively reserves the app allowance. Known tasks can be checked/recovered; uncertain outcomes do not silently trigger another creation. This is not an exactly-once guarantee across the external provider.

Bounded worker-based ZIP handling verifies file agreement and regenerates the reader rather than executing imported HTML. Optional private Blob storage holds only explicitly published seller copies. No general-purpose language model is required at runtime.

Challenges

The hard part was preserving boundaries: a convincing generated image is not evidence of a physical garment's condition. Missing views must remain missing. Reference changes must not carry a stale result forward. Unknown external-task outcomes must pause rather than invite duplicate submissions. Exports must retain actual image bytes instead of temporary links.

Owner audits also exposed dense copy and a confusing failed-preview experience. The final usability pass separated Try on, Inspect and Save, added lightweight editing, clarified photo-versus-result states and placed recovery actions beside the failed operation.

What we verified

The dated 24 October release passed 77 unit/integration tests and 27 browser cases, with all 27 also run against the public site. Routine tests use controlled provider responses. A separate real synthetic task completed, its actual output was archive/digest verified, deliberately saved locally and reopened. Earlier category/sharing checks retain their own dates and scope.

The video preparation rehearsal uses the real public interface and the labelled recorded result, not a fake new generation. Its downloaded reader was opened with browser networking disabled. These checks do not establish real-user accuracy, garment fidelity or production certification.

What we learned

Generative try-on is most useful here when the product keeps imagination and evidence distinct. A shopper should leave with both a look and the questions that still matter.

What's next

Consent-based testing with secondhand buyers and sellers; broader garment/body/lighting validation; then evaluation of whether retained evidence and questions genuinely improve decisions. We have not measured conversion uplift or return reduction and do not claim them.

Access and disclosures

Live app: https://as-shown.vercel.app

Recorded example: https://as-shown.vercel.app/examples/linen-shirt

Public code/setup: https://github.com/kathir-iTech/as-shown

Dated evidence: https://github.com/kathir-iTech/as-shown/blob/main/docs/USABILITY_RELEASE.md

A non-commercial, limited-credit functional prototype. A style preview is not a fit, condition, identity or authenticity guarantee. Sample people/garments are synthetic; the recorded VTO output is real. Condition fixtures were created separately. Built with AI-assisted research, design, coding and testing. No new purchase or paid upgrade was required for this preparation.

Open https://as-shown.vercel.app/examples/linen-shirt. No account/key/payment is needed for recorded inspection and export. Select Inspect, open the linked source view, choose Ask seller and add a private note. Select Save, acknowledge the private-image warning, download Save readable record (HTML), and open the downloaded file offline. Download private decision creates a ZIP that can be imported through Open an As-Shown package. Live generation is a separate explicitly approved, limited-credit provider operation; this recorded example does not create a new API task.

Built With

  • indexeddb
  • next.js
  • react
  • sharp
  • typescript
  • upstash-redis
  • vercel
  • vercel-blob
  • youcam-api
Share this project:

Updates

Submission history