Where the numbers come from: nutrition data methods
Every number in Calorko is an estimate with a known origin. This page explains where the calories and macros come from, how far you can trust them and what to do when they are off.
In short
- Home-cooked dishes come from a regional table I maintain myself, with a source, a confidence level and a date for every row.
- Packaged foods come from Open Food Facts, through the barcode or a photo of the nutrition label.
- A photo estimate always comes with a range and a confidence badge, and you can correct it.
The regional food table
For every dish and food, the table holds calories, protein, fat, carbs and, where known, fibre per 100 g (per 100 ml for drinks), plus the portion people in the Balkans actually serve: one ćevap is about 30 g, a slice of burek about 250 g, one sarma about 120 g. The same table powers the calorie pages on this site and the search in the app.
Each row carries three things:
- A source. Home-cooked dishes are calculated for a typical home recipe; where a food page says it is an estimate for a typical home recipe, that is our own estimate. For branded products the source is the manufacturer's label. For basic foods (fruit, vegetables, milk, eggs, meat) I use USDA FoodData Central, the public nutrient database of the US Department of Agriculture, and those rows link to the exact item there.
- Confidence: high, medium or low. High means one checked source for exactly that food; low means recipes vary a lot (a pie with or without kajmak, for example).
- The date it last changed, shown on the food page as "Updated".
For drinks, the energy from alcohol is counted at 7 kcal per gram of alcohol, using the factors in EU Regulation 1169/2011.
Packaged food: barcode and label
When you scan a barcode, the app first looks the product up in its own database and then in Open Food Facts, an open database of nutrition labels filled in by people around the world. Only the barcode number is sent, nothing about you. If the product is missing, you type the values from the pack or take a photo of the nutrition table and the app reads it.
Estimates from a photo
The photo is downscaled on the phone and sent to our server function. An AI model (Google Gemini, with OpenAI as a fallback) recognises the dish and its parts, estimates the grams and gets the matching rows from the regional table as a reference. The result holds calories and macros per item, a range from the lowest to the highest likely value, and a confidence level.
- Numbers are rounded: calories to 5, grams to whole grams. More digits than that would be fake precision.
- When the app isn't sure, it says so next to the result and asks you to check the portion.
- You change the portion with a slider and delete or fix items. Your correction always wins.
- Before launch I test accuracy on plates I photograph myself. The target is a median error under 20 % for a single dish and under 30 % for a mixed plate.
The photo is not kept unless you turn on "keep photos". Details are in the privacy policy.
What the numbers are not
Calorie estimates are not medical advice. The share of the day on food pages uses the 2,000 kcal reference intake for an adult (EU Regulation 1169/2011); your own needs may differ. For a plan below 1,200 kcal a day, talk to a doctor first.
Found a mistake?
Email me at [email protected] with the dish and what looks wrong. You will see the fix as a new "Updated" date on the food page.