Methods and scope
What Secondhand Fit will and will not list, and why. The lists on this page are rendered from the same category table the server uses to refuse a listing, so the page and the behaviour cannot drift apart.
Scope statement
Version 2026-10-01.v1
Categories that can be listed
- Tops and T-shirts — T-shirts, polo shirts, long-sleeved tops
- Shirts and blouses — button-up shirts, blouses
- Knitwear and sweatshirts — jumpers, cardigans, hoodies
- Jackets and coats — jackets, blazers, coats
Categories that are refused
- Intimates — underwear, bras, lingerie, shapewear. A try-on preview for underwear or lingerie would mean generating an image of a buyer wearing it from their photo. Secondhand Fit does not generate those images, so this category is refused.
- Swimwear — swimsuits, bikinis, swim shorts. A try-on preview for swimwear would mean generating an image of a buyer wearing it from their photo. Secondhand Fit does not generate those images, so this category is refused.
Categories that are not available yet
- Trousers, skirts and shorts — jeans, trousers, skirts, shorts. The try-on currently handles upper-body garments only, so no preview can be made for this category.
- Dresses and jumpsuits — dresses, jumpsuits, dungarees. The try-on currently handles upper-body garments only, so no preview can be made for this category.
- Shoes, bags and accessories — shoes, bags, hats, scarves, jewellery. The try-on currently handles upper-body garments only, so no preview can be made for this category.
YouCam API terms
Renders are produced by the Perfect Corp. YouCam Apparel Virtual Try-On API, and use of that API is subject to the YouCam API and Perfect Corp. terms of service.
Where the refusal happens
The category is the first thing a seller chooses on the Sell page. Choosing a refused category shows the reason and a link back to this statement, and the photo step does not open. The server enforces the same list: it creates no listing and records no readiness run for a refused category, and nothing is sent to the YouCam API.
What a preview does not claim
AI-generated preview only. No fit, size, condition or authenticity claim is made.
Readiness checks
Four checks run on a garment photo before it is accepted: framing, background separation, flatness and occlusion/shadow. They run on the Sell page, where each result is shown with its score. The thresholds are provisional and have not yet been calibrated against live API runs; the per-check write-up will be added to this page when they are.
Try-on readiness grade
Each check gives a score out of 100 and a verdict: pass, warning or fail. The grade is read off the single weakest check and nothing is averaged, so three high scores cannot lift the grade of a photo whose fourth check failed.
- Grade A — Every photo check passed.
- Grade B — No check failed, and the weakest check is a warning.
- Grade C — At least one check failed, or the garment edges were not found. A photo with this grade is not published.
A published listing shows its grade as a badge with the reason the grade is not higher and the weakest check by name. The server takes the grade from the readiness attempt it recorded for the listing, never from the publish request. This provisional grade describes the source photo. It does not score the garment or predict the accuracy of the preview.
Source code and licence
Secondhand Fit is released under the MIT licence, in the LICENSE file at the root of the repository. It covers the source code, the placeholder renders and the drawings of the demo listing set. Third-party packages keep their own licences, listed in PROVENANCE.md with the origin of every file and picture. The YouCam API is a Perfect Corp. service used under its own terms of service, and the licence grants no rights to it.
Repository: https://github.com/mjcole76/secondhand-fit.git
Running it offline from a clone
It needs Node.js 20.9.0 or newer, with npm, and nothing else: no API key, no database and no .env file.
git clone <repository-url>
cd secondhand-fit
npm install
npm run devThen open http://localhost:3000. With no YouCam credentials the app runs in offline mock mode: it replays recorded API responses, makes no outbound request and spends no API units, and the mode banner reads mock. If a key is set in the shell or in .env.local, start it with YOUCAM_MOCK=true npm run dev instead. README.md at the root of the repository has the step-by-step walkthrough, every environment variable, live mode and how to calibrate the readiness checks.