v0.1 draft · open standard · a personal project by antferr
In tailoring, agio is the ease designed between body and garment. Here it is an open standard: three JSON documents, a reference algorithm and one rule — the profile stays yours; shops only ever get a size.
01 · The vocabulary
The whole standard fits in three JSON schemas. You own the first, the seller publishes the second, and the third is the only thing that travels between the two. Open the examples to see the actual shape of the data.
fit-profile.schema.json
e observed_at obbligatori, tolerance fortemente raccomandata), preferenze di vestibilità e — il segnale più forte — lo storico di come i capi passati ti sono andati davvero. Your profile: body measurements (each with mandatory source and observed_at, tolerance strongly recommended), fit preferences and — the strongest signal — the history of how past garments actually fitted you. et observed_at obligatoires, tolerance fortement recommandée), préférences de coupe et — le signal le plus fort — l’historique de la façon dont les vêtements passés vous sont réellement allés.
, garment_ref e source.Simplified excerpt: a full history entry also requires occurred_at, garment_ref and source., garment_ref et source.
cut-profile.schema.json
), elasticità. Il campo measurement_method è obbligatorio e senza default. How the garment is cut, not what the brand calls the size: per-size measurements, intended ease (intended_ease), stretch. The measurement_method field is mandatory, with no default.), élasticité. Le champ measurement_method est obligatoire, sans valeur par défaut.
match-report.schema.json
The answer. Its shape is the normative part of the standard: exposed confidence, a per-zone explanation, explicit caveats. How much detail it carries is decided by the disclosure level.
02 · Try it
), ricostruita qui in JavaScript: scegli un profilo e un livello di disclosure, e guarda cosa esce — e soprattutto cosa non esce. Il capo e i profili sono gli esempi reali del repo: la Classic Oxford di Sartoria Esempio (marchio fittizio), taglie 39–42. The same logic as the reference implementation (python -m agiofit.cli), rebuilt here in JavaScript: pick a profile and a disclosure level, and watch what comes out — and above all what doesn't. Garment and profiles are the repo's real examples: Sartoria Esempio's Classic Oxford (a fictional brand), sizes 39–42.), reconstruite ici en JavaScript : choisissez un profil et un niveau de divulgation, et regardez ce qui sort — et surtout ce qui ne sort pas. Le vêtement et les profils sont les exemples réels du dépôt : la Classic Oxford de Sartoria Esempio (marque fictive), tailles 39–42.
The simulator requires JavaScript.
03 · Privacy as design
The caller doesn't decide how much it sees: the disclosure level does, and the numbers are stripped at serialisation, not by anyone's goodwill. There is a test that verifies it.
Size and confidence. All a shop needs to sell you a shirt.
Adds the per-zone assessment (good, watch…) but no centimetres.
Adds numeric ease on the requested zones. For services you trust more.
The complete profile. Meant for your vault, not for third parties.
The garment's measurements are public (they live in the Cut Profile). If the recommendation also published the ease in centimetres, anyone could do:
body = garment − ease → 116 cm − 16 cm = a 100 cm chest
a explained. One subtraction reconstructs the body measurement. That's why at the lower levels the ease exists in the computation but does not survive serialisation — try it in the simulator by switching from scoped to explained. à explained.
04 · On your machine
: The reference implementation is pure Python, zero dependencies. After cloning github.com/agiofit/agiofit: :
# install and verify (13 tests, all must pass) $ cd agiofit/reference $ pip install -e ".[dev]" $ pytest 13 passed # mature profile, default level (explained) $ python -m agiofit.cli ../examples/profile-mature.json ../examples/cut-shirt.json { "recommended_size": "41", "confidence": 0.76, ... } # cold start, result only $ python -m agiofit.cli ../examples/profile-cold-start.json ../examples/cut-shirt.json result_only { "recommended_size": "41", "confidence": 0.25, ... }
05 · Worth defending in public
The only field that records an accepted trade-off. Without it, the system learns you reject tight shoulders; with it, it learns you accept a loose waist to get the shoulders right.
Flat-laid measurements are half circumferences. It's the industry's most common mistake, and it produces recommendations wrong by a factor of two, silently. Here, if you don't declare it, the document doesn't validate.
A brand that "runs small" runs small in the torso. Applying the same centimetre shift to the collar — where 1 cm is a whole size — turns a useful correction into a wrong answer. History applies per zone: 1.0 on the chest, 0.2 on the collar.
Zero body measurements, a single kept garment from the same brand: the system still answers, with confidence capped at 0.40, refuses cross-brand inference and tells you what to add to improve. History is worth more than centimetres.