← All posts

A Kitchen-Scale Study Says AI Food Photos Miss by 300 Calories. We've Never Run That Test on Our Own.

NIDDK researchers weighed 102 meals to the gram, photographed them, and ran the photos through four popular AI apps, finding calorie counts off by 250 to 345 per meal. Bite does the same kind of photo estimate every day, and we have never measured our own error against a scale.

A smartphone displaying a photo of a plate of food with a small calorie-estimate bubble hovering above it, beside a simple kitchen scale icon and a tiny floating question mark, warm cream background

Researchers at the National Institute of Diabetes and Digestive and Kidney Diseases ran a test this year that I keep coming back to. They prepared 102 meals in a metabolic kitchen, weighed every ingredient to the nearest tenth of a gram, photographed each plate, and fed the photos into four popular AI diet-tracking apps. The apps’ calorie totals came back 250 to 345 calories too low per meal on average, and fat was undercounted by roughly 30 grams. Carbohydrate estimates held up best. High-fat dishes, ketogenic plates especially, were where the apps struggled most, guessing low on the oil and butter that don’t show up cleanly in a photo. Two of the four apps, MyFitnessPal and Lose It!, did noticeably better on bigger meals than on smaller ones, which is its own kind of interesting: the error isn’t random, it has a shape.

A University of Virginia nutrition researcher and registered dietitian, Sibylle Kranz, ran her own informal version of the same test this month, signing up for trials of several popular AI apps and logging real meals against them. Her findings lined up with the metabolic-kitchen numbers. “I could give you dozens of examples where I took a photo of something I ate, and then I had to correct it because it misinterpreted what’s there,” she said. Some of the apps lean on crowdsourced food databases built from other users’ entries, which means the ground truth itself keeps drifting as more people type things in. Her summary was blunt: these apps are a good assistant and a poor authority.

I read both of those pieces the way I read most nutrition-and-AI stories for this newsletter now: as a test I should be running on us, not just reading about. Photo-based food logging is one of Bite’s core features. Someone points a phone at a plate, we send the photo to a model, the model comes back with calories, protein, carbs, fat, and a guess at what’s actually on the plate. It is, structurally, the exact same task NIDDK put under a kitchen scale. And I went looking for the number that tells me how close our guesses land, the Bite equivalent of “off by 250 to 345 calories,” and it doesn’t exist. Nobody here has ever weighed a set of real meals, photographed them, and checked our output against the scale. We have shipped this feature to real people for a long time without ever measuring, in a controlled way, how wrong it typically is.

What we do have is smaller than a study but not nothing. Every estimate the model returns carries a confidence label, high, medium, or low, so at least the app is telling you when it’s less sure, rather than presenting every guess with the same flat authority. And there’s a specific decision buried in the code that I think is honest in the right way: the model tends to hedge its own numbers, “about 180 grams,” “around 2 cups,” and at some point we made the call to strip those hedge words out before showing the amount to you. The reasoning, from the commit that did it, is that every number we show is already an estimate, so a word like “about” in front of it isn’t adding information, it’s adding a false sense that the unhedged version would have been more certain. That’s a good instinct. It is not the same thing as knowing our real error margin, and I don’t want to write a sentence that makes it sound like it is.

So here’s the honest state of things. NIDDK ran a controlled test and got a number. Kranz ran an informal test and got a number in the same range. We run this exact kind of estimate for real people every day, we’ve built some humility into how we present it, and we still don’t have a number of our own. That’s the gap this issue is really about, and it’s the kind of gap that’s easy to leave alone precisely because nothing forces you to close it, the same shape of problem I keep finding whenever I check our paperwork or our product against a story like this one. The fix isn’t complicated: buy a scale, log a week of real meals against it, photograph them the way NIDDK did, and see where our numbers land relative to 250 to 345 calories off. I don’t have that number yet. I’m telling you that instead of pretending otherwise.

BITE of the Week

