CaloryTalk benchmark

How accurately does the AI behind CaloryTalk estimate calories and macronutrients? Three runs of 50 queries, checked against the USDA FoodData Central SR Legacy database. Data and method are open.

At a glance. Energy: about 13–16 % weighted error, with a bias within ±4 %. Macronutrients are less accurate (roughly 15–37 % weighted error), and fat was the weakest nutrient in all three runs. This is an exploratory test under favourable conditions (exact grams, English); see limitations.

Methodology

Results

Values per nutrient over 50 queries. Errors are AI minus USDA, in kcal or grams. Field definitions are below.

1 food per query (50 queries)

MAEMAPE %Weighted error %BiasBias %Pearson r
Energy (kcal)63.3520.416-15.39-3.90.963
Protein (g)3.6231.125.10.030.20.9
Carbohydrates (g)5.8325.716.20.772.10.97
Fat (g)4.083218.3-2.53-11.30.983

Cases used for MAPE (of 50): kcal 49, protein 37, carbs 37, fat 35.

3 foods per query (50 queries)

MAEMAPE %Weighted error %BiasBias %Pearson r
Energy (kcal)142.3216.515.9-10.15-1.10.889
Protein (g)10.2231.419.4-3.21-6.10.884
Carbohydrates (g)34.3731.334.40.210.20.68
Fat (g)12.02123.836.55.1115.50.808

Cases used for MAPE (of 50): kcal 50, protein 50, carbs 48, fat 48.

5 foods per query (50 queries)

MAEMAPE %Weighted error %BiasBias %Pearson r
Energy (kcal)232.3813.313.4-26.66-1.50.866
Protein (g)14.2817.217.3-7.77-9.40.821
Carbohydrates (g)27.0616.614.5-10.02-5.40.935
Fat (g)20.236.926.61.62.10.83

Cases used for MAPE (of 50): kcal 50, protein 50, carbs 50, fat 50.

Calculated fields

MAE – mean absolute error
Average of |AI − USDA|, in kcal or grams: how far off the AI is on average.
MAPE % – mean absolute percentage error
Average of |AI − USDA| / USDA × 100, computed per query and then averaged. References below 10 kcal or 1 g are left out, because a tiny error on a tiny amount is a huge percentage (the number of cases used is shown under each table). It can still jump on small foods.
Weighted error %
Sum of |AI − USDA| divided by the sum of USDA, × 100. Large foods weigh more and small ones do not inflate it, so it is the most stable summary of the error.
Bias and bias %
Average of (AI − USDA), keeping the sign, in kcal or grams, and the same as a percentage (sum of the errors / sum of USDA × 100). Positive means the AI tends to overestimate, negative to underestimate. Near zero means errors cancel out instead of pointing the same way.
Pearson r
Correlation between USDA and AI values, from −1 to 1. It shows whether the AI goes up and down with the real value, even if it is always too high or too low (that is what bias measures). With few or very different foods it is easy to get a high r, so it is only a sanity check.

Data

CSV files, comma-separated, decimal point, UTF-8. In a Spanish-locale Excel use Data → From Text/CSV.

Raw data has one row per query: query, status (ok when the AI answered), foods_requested, foods_returned, text (what was sent), and for each nutrient (kcal, protein, carbs, fat) the columns _usda, _ai, _error (AI − USDA) and _error_pct.

Summary has one row per nutrient: queries, foods_per_query, nutrient, cases, mae, mape_pct, mape_cases, mape_excluded, weighted_error_pct, bias, bias_pct and pearson_r.

Limitations