Skip to content

Blog

Why calorie apps get Indian food wrong (and how to log it right)

We spent months building a nutrition database of 854 Indian dishes, and in the process broke, tested and audited the ways mainstream calorie apps handle Indian food. They fail in five specific, repeatable ways. Once you can see the failure modes, you can log around them in any app. Here they are, with the fixes.

1. Name matching treats your food as an approximation

Search “dosa” in a Western-first database and you will be offered a crepe. Search “eggs” and you might silently get egg whites, or “noodles, egg, enriched.” The matching engine grabs the closest string, not the closest food, and the macros can be wildly different. A plain dosa and a crepe differ in fat, fermentation and portion; egg whites and whole eggs differ in almost everything.

The fix: always open the matched item and read what the app actually picked. If your app never shows you the database row behind the number, it is asking for faith it has not earned.

2. Everything defaults to 100 grams, but you eat in pieces and katoris

The single most expensive bug we ever debugged: a three-egg omelette logged as 19,500 kcal. The model said “3 pieces,” the database stored values per 100 g, and a silent assumption turned each piece into a large multiple of itself. Less dramatic versions of this happen constantly: a roti is 36 g, not 100 g. A katori of dal is about 150 g, not 100 g. Any app that defaults your portion to a round 100 g is wrong for almost every Indian serving.

The fix: learn three weights and you are covered for most meals: one phulka is about 36 g, one katori is about 150 g of cooked dal or sabzi, one cup of cooked rice is about 150 to 200 g. Weigh once with a kitchen scale to calibrate your own katori, then estimate forever.

3. Dry-basis entries make cooked food look three times heavier

Databases often store poha, dal and rice as the dry ingredient. Raw poha is about 350 kcal per 100 g. Cooked poha, after water and tempering, lands near 110 to 130. If your app shows a small plate of poha at 500 kcal, you have hit a dry-basis entry. We found this pattern so often while importing published data that we excluded dry-basis rows from our own database by default.

The fix: look for the word “cooked” or “as served” in the entry name. If the calories per 100 g look like a biscuit rather than a moist cooked dish, it is probably a dry value.

4. Fried-food entries count the whole frying pot

Recipe-computed databases sometimes attribute the entire frying oil to the dish, as if you drank the kadhai. That is how a single poori shows up with the fat content of a dessert. When we imported a respected published dataset, we had to gate out about 160 deep-fried recipes whose fat values exceeded 40 g per 100 g for exactly this reason. Absorbed oil is real, but it is a fraction of the pot.

The fix: treat any fried-food entry showing more fat than carbs with suspicion. A reasonable rule for home-fried items is to add one to two teaspoons of absorbed oil per piece rather than trusting an inflated recipe row.

5. A thali is six dishes, not one blob

Point a mainstream photo scanner at a thali and you often get a single line: “Indian meal, 800 kcal.” That number is unfalsifiable and uneditable. You cannot fix the rice without fixing the dal, and the app learns nothing from your correction.

The fix: log the two or three biggest items on the plate separately and ignore the garnish. Rice plus bread plus the oily dish is usually 80 percent of the meal’s energy. Precision on the pickle is theater.

What we did about it

Nourished is our answer to all five. It matches dishes against an Indian database of 854 recipes with regional names (chitranna, pulihora and thayir saadam are all first-class citizens), stores cooked as-served values with real household serving weights, gates out dry-basis and whole-pot-oil rows, splits a thali photo into separate editable lines, and shows you the database row behind every number with a confidence flag. When it is unsure, it says so, and fixing anything is a tap and always free.

Type “2 roti, dal makhani, thoda ghee” and see what honest logging feels like. Early access is open at nourished.fit.


Method and sources. Dish nutrition computed from the Indian Nutrient Databank (Vijayakumar et al., 2024, CC BY 4.0), cooked as-served basis; Western and packaged foods reconciled against USDA FoodData Central. The failure modes above come from our own import audits and device testing, not from a survey of competitors, so test your own app against them.

Be there when it opens.

Nourished is in active development. Get early access, plus a say in what we build for your kitchen.

No spam, ever. One email when we launch. Unsubscribe anytime.