A smartphone showing a rounded pricing card with a vertical timeline of three step dots and connecting lines fitting neatly inside the card's rounded border, a small ruler icon measuring the card's height beside it, warm cream background

One fix landed since the last issue, and it’s a small one worth explaining because the bug itself is a nice example of a layout assumption that only breaks on certain screens. The BITE Unlimited paywall shows a step-by-step timeline of what happens during your trial, inside a rounded card above the price summary. The steps container was styled with flex: 1, meaning it had a basis of zero and only grew to fill whatever slack space was left over on the page after everything else was laid out. On a Pixel, there’s enough slack that this never mattered. On an iPhone, which has roughly 150 points less slack to begin with (notch, home bar, smaller safe area), the leftover space was sometimes smaller than the steps actually needed, and the copy painted straight past the card’s rounded bottom edge onto the price summary below it. Because overflowing paint doesn’t grow the page itself, none of the fallbacks meant to catch a too-tall card, a denser layout tier, a scroll affordance, ever fired; the page had no idea anything was wrong. The fix swaps flex: 1 for flexGrow: 1 with flexShrink: 0, which makes the steps’ own content the card’s minimum height instead of an afterthought, so slack can only ever add space, never take it away. It’s the kind of bug that’s invisible until you’re testing on the one device where the numbers actually don’t add up, which is its own small argument for testing on more than one device.

Three Quick Bites

Three small vignettes: a slim medical injector pen beside a tiny vitamin capsule and a water droplet, a plate divided between plant-shaped and animal-shaped protein icons beside a small hourglass, and a simple screenless wrist-worn fitness band silhouette with a faint pulse line, warm cream background

  1. A study of 2,031 patients aged 10 to 17, published in Childhood Obesity on September 17th and covered by ScienceDaily on September 23rd, found nearly 1 in 6 children starting GLP-1 therapy developed a diagnosed nutritional deficiency within a year, most commonly vitamin D at 12.4 percent. Only 23 percent of these kids had a nutrition counseling visit within 180 days of starting the medication, and the average time to that first visit was 149 days, well after most of the deficiencies would already be underway. ScienceDaily

  2. A small study of 26 adults aged 72 to 80, covered by mindbodygreen this month, found protein intake fell below the recommended daily allowance in 83 percent of vegans, 40 percent of vegetarians, and 25 percent of omnivores. A quarter of the omnivores missing the RDA is the detail that stands out to me: this isn’t only a plant-based-diet problem, it’s an older-adults-don’t-eat-enough-protein problem that shows up in every group, just at different rates. mindbodygreen

  3. Bloomberg reported on September 22nd that Apple is developing a screenless, wrist-worn fitness tracker aimed squarely at Whoop, following the September 9th launch of Apple Watch Series 12 and Ultra 4 with a redesigned Health app that adds a 0-10 Readiness score and a Health Age metric, features Whoop and Oura built entire businesses around. When the platform that ships on thirty percent of the world’s phones starts copying your product’s core metric, that’s not really competition anymore, it’s a countdown. 9to5Mac

Tool of the Week: USDA FoodData Central

A simple open ledger or database icon with a few small food icons, an apple, a wheat stalk, a fish, flowing into neatly organized rows, a small magnifying glass hovering nearby, warm cream background

Since this issue is about AI food-photo estimates drifting against crowdsourced databases that shift as more people type into them, this week’s pick is the free tool that’s the opposite of crowdsourced: USDA FoodData Central. It’s the federal government’s own lab-measured nutrient database, the same kind of ground truth NIDDK weighed its 102 meals against, free to query by anyone building or fact-checking a nutrition product. It won’t tell you what’s on your plate from a photo. It will tell you, once you know what’s on your plate, exactly what’s actually in it. USDA FoodData Central

Thanks for reading. If you want a coach that tells you when it isn’t sure, Mr BITE is free on iOS and Android.

Michael, building Mr BITE

← Back to all posts