Hanyu Liu

Design exploration from the flagship project / explainable AI / technical drawing / measurement resolution

SizeSpec · Geometry Reasoning

A buyer's size chart says "sleeve length 58". Fifty-eight from where? If the measurement starts at the neck and the pattern needs it from the shoulder, a quote can be off by half a shoulder width — and the trace will say, confidently, "sleeve length 58". This prototype shows the reasoning the system does instead of trusting a number's position.

StatusInteractive design prototype
Grounded inThe quoting system's expression layer and candidate rows (in the working system); the start-point scoring is a design proposal
DataSynthetic size chart; no customer material
Source document"POM to costing geometry: design and code impact analysis", August 2026
01

Explore

Pick a part of the garment. The middle column shows the candidates the system considered; the right column shows why one won, and lets you overrule it. The drawing follows your choice.

Technical flat

1B shoulder, point to point 46.0 3A chest, half 54.0 (×2 = 108.0) 9C body length from HSP 68.0 12K sleeve length from HSP 58.0 2F front chest width 42.0 net sleeve from SP= 12K − 1B × 0.5 = 35.0 HSP SP TECHNICAL FLAT · FRONT · cm · synthetic size Mnot to scale

Size chart (synthetic, size M)

RowMeasurementcm
1BShoulder, point to point46
2FFront chest width42
3AChest, half54
7AHem, half55
9CBody length from HSP68
12KSleeve length from cervical (HSP)58

Sleeve length — candidates

The pattern needs the net sleeve length: from the shoulder point to the cuff. The chart offers one sleeve row, and it starts somewhere else.

Untick it to see the falsifiability test: without that knowledge the system must fall back to the printed value and mark it guessed — it is not allowed to subtract quietly.

Decision inspector

Selected expression
12K − 1B × 0.5 = 35 cm
Status
derived
Geometric consistency
Historical evidence
Terminology confidence
Human override
02

What the prototype is made of, and what is real

In the working system today

  • An expression layer for every pattern dimension. A dimension is a small tree: size-chart rows and constants, plus and minus, multiply or divide by a scalar, max and min. Nothing else on purpose — the less it can express, the more a formula remains something that traces back to the buyer's chart. Seam allowance is a separate term, added last, never inside the expression.
  • Candidate rows, with the losers kept. For a body width the system converts shoulder, chest and hem to one basis, picks the widest, and writes on the panel which rows it compared and why it chose that one. The body-panel mode above is this behaviour.
  • A measurement dictionary as data, not code. "Half hem is the hem" is something the company needs to know once; it lives in master data, with half-measures doubled visibly in the formula.
  • Progressive disclosure in the interface. The default is one line: value, source row, a small fx. The editor appears only when asked for.

Design proposal, shown here as a prototype

  • Candidates as expressions, not rows, scored by geometric consistency, historical evidence and terminology confidence — with rejected candidates and their reasons stored.
  • Start and end points in the dictionary. The fix for the sleeve is not a hard-coded "minus half shoulder": it is giving the dictionary the measurement's start point, so that raglan, dropped and set-in sleeves all follow from three general rules instead of one special case.
Why this is a portfolio piece: the document behind it is a technical analysis only an engineer would read. The prototype turns the same reasoning into something a product manager, a designer or an estimator can operate in a minute — on the kind of drawing they already use.
Locate the loss point firstengineering principle 1
Before fixing a bug, say which line first turned the fact wrong. If you cannot say it, you have not located it. The sleeve problem is not "wrong length"; it is "the start point was never modelled".
Trust labels, not positionsengineering principle 2
Never take "the first row" or "the largest value". Every choice among several candidates has a score and a reason — and the reason is visible in the interface.
Guards above the write pointengineering principle 3
Validation sits at the boundary where a value enters the system, not downstream where the symptom appears. A human-set value is protected at that boundary, not patched later.