Back home

How accurate is Kairo? We benchmarked it, and we're showing our work

Kairo estimates calories and macros from a photo of your meal. The honest question is: how close is that estimate? So we tested it. On 2026-06-16 we ran 16 internationally diverse meals through Kairo's full production analysis path and scored every result against public nutrition databases.

Result: 16 of 16 cases passed our accuracy gate, with ~96% weighted-macro accuracy across the set. On branded items with a real nutrition label, the mean per-100g calorie error was about 3.5% (median ~2.5%). On generic whole foods, error was higher: 10–12%.

This is a small internal benchmark, not a head-to-head against other apps. Here's exactly how we measured it, every number, and the sources, so you can check us.

Methodology

We run a curated set of 16 hard, realistic meals (international brands, tricky portions, and packaged goods spanning German, US, Japanese, and Italian cuisines: de-DE, en-US, ja-JP, it-IT) through the same production code path Kairo uses for a real photo scan. We don't grade a special test mode; we grade the app.

  • Deterministic weighted-macro scorer: a fixed formula compares estimated calories and macros to ground truth. No human, no LLM judgment in this score.
  • LLM user-experience judge: a separate check on whether the result reads as reasonable and useful.
  • Citation-presence guard: programmatically verifies that any cited source URL exists and supports the number. A fabricated source cannot pass. This closes the most common failure mode in AI accuracy testing: trusting cited sources at face value.

Pass gate: for an item with a hard nutrition label, the per-100g calorie estimate must be within ±20% of the label. For a composite plate with no single ground truth, it must fall within a realistic calorie band. The whole suite (evals/) is reproducible.

Ground-truth sources

Every number below is measured against a public, checkable source:

Results: full production path, 2026-06-16

16 / 16 passed · 0 errors · ~96% weighted-macro accuracy

Branded & packaged items (per-100g calorie error vs Open Food Facts)

ItemPer-100g error
Kinder Joy0.0%
Nutella0.2%
Skyr1.5%
Kölln Haferflocken (oats)3.4%
Pocari Sweat4.4%
Chobani11.7%
Mean~3.5%
Median~2.5%

Restaurant item (vs published US nutrition)

ItemPer-100g error
McDonald's cheeseburger4.2%

Generic whole foods (per-100g calorie error vs USDA FoodData Central)

ItemPer-100g error
Apple9.9%
Chicken breast10.1%
Banana12.4%

Reading the results: Kairo is most precise on packaged items with a real label, where retrieval can pin down an exact number, and less precise on generic whole foods, where portion size and natural variation are genuinely ambiguous (a single "banana" varies by more than 30% in the real world). For context, peer-reviewed research puts end-to-end AI photo calorie error around 15–25%. Kairo's whole-food results land at the strong end of that range, and its branded results sit well below it.

Re-run 2026-08-25: 23 cases, three consecutive runs, with raw data

21/23 · 23/23 · 22/23 inside the pass gate

The set has grown from 16 to 23 cases since June. We sent it through the full production path (model plus nutrition retrieval) three times in a row, because a language model is not deterministic: the same input does not return the same number every time. A single run therefore only tells half the story. All three runs are below, including the cases that failed.

Important context: every case is a written meal description ("Skyr Natur, 150 g cup"), not a photo. The set measures whether Kairo finds and computes the right nutrition values. It does not measure how good portion estimation from a photo is.

