Accuracy benchmark

How close is
the number?

We typed 48 meals the way you would and sent each one through the same request the app makes, three times over. Every log was scored against USDA. Each figure below says how many logs it counts and which way it misses.

Updated October 2026. $500 of evals, run withJev by TypeSafe AIandAnthropic
Mean accuracy
89.2%

100 − |logged − USDA| ÷ USDA, averaged over 144 logs.

Within ±20% of USDA
118 / 144

The “close enough” number. One dot per log; a miss counts as outside.

Inside 118Outside 26
Bias
−1.9%

Mean signed error. Slightly low; an average accuracy would hide which way.

Priced from a record
76%

Items matched to a USDA record. The rest are the model’s estimate.

A single whole food mostly tests whether the lookup finds its USDA record, so those score high. Plates, dishes and vague amounts are where the score means something. Read those rows first.

By category

Easy where the record exists.

Hardest first. Bias shows which way a category misses: blue logs low, orange logs high.

CategoryMealsMean accuracy±20%BiasFrom record
One named dish
2 × 3
72.2
0%
−3.3%
50%
“some rice”, “a bowl”
8 × 3
76.0
50%
+0.7%
88%
Single whole food
4 × 3
86.0
67%
−14.0%
75%
Single whole food
5 × 3
91.0
93%
+4.6%
60%
Single drink
3 × 3
91.6
78%
−8.3%
22%
Single whole food
4 × 3
93.0
100%
+1.5%
100%
Several foods, one message
10 × 3
93.7
97%
−3.3%
75%
“bananna”, “brocoli”
2 × 3
94.4
100%
−4.9%
50%
Single whole food
3 × 3
94.9
100%
+4.2%
100%
Single whole food
4 × 3
95.0
100%
−3.4%
83%
Single whole food
3 × 3
98.0
100%
+2.0%
100%
Accuracy 80 = the ±20% lineLogs lowLogs highBias axis ±30%
Every meal

One dot per meal.

Logged calories, mean of three tries, against the USDA key. On the line is exact; the band is ±20%. 39 of 48 meals average inside it.

Logged kcal
1010
3030
100100
300300
1,0001,000
Logged = USDA
USDA kcal (log scale)
Within ±20%Outside ±20%Hover or tab to a dot for the meal.
Repeatability

Same message, three answers.

Each message sent three times, unchanged. The ten least repeatable, widest first. This needs no answer key: the range is the app disagreeing with itself.

Typed message
0100200300400500
Range
“some spaghetti”
· tries 182 · 182 · 380
80%
“2 cups of chopped romaine”
· tries 32 · 16 · 16
76%
“a cup of oatmeal with a tablespoon of peanut butter and a medium banana”
· tries 338 · 488 · 338
39%
“a bowl of oatmeal with some peanut butter”
· tries 319 · 223 · 319
33%
“a can of coke”
· tries 140 · 110 · 110
25%
“a cup of oatmeal made with water”
· tries 150 · 150 · 182
20%
“a can of tuna in water”
· tries 120 · 100 · 120
18%
“2 hard boiled eggs, an apple and a glass of 2% milk”
· tries 362 · 399 · 354
12%
“some whole wheat toast”
· tries 87 · 77 · 87
12%
“a can of tuna in water on 2 slices of whole wheat toast”
· tries 273 · 253 · 281
10%
Lowest to highest of 3 triesMeanUSDARange = (highest − lowest) ÷ mean
Audit

When it’s wrong, can you fix it?

Every total opens into the rows that make it. So the real test is whether the rows add up, and whether correcting one row repairs a wrong total.

Rows add up to the total, within 1 kcal
143 / 144

The other log recorded nothing, so it has no rows to open.

“2 scrambled eggs and a slice of whole wheat toast with a teaspoon of butter”
scrambled eggs182
whole wheat toast77
butter34
Total292 kcal
USDA key296 kcal
Logs outside ±20%, with rows, repaired by correcting one row
25 / 25

