Inspiration
E-commerce fashion suffers from a staggering 30% to 40% return rate. While sizing accounts for a portion of returns, a massive yet overlooked driver is wardrobe redundancy and buyer's remorse: shoppers impulse-buy garments that are near-duplicates of items they already own, only to realize the redundancy upon delivery and ship them back. Standard virtual try-on tools only render an item in isolation, encouraging blind checkout. We asked: What if virtual try-on didn't just show you how a garment looks, but gave you deterministic evidence of whether you actually need it?
What It Does
ReturnLess combines generative clothing drape with local wardrobe intelligence:
- Shopper Baseline & Cart Ingestion: Shoppers upload a single front-facing photograph or select an indexed capsule profile.
- YouCam S2S Virtual Try-On: Invokes Perfect Corp's YouCam Server-to-Server Clothes Try-On API (/s2s/v2.0/task/cloth) to realistically map candidate garment textures, drapes, and lighting onto the shopper model.
- Deterministic Wardrobe Overlap Engine: Converts candidate and owned garments into D65 CIELAB color space and calculates perceptual CIEDE2000 Delta-E distances, category layering utility, and seasonal overlap.
- Evidence Cockpit: Dynamically categorizes garments into REDUNDANT (>= 75%), BORDERLINE (50-74%), or DISTINCTIVE (< 50%). Displays side-by-side swatch comparison against the closest owned closet piece with explicit Delta-E distance metrics. Computes avoided duplicate spend ($) and spared reverse-logistics carbon footprint (average ~2.6 kg CO2e per avoided return).
- Shopper Decision Audit Ledger: Requires shoppers to record explicit keep/reject decisions and rationales before proceeding to checkout, exportable as an audit ledger.
How We Built It
- YouCam API Integration: Built a secure server-to-server client in src/youcam_adapter.mjs that polls asynchronous task jobs without exposing API credentials to the browser. Features an automated fixture simulation mode for unit testing and CI.
- Perceptual Overlap Analyzer: Implemented in src/wardrobe_overlap.mjs using pure mathematical color transforms (sRGB -> XYZ -> CIELAB -> CIE76/CIEDE2000 Delta-E) with human perceptual decay models.
- Zero-Dependency Architecture: Built using native Node.js HTTP and ESM (src/server.mjs), ensuring zero external runtime npm vulnerabilities, 0 audit warnings, and sub-millisecond cold starts.
- Design System: Hand-crafted cosmic dark glassmorphism interface with custom CSS tokens, Outfit and Plus Jakarta Sans typography, and interactive micro-animations.
- Testing: Complete suite of 23 automated tests covering the adapter, mathematical color transforms, input validators, and E2E HTTP endpoints with 100% pass rate.
Challenges We Ran Into
- Perceptual Color Precision: Naive RGB Euclidean distance fails dramatically with human vision. Transitioning to D65 CIELAB space and calculating Delta-E resolved this, matching human intuition.
- Balancing Novelty vs. Utility: A garment shouldn't be judged solely by color; an overcoat and a T-shirt can have the same color without being redundant. We created a composite overlap metric that weights color (60%), category utility (30%), and seasonality (10%).
Accomplishments We're Proud Of
- 23/23 unit and integration tests passing in 1.4 seconds.
- Sub-50ms server response times with zero external runtime dependencies.
- A functional decision ledger that turns a flashy try-on gadget into a measurable sustainability and financial tool.
What We Learned
YouCam's S2S architecture makes it easy to integrate high-fidelity apparel generative try-on into complex e-commerce workflows without burdening the browser client with heavy graphics computation or exposing developer API keys.
What's Next for ReturnLess
- Browser extension overlay for Shopify and Farfetch checkout flows.
- Automated wardrobe cataloging from e-commerce order confirmation emails.
- Multi-garment capsule compatibility scoring.
Built With
- ciede2000
- css3
- html5
- javascript
- node.js
- virtual-tryon
- youcam-api

Log in or sign up for Devpost to join the conversation.