InputReferenceRun 1Run 2Run 3
Skyr Natur, 150 g Becher63 kcal/100gOpen Food Facts3.7%3.7%3.7%
Chobani plain nonfat Greek yogurt, 170 g cup59 kcal/100gOpen Food Facts10.3%10.3%10.3%
Kölln Haferflocken, 50 g Portion372 kcal/100gOpen Food Facts2.7%2.7%2.7%
ポカリスエット 350ml (Pocari Sweat, 350 ml)25 kcal/100gOpen Food Facts0.6%0.6%0.6%
Nutella, 15 g (un cucchiaino)539 kcal/100gOpen Food Facts0.2%0.2%0.2%
McDonald's Cheeseburger261 kcal/100gMcDonald's published nutrition1.7%1.5%1.5%
ein mittelgroßer Apfel52 kcal/100gUSDA FoodData Central0.0%0.0%0.0%
150 g grilled chicken breast165 kcal/100gUSDA FoodData Central18.0%18.0%18.0%
eine Banane89 kcal/100gUSDA FoodData Central0.3%0.3%0.3%
Teller Spaghetti Bolognese450–850 kcal (band)650 kcal585 kcal585 kcal
chicken Caesar salad350–750 kcal (band)882 kcal ✗647 kcal738 kcal
豚骨ラーメン (tonkotsu ramen bowl)450–1000 kcal (band)919 kcal845 kcal845 kcal
Kinder Joy (ein Ei, 20 g)550 kcal/100gOpen Food Facts0.0%0.0%0.9%
Erdbeeren mit Joghurt100–210 kcal (band)146 kcal146 kcal130 kcal
Skyr mit Himbeeren130–240 kcal (band)186 kcal186 kcal180 kcal
Chocolate Lava Cake with Ice Cream450–900 kcal (band)648 kcal762 kcal610 kcal
McDonald's Quarter Pounder256 kcal/100gMcDonald's Nederland0.8%4.8%0.8%
Proteinriegel 55 g, laut Packung 220 kcal, 20 g Eiweiß, 21 g Kohlenhydrate, 7 g Fett400 kcal/100gThe user's own label transcription0.0%0.0%0.0%
Sportness Protein Riegel368 kcal/100gOpen Food Facts2.2%2.2%2.2%
KoRo Veganes Proteinpulver Vanille, 30 g Portion345 kcal/100gKoRo Handels GmbH0.5%0.5%0.5%
100g spaghetti mit bolognese soße420–700 kcal (band)390 kcal ✗493 kcal377 kcal ✗
50 gramm high protein joghurt sauerkirsch + crisp75–160 kcal (band)103 kcal108 kcal101 kcal
high protein joghurt pfirsisch + crisp220–420 kcal (band)308 kcal299 kcal230 kcal

Percentages = calorie error per 100 g against the label or database (gate ±20%). kcal values = total calories of a composite plate with no single reference; they must fall inside the stated band. ✗ = failed.

Where Kairo missed

Two cases failed in at least one run. "100g spaghetti mit bolognese soße" landed below the band in two of three runs (377 and 390 kcal instead of at least 420). The most likely explanation: Kairo partly read the 100 g as cooked rather than dry pasta. The chicken Caesar salad came out above the band once (882 kcal, band up to 750) because the amount of dressing is estimated freely; in the other two runs it was inside the band at 647 and 738 kcal. For grilled chicken breast the error was 18% in all three runs, just inside the gate.

Download the raw data

All 69 individual results (23 cases × 3 runs) with input, reference value, Kairo's output, error and the source of the reference. Licence: CC BY 4.0. Use them, check them, cite them.

Our internal photo test sets are not included. They consist of real meals from users and are therefore not published.

What this does and doesn't prove

What it shows: a transparent, reproducible accuracy measurement on a defined, internationally diverse 16-case set, scored deterministically against named public databases (USDA FoodData Central, Open Food Facts, published restaurant nutrition), with a programmatic guard against fabricated citations.

What it does NOT show: that Kairo is "the most accurate app." This is a small (16-case) internal benchmark, not a head-to-head against Cal AI, MyFitnessPal, Cronometer, or any other app, and not a clinical study. We did not test other apps on this set and make no comparative claim. A larger or differently-composed set would shift the averages. Whole-food estimates carry real uncertainty from portion and natural variation.

Who built this

Kairo is built by Valentin Weinert, a software engineer (not a dietitian) who built Kairo's reproducible evaluation pipeline. The reason this page exists: an accuracy claim you can't check isn't worth much. If you run an independent benchmark, we'll share the methodology and ground-truth sources so you can verify the numbers yourself.

Company: Centaurio UG (haftungsbeschränkt), Germany. Hosting: EU/GDPR.

Scan your meal. See the numbers.

Get Kairo on the App Store