Inspiration

Virtual try-on is compelling because it makes a garment feel tangible before purchase. But a plausible image can also create false confidence: looking right is not evidence that a specific size will physically fit.

FitTruth was built around one clear boundary. YouCam Apparel VTO answers, "How might this garment look?" A separate deterministic engine answers, "What does the available measurement evidence say about this size?" Keeping those answers side by side makes the experience more useful without turning a generated image into a promise it cannot support.

What it does

A shopper selects a rights-clear demo garment, chooses body measurements or a favorite garment as the comparison method, provides explicit measurements, and compares two sizes.

FitTruth sends the synthetic demo photo and garment to YouCam's live cloth-v3 Apparel VTO API. Each provider-generated result is labeled LIVE YOUCAM. Beside each visual preview, FitTruth shows reproducible fit evidence for chest, waist, length, shoulder, and sleeve:

  • the shopper or favorite-garment interval;
  • the retailer chart value and measurement basis;
  • the target ease range;
  • the resulting classification and confidence;
  • the exact reason when data is missing or methods conflict.

In the demonstrated comparison, size M is likely snug while size L falls within the stated fit range. When the retailer has not published a sleeve measurement, FitTruth says uncertain instead of estimating one.

The shopper can delete the session at any time. FitTruth removes its local records and photo immediately, calls YouCam's finished-task deletion endpoint, and reports provider deletion only after YouCam confirms it.

How we built it

The web experience uses Next.js 16, React 19, and TypeScript. Zod validates catalog, measurement, session, and provider data. SQLite and Drizzle store only short-lived session and task state.

@fittruth/youcam implements Perfect Corp's current cloth-v3 flow: request upload URLs, upload validated source bytes, create two upper_body tasks, poll with bounded backoff, normalize provider errors, and delete finished task resources. Credentials stay on the server. A deterministic fixture adapter implements the same interface so judges can run the entire product without spending API units.

@fittruth/fit-engine is a pure interval-based rules engine. It preserves chart basis, units, tolerance, measurement method, and missing data instead of reducing everything to one opaque score. The interface renders the same inputs and rule evidence used by the engine.

The submission video combines real browser footage, a live two-task YouCam run, local Qwen3-TTS narration, original generated music, timed English captions, and a Remotion composition. The live source assets are synthetic and rights-clear.

Challenges

The hardest product challenge was preventing the visual preview from silently becoming a fit claim. We solved that in the data model and UI: provider provenance stays attached to each image, while fit status comes only from versioned measurement rules.

The live API also exposed a real long-tail case. Instrumented two-size runs completed in 10.8s / 275.2s and 9.8s / 12.4s. We raised the bounded client and browser poll window to five minutes and retained the slow observation in the evidence instead of hiding it. This is useful integration proof, not a production latency distribution.

Finally, deletion needed to be evidence-based. The app does not show "deleted" because a button was pressed; it counts only provider requests that YouCam actually confirmed.

Accomplishments

  • Completed multiple real two-size cloth-v3 runs with separate M and L outputs.
  • Verified YouCam-confirmed deletion of both finished task resource sets.
  • Passed 52/52 gold fit cases and 119 automated tests overall.
  • Preserved an honest missing-data path that never produces a confident fit result.
  • Built a credential-free fixture mode without presenting fixture output as live.
  • Produced a 130-second, captioned 1080p demo with a custom live-result thumbnail.

What we learned

Generated imagery and deterministic evidence are strongest when they stay separate. The image helps a shopper imagine the garment; the evidence helps them reason about size. Combining both on one screen is more useful than asking either system to answer a question it was not built to answer.

We also learned that provider success is not the same as provider predictability. One slow task changed the timeout design and reinforced why the UI needs truthful queued, processing, succeeded, and error states.

What's next

The next validation step is a five-shopper comprehension study and an external technical-designer review of the ease-range table. Production work would add authenticated user sessions, rate and quota controls, private object storage, retailer-approved catalog ingestion, and a larger provider reliability sample. FitTruth will continue to avoid photo-derived measurements and unsupported return-rate or fit guarantees.

Evidence boundaries

  • The live YouCam results prove the integration success path, not physical fit.
  • The 52-case gold set validates the versioned rules against expected outcomes, not real-world return reduction.
  • No human usability study or external apparel-domain review is claimed.
  • All people, photos, garments, measurements, and retailer data in the demo are synthetic and rights-clear.

Built With

  • accessibility
  • drizzle-orm
  • ffmpeg
  • fit-engine
  • next.js
  • perfect-corp
  • playwright
  • privacy
  • qwen3-tts
  • react
  • remotion
  • sqlite
  • typescript
  • virtual-try-on
  • vitest
  • youcam
  • zod
Share this project:

Updates