Guides · AI answer engines
What an AI shopping agent needs to answer about shirts
Which shirts attributes carry a fixed value list an assistant can compare, which are free text, and the schema.org property that holds each one.
What does an AI shopping assistant need to answer questions about shirts?
21 attributes describe shirts in a complete product record. 17 of them carry a fixed list of accepted values — age group, care instructions, closure, collar style, cuff style, fabric weave, and others — and those are the ones an assistant can compare across two products. The remaining 4 are free text.
An assistant answering “which of these is warmer” or “show me the ones in organic cotton” is not reading your description — it is matching values. Two products are only comparable on an attribute where both carry a value from the same list.
Which shirts attributes can an assistant compare?
17 of 21. These carry a closed list of accepted values, so the same concept is the same string on every product:
| Attribute | Accepted values | schema.org |
|---|---|---|
| Age group | adult, teen, kids, baby | audience |
| Care instructions | machine wash cold, machine wash warm, hand wash, dry clean only, spot clean only, do not bleach, tumble dry low, do not tumble dry, line dry, dry flat, iron low, do not iron, wash inside out, wash with like colors | additionalProperty |
| Closure | button front, half placket, zip front, snap front, pullover | additionalProperty |
| Collar style | spread, point, button down, band, camp, mandarin, wing, cutaway | additionalProperty |
| Cuff style | barrel, french, convertible, buttonless | additionalProperty |
| Fabric weave | poplin, oxford, twill, flannel, chambray, linen weave, seersucker, satin, corduroy | additionalProperty |
| Fit | slim, regular, relaxed, oversized | additionalProperty |
| Gender | women, men, unisex | audience |
| Hem style | straight, curved, split, rounded | additionalProperty |
| Occasion | everyday, casual, work, formal, party, wedding, vacation, lounge, athletic, outdoor, beach | additionalProperty |
| Pattern | solid, striped, plaid, floral, graphic, polka dot, animal, camouflage, tie dye, geometric, abstract, colorblock, paisley, houndstooth | pattern |
| Pocket style | none, single chest, double chest, flap chest | additionalProperty |
| Season | spring, summer, fall, winter, all season | additionalProperty |
| Shirt length | cropped, regular, tunic, longline | additionalProperty |
| Sleeve length | short, elbow, three quarter, long, roll tab | additionalProperty |
| Standard color (channel color map) | beige, black, blue, brown, gold, green, grey, multi, orange, pink, purple, red, silver, white, yellow | additionalProperty |
| Stretch | none, slight, moderate | additionalProperty |
Which ones stay invisible to comparison?
These are free text. An assistant can quote them; it cannot rank on them, because “100% cotton”, “cotton 100%” and “pure cotton” are three values to a machine:
| Attribute | Required by | schema.org |
|---|---|---|
| Country of origin | Amazon | countryOfOrigin |
| Material composition | Shopify, Amazon | material |
| Primary color | Shopify, Amazon | color |
| Secondary color | — | additionalProperty |
Which schema.org properties carry shirts attributes?
5 map to a dedicated Product property: audience, color, countryOfOrigin, material, pattern. Everything else belongs in additionalProperty, which schema.org defines for characteristics with no property of their own.
Property names above come from schema.org/Product. additionalProperty is the vocabulary's own answer for characteristics with no dedicated property — it takes a PropertyValue with a name and a value, which keeps an attribute machine-readable even when the vocabulary has no field for it.
Why does free text break AI product comparison for shirts?
An assistant can only rank or filter on a vocabulary two products share. "Country of origin" written three different ways across three listings is three different values to a machine, even when a human reads them as the same thing. For shirts, 4 of 21 attributes are in that state by default.
The fix is not more copy. It is putting the value in a field, from a list, on every product — which is the same work that makes a channel accept the listing in the first place.
Our scanner checks every product against exactly these rules.
Scan my catalog — free