Knowing the answer. Checking only the biggest row, the way you would without one, repairs 24.

Fixed by correcting the biggest row24Fixed by correcting a smaller row1Needs more than one row0
Where the biggest error sat
A row with the wrong calories25
A row the key doesn’t have0
An item never logged, so no row to check0
All results

Every row, with its rows.

Each log shows what it was built from, so you can see why it landed where it did.

Typed message · rows from one tryUSDATriesMeanError of the meanAccuracy±20%
a medium banana Fruit
banana 94
10594 · 94 · 9494
−10.5%
89.5Inside
an apple Fruit
apple 104
95104 · 104 · 104104
+9.9%
90.1Inside
a cup of blueberries Fruit
blueberries 84
8484 · 84 · 8484
−0.5%
99.5Inside
an orange Fruit
orange 66
6266 · 66 · 6666
+7.1%
92.9Inside
a cup of steamed broccoli Vegetable
steamed broccoli 55
5555 · 55 · 5555
+0.7%
99.3Inside
a medium baked potato Vegetable
baked potato 145
161145 · 145 · 145145
−9.9%
90.1Inside
a cup of cooked spinach Vegetable
cooked spinach 41
4141 · 41 · 4141
−1.0%
99.0Inside
100 g of baby carrots Vegetable
baby carrots 35
3535 · 35 · 3535
0.0%
100.0Inside
2 cups of chopped romaine Vegetable
chopped romaine 32
1632 · 16 · 1621
+33.3%
66.7Outside
6 oz grilled chicken breast Protein
grilled chicken breast 257
281257 · 257 · 257257
−8.4%
91.6Inside
2 hard boiled eggs Protein
hard boiled eggs 155
155155 · 155 · 155155
0.0%
100.0Inside
a 4 oz salmon fillet Protein
salmon fillet 170
234170 · 170 · 170170
−27.2%
72.8Outside
a can of tuna in water Protein
tuna in water 120
142120 · 100 · 120113
−20.1%
79.9Outside
a cup of white rice Grain
white rice 199
205199 · 199 · 199199
−3.1%
96.9Inside
2 slices of whole wheat bread Grain
whole wheat bread 161
161161 · 161 · 161161
−0.2%
99.8Inside
a cup of oatmeal made with water Grain
oatmeal 150
166150 · 150 · 182161
−3.3%
90.3Inside
a cup of cooked spaghetti Grain
cooked spaghetti 182
196182 · 182 · 182182
−7.1%
92.9Inside
a glass of 2% milk Dairy
2% milk 123
122123 · 123 · 123123
+0.8%
99.2Inside
a 170 g tub of plain nonfat greek yogurt Dairy
plain nonfat greek yogurt 104
100104 · 104 · 104104
+3.7%
96.3Inside
an ounce of cheddar Dairy
cheddar cheese 116
114116 · 116 · 116116
+1.5%
98.5Inside
a tablespoon of olive oil Fat & oil
olive oil 120
119120 · 120 · 120120
+0.6%
99.4Inside
2 tablespoons of peanut butter Fat & oil
peanut butter 189
191189 · 189 · 189189
−1.3%
98.7Inside
a handful of almonds Fat & oil
almonds 186
164186 · 186 · 186186
+13.3%
86.7Inside
a can of coke Beverage
coke 140
155140 · 110 · 110120
−22.8%
77.2Outside
a 12 oz beer Beverage
beer 153
153153 · 150 · 150151
−1.4%
98.6Inside
a glass of orange juice Beverage
orange juice 110
112110 · 110 · 112111
−0.8%
98.9Inside
2 scrambled eggs and a slice of whole wheat toast with a teaspoon of butter Plate
scrambled eggs 182 + whole wheat toast 77 + butter 34
296292 · 292 · 292292
−1.5%
98.5Inside
150 g grilled chicken breast, a cup of white rice and a cup of broccoli Plate
grilled chicken breast 227 + white rice 199 + broccoli 55
508481 · 449 · 449460
−9.4%
90.6Inside
a slice of whole wheat toast with a tablespoon of peanut butter Plate
whole wheat toast 77 + peanut butter 95
176172 · 172 · 172172
−2.4%
97.6Inside
170 g nonfat greek yogurt with a cup of blueberries and a tablespoon of honey Plate
nonfat greek yogurt 104 + blueberries 84 + honey 64
249252 · 252 · 252252
+1.4%
98.6Inside
6 oz salmon, a medium baked potato and a cup of broccoli Plate
salmon 304 + baked potato 145 + broccoli 55
566505 · 505 · 505505
−10.8%
89.2Inside
chicken salad: 4 oz grilled chicken breast, 2 cups of chopped romaine and a tablespoon of olive oil Plate
grilled chicken breast 171 + chopped romaine 16 + olive oil 120
322307 · 323 · 307312
−3.1%
96.8Inside
a cup of oatmeal with a tablespoon of peanut butter and a medium banana Plate
oatmeal 150 + peanut butter 94 + banana 94
367338 · 488 · 338388
+5.8%
83.8Inside
a can of tuna in water on 2 slices of whole wheat toast Plate
tuna in water 120 + whole wheat toast 153
303273 · 253 · 281269
−11.3%
88.7Inside
a cup of cooked spaghetti with a tablespoon of olive oil and an ounce of cheddar Plate
cooked spaghetti 182 + olive oil 124 + cheddar cheese 116
430421 · 421 · 421421
−2.0%
98.0Inside
2 hard boiled eggs, an apple and a glass of 2% milk Plate
hard boiled eggs 155 + apple 77 + 2% milk 130
372362 · 399 · 354372
0.0%
95.1Inside
a slice of cheese pizza Dish
cheese pizza 285
229285 · 285 · 285285
+24.6%
75.4Outside
a beef and bean burrito Dish
beef and bean burrito 332
482332 · 332 · 332332
−31.1%
68.9Outside
a medium bananna Misspelled
banana 94
10594 · 94 · 9494
−10.5%
89.5Inside
a cup of steamed brocoli Misspelled
steamed broccoli 55
5555 · 55 · 5555
+0.7%
99.3Inside
a bowl of oatmeal with some peanut butter Vague amount
oatmeal 129 + peanut butter 190
358319 · 223 · 319287
−19.7%
80.3Inside
some rice Vague amount
rice 228
182228 · 228 · 228228
+25.3%
74.7Outside
a glass of milk Vague amount
milk 149
122149 · 149 · 149149
+22.1%
77.9Outside
some whole wheat toast Vague amount
whole wheat toast 87
12687 · 77 · 8784
−33.6%
66.4Outside
some almonds Vague amount
almonds 186
174186 · 186 · 186186
+7.1%
92.9Inside
a handful of almonds Vague amount
almonds 186
210186 · 186 · 186186
−11.5%
88.5Inside
some spaghetti Vague amount
spaghetti 182
221182 · 182 · 380248
+12.1%
64.3Inside
some blueberries Vague amount
blueberries 84
80none · 84 · 8484
+5.3%
63.2Inside

Showing 48 of 48 meals. Tries are three separate sends of the same message. Accuracy is the mean of the three.

Method

What this can and can’t say.

How it runs
  • Each message goes through the Log screen’s production request and the production food lookup, the same path a member’s meal takes.
  • The key is USDA FoodData Central, built per component from named records and portions.
  • Vague amounts (“some rice”) are keyed to the FDA reference amount customarily consumed, and pass on a ×1.5 band. 20 of 24 land inside it.
  • Thresholds (±20%, ×1.5) were fixed before any run. No shared food cache is read or written.
What it doesn’t show
  • Photos. This is typed text only. Photo logging is measured on weighed meals, separately.
  • Your meals. Every message was written by us; none come from a member’s log.
  • Restaurant dishes outside the key. The lookup queries USDA, so whole foods partly test the lookup itself.