What each kind of dish is made of
Every dish in the corpus carries 18 measured flavor dimensions. Group them by what kind of dish they are — the one label in this corpus that partitions cleanly — and ask how each group departs from the corpus average.
The expected result is ten distinct profiles. The actual result is that only three kinds of dish have a fingerprint at all.
Most dishes are the average dish
Measured as the root-mean-square departure across all 18 dimensions, the categories fall off a cliff:
| kind of dish | distinctiveness (RMS z) | n |
|---|---|---|
| drink | 1.00 | 73 |
| dessert | 0.98 | 160 |
| bread | 0.80 | 58 |
| salad | 0.40 | 97 |
| sauce/condiment | 0.40 | 24 |
| side | 0.33 | 108 |
| snack | 0.31 | 60 |
| soup | 0.20 | 179 |
| appetizer | 0.19 | 113 |
| main | 0.19 | 1473 |
Drink, dessert and bread have a signature. Everything else is close to ordinary, and soup and appetizer are as featureless as main — which is the real finding, because main is 63% of the corpus and therefore is the average by construction. Soup and appetizer have no such excuse. They are simply not a flavor category; they are a serving format.
A dessert is defined by what is missing
The strongest departures in the whole grid, restricted to channels the engine can make a magnitude claim on:
| kind of dish | dimension | SD from corpus average | n |
|---|---|---|---|
| drink | salinity | -2.13 | 73 |
| drink | richness | -2.09 | 73 |
| dessert | sweetness | +1.84 | 160 |
| dessert | salinity | -1.63 | 160 |
| drink | umami | -1.62 | 73 |
| dessert | umami | -1.40 | 160 |
| dessert | floral | +1.31 | 160 |
| dessert | herbaceous | -1.26 | 160 |
| bread | umami | -1.25 | 58 |
| drink | sweetness | +1.21 | 73 |
Seven of the ten biggest departures point downward. What marks a dessert is not mainly the sugar — it is the absence of the savory axis: umami, salinity and herbaceous all sit more than a standard deviation below average. A dessert is defined by what has been taken out at least as much as by what was put in. Dessert is also the corpus’s floral pole, which is vanilla, citrus zest and rosewater rather than a fruit effect.
Mirepoix is not 2 : 1 : 1
The classic teaching is two parts onion to one carrot to one celery, by weight. Of 2,345 recipes, 52 list all three vegetables with a weight. Their median proportion is about 1.4 : 1.5 : 1 — carrot slightly ahead of onion — and only 5 of the 52 carry as much onion as carrot and celery combined, which is what 2:1:1 actually implies.
Read the caveat on that chart before quoting the ratio. The distribution is severely quantized — 17 distinct proportions across 52 recipes, with 25 of them on a single coordinate — because almost every line is a bare count (“1 onion, 2 carrots, 2 stalks celery”) converted by standard piece weights. The robust claim is therefore about what recipes say, not what cooks weigh: the most common mirepoix instruction in this corpus is one onion, two carrots and two stalks of celery, which fails 2:1:1 under any sensible set of piece weights.
Honest limitations
- Three dimensions are drawn but never ranked. Heat, smoke and pungent allium are presence-only channels in this engine — they reliably separate has-it from hasn’t and nothing finer — so they appear in the grid (dropping them would misrepresent the vector) marked with a degree sign, carry no printed value, and are excluded from every ranked list above.
- Sampling noise is about ±0.40 SD for the smallest group (sauce/condiment, n=24) and ±0.05 for the largest (main, n=1,473). Pale cells are not findings.
- The mirepoix ratio is hostage to unit conversion — see above. The count claim survives; the precise mass ratio is our arithmetic as much as the corpus’s.
- ~40% of the corpus is project-authored. For mirepoix, excluding those leaves n=27 and both medians are unchanged.
Reproduce this
Deterministic, offline, no model calls. Every number on this page is read from the script’s results file — the page cannot state a number the script didn’t produce.
python analysis/instrument_room/scripts/piece8_dish_anatomy.py python analysis/instrument_room/scripts/piece8_figures.py
Input: prototype/web/src/data/sample_corpus_v17.json (read-only). Every number on this page is in analysis/instrument_room/results/piece8_dish_anatomy.json.