The order of operations: what 14,362 recipe steps say about the rules you were taught
Cooking instruction is full of sequencing rules delivered as law: onions before garlic, fresh herbs at the end, bloom your spices, season as you go. Recipes are the one place where thousands of cooks have written down what they actually do. We took the 14,362 steps across the 2,345 recipes in Palate’s corpus and checked four of the rules against them.
Method in one breath: a “mention” is a word-boundary match in a step’s text; a step’s position is normalized 0→1 from first step to last. Every term list is published in the results file. The crudest possible method, on purpose — and mentions are not additions, which is limitation number one below.
Rule 1 — “Fresh herbs go in at the end.” Holds, emphatically.
Mentions of parsley, cilantro, basil, chives, dill or mint (n=966 step-mentions) sit at a mean relative position of 0.79, with a median of 1.00 — the single most common place to meet a fresh herb is the final step. 72.7% of all fresh-herb mentions fall in the last third of the recipe. Dried herbs and bay leaves (n=195) sit at 0.51 — the middle of the dish, right where the simmer starts.
Rule 2 — “Garlic goes in after the onions.” Collapses.
The rule’s logic is sound — garlic burns faster than onion sweats. But of the 785 recipes whose steps mention both:
| practice | recipes | share |
|---|---|---|
| garlic after onion (the rule) | 302 | 38.5% |
| both in the same step | 309 | 39.4% |
| garlic first | 174 | 22.2% |
The most common practice is the one the rule forbids. Either a lot of recipe writers are wrong, or — more likely — the rule matters at the margin (high heat, long sauté) and most home recipes never reach the margin.
Rule 3 — “Season as you go.” The recipes don't.
862 of 2,345 recipes — 36.8% — never mention salt in any step. Not “add salt,” not “salted water,” not “season with salt” (our matcher counts all of these). Salt appears in ingredient lists and then silently vanishes from the instructions in over a third of recipes. If you learned to cook from written recipes alone, a third of your teachers never told you when to salt anything.
Rule 4 — “Bloom ground spices early, in the fat.” Holds.
Mentions of cumin, paprika, curry powder, chili powder and turmeric (n=531) sit at a mean position of 0.26; 60.5% fall in the first third of the recipe and only 5.3% in the final third. Written practice agrees with the rule: ground spices are an opening move. (The exception the data can’t see: finishing spices like garam masala — deliberately excluded from the list because it’s taught both ways.)
Where our numbers differ from earlier internal estimates
An earlier internal probe of the same data reported fresh herbs at mean position 0.93 (we measure 0.79 — herb lists differ, and ours is published) and 29.8% of recipes never mentioning salt (we measure 36.8%, despite our matcher also counting “salted” and “salting”). Its garlic-vs-onion split we reproduce exactly — once plurals count as mentions; our first run with singular-only matching found 694 recipes and a 40/41/19 split, a reminder of how much the matcher is the method. Directions never flipped; magnitudes move with the term lists. That is exactly why every term list is published — change them and see.
Honest limitations
- Mentions ≠ additions. “Remove the bay leaf” counts as a bay-leaf mention; “season to taste” without the word “salt” does not count as salt. Step text is a proxy for practice, not a log of it.
- The step data is partly machine-structured, and ~40% of recipes are project-authored — their step text was written against a schema, then verified. Authored recipes may state sequencing more explicitly than the wild average.
- Relative position flattens real time. Step 3 of 4 might be “simmer for three hours.” Only 47.5% of steps carry an explicit duration, so we used the step count, not the clock.
- Term lists are choices. We published ours; reasonable alternatives move the numbers by a few points. None we tried flip a conclusion.
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/piece3_order_of_operations.py python analysis/instrument_room/scripts/piece3_figures.py
Input: data/recipe_corpus/recipe_steps_v3.json (read-only). Every number on this page is in analysis/instrument_room/results/piece3_order_of_operations.json.