The problem
The right size already exists. Your profile doesn't.
Returns
A large share of online fashion returns are size-related. The market's answer is bracketing: order three sizes, keep one, send two back.
The silos
Size recommendation works — but in every existing implementation the profile belongs to the vendor or the retailer. You rebuild it, implicitly, at every shop you visit.
The agents
Agentic commerce protocols are standardising catalogue, checkout and interfaces — but not fit. The assistant that will buy clothes on your behalf would, today, guess your size from nothing.
What it is
Three JSON documents, one explained recommendation
You own the first. The seller publishes the second. The third is the only thing that travels between the two — confidence exposed, per-zone reasoning, never a size handed down from a black box.
Fit Profile
— yours
Body measurements with declared source and uncertainty, fit preferences, and the history of how past garments actually fitted you.
"chest_circumference": { "value": 100, "unit": "cm", "source": "tape_measured", "tolerance": 1.0, ... }schemas/v0.1/fit-profile.schema.json
Cut Profile
— the seller's
How the garment is cut, not what the brand calls the size: finished measurements per size, intended ease, stretch, data provenance.
"size_label": "41", "finished_measurements": { "chest_width": { "value": 58, "unit": "cm" }, ... }schemas/v0.1/cut-profile.schema.json
Match Report
— what travels
A size, the alternatives, zone-by-zone reasoning and an honest confidence — decomposed, capped when data is thin, never overstated.
... "disclosure_level": "result_only", "recommended_size": "41", "confidence": 0.84, "correctable": true, ...schemas/v0.1/match-report.schema.json
The match runs where the profile lives, and only the report travels. The excerpts come from the repository's examples; the guide shows the exact report at every level.
In practice
What becomes possible when a garment publishes its cut
Second-hand
Sellers already lay the garment flat and write the numbers in the listing. But is "chest 54" half the way round, or all of it? The builder turns the same gesture into a Cut Profile that says how it was measured. Shirts, T-shirts, trousers and jeans for now; nothing is uploaded, nothing is stored here.
Measure a garmentIn store
The fitting room in your pocket: a QR code on the label points to the Cut Profile. Scan it and the match runs on your phone — you know whether it fits before trying it on, and nothing leaves for the shop. Not even the size.
Online
The same gesture where no fitting room exists: online the garment can't be tried on, but its cut is published and your profile answers — with confidence exposed and per-zone reasoning, not a promise.
"Fits like"
Two garments that publish their cut can be compared with each other: a retailer can tell you this jacket is cut like the one you kept. A garment-to-garment comparison that never touches your measurements.
Privacy by design
Four disclosure levels. You choose what leaves.
In the in-store scenario nothing leaves: the computation happens entirely on your side. When something does need to leave — an online shop, a return, your tailor — the answer is graduated: from the reasoning zone by zone, with its numbers, down to just a size and how sure it is. The profile leaves at no level.
The arithmetic leak is why the lower levels exist: publishing ease in centimetres next to the garment's measurements would reveal body measurements by subtraction. Below scoped, ease values are stripped at serialisation. Below full, the intended ease is stripped too: your preferences and your history may have moved it.
Scope
What it is not, stated before you ask
Not a size-recommendation vendor. The argument is ownership and portability; becoming another silo would destroy it.
Not an identity system. The profile lives in a vault the person chooses; authentication and custody are deferred to existing wallets.
Not a scanning technology. The model accepts measurements from any source — and declares their quality instead of pretending it uniform.
Not a size-chart aggregator. Charts say what a brand calls a size, not how the garment is cut.
Not a protocol. It is a data model: it works over a plain HTTP API, and the algorithm is not normative — the shape of the answer is.
Status
v0.1 draft, in the open
- Version
- v0.1 draft nothing is stable before 1.0
- Schema identifiers
- stay resolvable; breaking changes bump the version
- Specification
- CC BY 4.0
- Reference implementation
- Python · Apache 2.0 · zero runtime dependencies
- Archived
- doi:10.5281/zenodo.21922898 · Software Heritage
Zero runtime dependencies, so the privacy invariant can be verified by reading the code in an afternoon. The most valuable contribution? A body and a garment where the answer is obviously wrong, as a failing test. Or a shirt measured with the builder: the measuring definitions are not yet proven, and two people getting different numbers for the same garment is exactly what this version needs to hear.