AIProduct

How BiteCal's AI estimates calories from a single photo

A behind-the-scenes look at the computer vision pipeline that turns your plate into accurate macro counts in under three seconds.

Priya Raman
Principal AI Engineer
Updated April 14, 2026

Tracking calories has always been a battle between accuracy and friction. Databases like USDA give you precision but demand that you weigh every ingredient. Photo apps are fast but famously guess wrong on portions. We built BiteCal to collapse that tradeoff. Here's how.

The problem with manual logging

The average MyFitnessPal user logs 42% fewer meals after week three. The drop-off isn't about willpower — it's about friction. Typing “2 tbsp olive oil” five times a day costs you minutes, and minutes compound into abandonment.

We spent six months shadowing nutrition coaches in Bengaluru and Mumbai and watched the same pattern repeat: users either overestimated portions out of guilt or underestimated them out of laziness. The food log became fiction.

Our vision pipeline

BiteCal uses a three-stage pipeline. First, a detector splits your plate into discrete food regions. Second, a classifier identifies each region against a 18,000-item taxonomy biased toward South Asian cuisine. Third, a portion model uses plate geometry to estimate grams.

photo -> detector -> [roti, dal, sabzi]
       -> classifier -> [whole-wheat roti, moong dal tadka, bhindi masala]
       -> portioner -> { roti: 60g, dal: 180g, sabzi: 120g }
       -> macros    -> 412 kcal | 15g P | 58g C | 12g F

Why we built our own classifier

General-purpose food models trained on Western datasets get dal wrong 40% of the time. We collected 1.2M labeled photos of Indian meals to close that gap. The result: 94% top-1 accuracy on our benchmark, up from 67% for off-the-shelf models.

Portion size estimation

Portion estimation is the hardest part. A single roti can be 30g or 80g depending on the cook. We use two signals: the known diameter of standard Indian dinnerware (a thali is 26-28cm, a katori is 8-10cm) and depth cues from the phone's dual camera when available.

Accuracy and limitations

On our test set of 10,000 held-out meals, BiteCal is within ±12% of ground truth calories for 88% of meals. We publish these numbers because we think honesty beats marketing. The model still struggles with mixed curries, stuffed breads, and deeply layered biryanis where key ingredients are hidden.

  • Best-case accuracy: single-ingredient items (fruit, boiled eggs)
  • Typical accuracy: standard thali meals, bowls, sandwiches
  • Worst-case accuracy: mixed curries, stuffed parathas, biryanis

What's next

We're shipping a mid-meal correction flow next month — you'll be able to tap any item and override the portion in one gesture. Longer term, we're training a personalized model that learns your cooking style from your first 30 meals.

Written by Priya Raman
Principal AI Engineer

Keep reading

All posts →