v0.1 draft · open standard · a personal project by antferr

Agio Fit your fit profile is yours. Everywhere.

Every size-recommendation service works — and keeps your profile captive. Agio Fit is the opposite: an open data model where your measurements live in a vault you choose. By default a shop gets a size and how sure it is, never your measurements.

agio /ˈadʒo/: in tailoring, the ease designed between body and garment. The logo draws it as the space between the ring and the disc.

Example shirt · size 41 · laid flat

A shirt laid flat with five measuring points: 1 neck circumference, 42 cm; 2 shoulder width, 46.5 cm; 3 chest width, 58 cm; 4 waist width, 54 cm; 5 sleeve length, 65 cm.

1 42cm 2 46.5cm 3 58cm 4 54cm 5 65cm
Laid flat, fastened, not stretched; the collar opened out. Chest and waist are half the way round; the collar, the whole way.

Cut Profile

public · the seller's

neck_circumference
42 cm
shoulder_width
46.5 cm
chest_width
58 cm
waist_width
54 cm
sleeve_length
65 cm

What leaves your vault

41 recommended_size

confidence 0.84

not in the report: body measurements ease in cm

disclosure_level: result_only

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 garment

In 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.

full
not in the report: profile intended ease ease in cm per-zone reasoning 41 confidence 0.84
scoped
not in the report: intended ease ease in cm per-zone reasoning 41 confidence 0.84
explained
not in the report: body measurements not in the report: ease in cm per-zone reasoning, no numbers 41 confidence 0.84
result_only
41 confidence 0.84

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

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.