The benchmark
How accurate is this?
The only fair question to ask an AI calorie tracker — so we are answering it in public, meal by meal, against the app most people already use.
What this is
A public accuracy benchmark. We keep a fixed set of test meals — everyday foods, packaged products, chain restaurant items, international dishes, vague portions, even typos — each with reference nutrition hand-entered from a cited source: USDA FoodData Central, the manufacturer's label, or the chain's official nutrition page.
Every published run parses those exact inputs through the same pipeline the app uses, and every result lands on this page — the meal, the reference numbers, what TypeCal estimated, and how far off it was. No cherry-picking: misses go up alongside the wins, because the misses are the roadmap.
| Meal | Reference | TypeCal | Result |
|---|---|---|---|
| First run is being verified now | — | — | — |
Benchmark in progress
How we score
The scoring is deterministic — a formula, not a judge. A meal passes only if all four numbers — calories, protein, carbs, and fat — land within tolerance of the cited reference. The default tolerance is ±15%. International and composite dishes get ±25–30%, because there is no single correct biryani. No AI grades any result, including ours.
Reference values are re-verified against current official sources — nutrition data goes stale, and chains reformulate. When a reference changes, we update it and say so, even when the old number flattered us.
Every run also publishes its raw data: reference values with citations, tolerances, TypeCal's estimates, per-macro deltas, and pass/fail flags for every meal. If you disagree with a number on this page, you can check it yourself.
Head-to-head: TypeCal vs a leading AI food journal
A leading AI food journal publishes its own public accuracy benchmark. We took every food on it, logged each one in TypeCal, and scored our estimate against their own reference values — an apples-to-apples rematch on their turf.
The same 68 foods they test — everyday items, chain restaurant meals, international dishes, precise portions, even deliberate typos — each with a reference value hand-entered from USDA or an official source. We ran every input through the exact pipeline the app uses and scored it against their published reference, with their own per-category tolerance. Misses go up next to the wins. Across all 68 foods, TypeCal's mean absolute error against the reference was 7% to theirs at 11%, and TypeCal landed within tolerance on 61 meals to their 57. A few of their branded references are out of date (Big Mac, Subway, In-N-Out) — we used their numbers as published anyway.
Simple 7/10 passed
Single-ingredient foods with exact USDA reference values.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| 1 medium banana | 105 | 105 | 105 | Pass |
| 2 large eggs | 156 | 155 | 144 | Pass |
| 1 cup cooked white rice | 205 | 205 | 205 | Pass |
| 1 medium avocado | 322 | 240 | 240 | Miss (25% off) |
| 6 oz grilled chicken breast | 281 | 235 | 280 | Pass · closer |
| 1 cup whole milk | 149 | 150 | 149 | Pass · closer |
| 1 medium baked sweet potato | 103 | 100 | 130 | Miss (26% off) |
| 1 cup plain Greek yogurt | 179 | 100 | 150 | Miss (16% off) |
| 1 tablespoon olive oil | 119 | 119 | 119 | Pass |
| 100g raw salmon fillet | 208 | 208 | 208 | Pass |
Homemade 10/10 passed
Multi-ingredient home cooking. References are USDA composites; wider ±30% tolerance.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| grilled cheese sandwich | 400 | 350 | 380 | Pass · closer |
| scrambled eggs with toast and bacon | 450 | 350 | 480 | Pass · closer |
| spaghetti with meat sauce | 437 | 500 | 350 | Pass |
| chicken stir fry with rice | 485 | 608 | 520 | Pass · closer |
| turkey and cheese sandwich | 360 | 400 | 380 | Pass · closer |
| bowl of oatmeal with banana and honey | 335 | 319 | 310 | Pass |
| caesar salad with grilled chicken | 450 | 590 | 450 | Pass · closer |
| peanut butter and jelly sandwich | 400 | 376 | 380 | Pass · closer |
| tuna salad sandwich | 385 | 530 | 380 | Pass · closer |
| pancakes with butter and maple syrup | 530 | 520 | 455 | Pass |
Restaurant 10/10 passed
Chain items scored against officially published nutrition.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| McDonald's Big Mac | 590 | 563 | 580 | Pass · closer |
| Chick-fil-A original chicken sandwich | 440 | 440 | 440 | Pass |
| Chipotle chicken burrito bowl | 660 | 650 | 705 | Pass |
| Starbucks grande caramel frappuccino | 380 | 410 | 380 | Pass · closer |
| Subway 6 inch turkey breast sub | 260 | 280 | 280 | Pass |
| Taco Bell crunchy taco | 170 | 170 | 170 | Pass |
| Wendy's Dave's Single | 590 | 590 | 590 | Pass |
| large pepperoni pizza slice from Dominos | 300 | 280 | 280 | Pass |
| Panda Express orange chicken entree | 490 | 500 | 490 | Pass · closer |
| In-N-Out Double-Double | 670 | 670 | 670 | Pass |
International 13/15 passed
Non-US dishes; references cross-referenced against government nutrition databases. ±25%.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| chicken tikka masala with naan bread | 750 | 783 | 680 | Pass |
| beef pho | 450 | 220 | 450 | Pass · closer |
| okonomiyaki | 550 | 526 | 450 | Pass |
| tteokbokki | 330 | 328 | 350 | Pass |
| doro wat with injera | 650 | 800 | 620 | Pass · closer |
| 3 birria tacos | 900 | 960 | 690 | Pass |
| khao soi | 600 | 650 | 620 | Pass · closer |
| mapo tofu with rice | 560 | 495 | 805 | Miss (44% off) |
| lamb shawarma plate with hummus and rice | 850 | 880 | 780 | Pass |
| jollof rice with chicken | 550 | 600 | 480 | Pass |
| pork adobo with rice | 520 | 555 | 520 | Pass · closer |
| ceviche | 180 | 170 | 180 | Pass · closer |
| iskender kebab | 750 | 761 | 780 | Pass |
| khachapuri | 850 | 613 | 650 | Pass · closer |
| jerk chicken with rice and peas | 650 | 1000 | 885 | Miss (36% off) |
Typos 9/10 passed
Intentionally misspelled inputs — the reference is for the correctly-spelled food. ±25%.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| chiken parmasan | 570 | 290 | 550 | Pass · closer |
| mackdonal chiken nugits 10 piece | 420 | 410 | 410 | Pass |
| starbux vanila latte grande | 250 | 270 | 250 | Pass · closer |
| avacado tost with egg | 350 | 380 | 320 | Pass |
| ceasar salid with croutons | 360 | 280 | 350 | Pass · closer |
| choclate chip cooky | 220 | 170 | 150 | Miss (32% off) |
| fettachini alfrado | 490 | 500 | 550 | Pass |
| 2 slise peporoni piza | 596 | 596 | 580 | Pass |
| greak yogurt with hunny | 200 | 190 | 210 | Pass |
| turky club sandwich | 500 | 510 | 480 | Pass |
Portions 12/13 passed
Precisely weighed foods with specific measurements.
| Meal | Reference | Other app | TypeCal | Result |
|---|---|---|---|---|
| 200g chicken breast, grilled | 330 | 390 | 330 | Pass · closer |
| 50g rolled oats, dry | 190 | 190 | 189 | Pass |
| 150g cooked brown rice | 166 | 166 | 167 | Pass |
| 2.5 oz cheddar cheese | 286 | 286 | 285 | Pass |
| 250ml whole milk | 153 | 155 | 155 | Pass |
| 30g almonds | 174 | 174 | 175 | Pass |
| 1/2 cup peanut butter | 756 | 1520 | 750 | Pass · closer |
| 85g dark chocolate 70% | 510 | 515 | 500 | Pass |
| 300g Atlantic salmon fillet, baked | 549 | 600 | 618 | Pass |
| 120g cooked pasta | 188 | 169 | 157 | Miss (16% off) |
| 2 tbsp honey | 128 | 128 | 128 | Pass |
| 175g plain Greek yogurt | 103 | 105 | 103 | Pass · closer |
| 100g raw broccoli | 34 | 34 | 34 | Pass |
What's next
A MyFitnessPal column, logged by hand through its standard search flow so the comparison reflects what a real user gets — that tooling is built and capture is underway. And a larger test set: more international home cooking, more brands, more of the meals people actually eat.
Why we publish this
Every AI estimate in TypeCal is a draft you can inspect and edit before it counts — that honesty is the product. Publishing our accuracy, misses included, is the same idea at a larger scale.
It also keeps us honest with ourselves: if a category of food parses badly, this page shows it, and fixing it becomes the roadmap.
Want the first results?
Join the list and you will get the benchmark's first public numbers, plus first access when TypeCal launches.
One list for everything TypeCal. No spam.