Nobody timed the recipe
“Total time: 45 minutes.” That reads like a measurement. It is not one, and you can prove it without timing a single recipe — just look at which numbers appear.
In 343 recipes collected from publishers, 77% of stated total times are a multiple of five. If the last digit carried real information you would expect 20%.
The shape of an estimate
This pattern has a name. Demographers call it digit heaping, and they see it wherever people report a number they did not measure — age, income, how many cigarettes a day. The teeth are where human attention rounds.
| times land on | observed | expected if measured | ratio |
|---|---|---|---|
| a multiple of 5 | 77.3% | 20.0% | 3.9× |
| a multiple of 10 | 35.6% | 10.0% | 3.6× |
| a multiple of 15 | 33.5% | 6.7% | 5.0× |
| a multiple of 30 | 14.0% | 3.3% | 4.2× |
| a multiple of 60 | 3.8% | 1.7% | 2.3× |
There are 89 distinct stated times in the sample, and 59% of all recipes sit on just ten of them. The most common are the ones you would guess:
| stated time | recipes |
|---|---|
| 15 minutes | 39 |
| 25 minutes | 29 |
| 40 minutes | 28 |
| 30 minutes | 25 |
| 35 minutes | 23 |
| 45 minutes | 17 |
| 50 minutes | 16 |
| 27 minutes | 9 |
None of this makes the times useless — an estimate from someone who has cooked the dish is worth having. It means the precision is decorative. A recipe claiming 40 minutes and one claiming 45 are not telling you about a five-minute difference; they are telling you “about three quarters of an hour” in two different moods.
Honest limitations
- This is scoped to recipes collected from outside publishers — the project-authored portion of the corpus is excluded, because those times were generated to a schema rather than written by a person, and blending the two would measure our pipeline instead of recipe writing. The exclusion is recorded in the results file.
- n = 343, which is a real sample but not a large one. The effect is big enough that sampling noise is not a plausible explanation, but a different collection of publishers could shift the exact share.
- Times over ten hours are excluded as cures and ferments rather than cook times.
- The uniform baseline assumes a last digit with no structure. Real cook times are not uniform — but no plausible distribution of actual durations produces teeth this regular at exactly the multiples of five.
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/piece10_round_numbers.py python analysis/instrument_room/scripts/piece10_figures.py
Input: prototype/web/src/data/sample_corpus_v17.json (read-only). Every number on this page is in analysis/instrument_room/results/piece10_round_numbers.json.