TwentyGrams

Where our numbers come from

We think you should be able to check our work. Every number in TwentyGrams traces back to a named source — here’s exactly what that means.

Two kinds of foods, two kinds of verification

Whole foods (a chicken breast, an egg, an avocado) are lab-analyzed — the USDA’s FoodData Central runs actual chemical analysis on real food samples through two datasets: FNDDS (Food and Nutrient Database for Dietary Studies) and SR Legacy (the long-standing Standard Reference database). Branded packaged foods are label-verified against Open Food Facts, a public, non-profit food database — cross-checked against the manufacturer’s own printed nutrition panel where possible.

Neither path involves someone typing in a remembered number from memory or a guess.

As of today, that’s 245,675 verified food rows — each one traceable to its source dataset, not a crowd-submitted estimate.

The provenance line

Tap any food in your log and you’ll see exactly where its numbers came from — which dataset, which method. It’s the smallest line of text in the app, and it took longer to build than almost anything else, because it’s the one thing that can’t be faked.

The AI reads. The database computes.

When you type or say what you ate, our AI extracts what you said — it does not generate a nutrition number. Every number you see is computed from the sourced database, never invented, never estimated by a language model. This is an architecture rule, not a policy we could quietly change later.

Why bulk data instead of a live API

We ingest USDA’s bulk data files directly and re-seed them on a version schedule, rather than calling a live food API per search. It’s slower to set up and took real engineering time — but it means the whole database lives on your phone, works offline, and isn’t dependent on a third party’s uptime or their own data drift.

An honest example

We compared Fage Total 0% plain Greek yogurt — a common, widely-stocked product — across its own manufacturer label and one independent nutrition database. The manufacturer’s label states 3.0g carbs per 100g. An independent database lists 4.1g for the same product. That’s a real, ~37% difference for one specific yogurt — not a hypothetical. On a 20g/day carb budget, small gaps like this compound over weeks if your tracker doesn’t tell you where its numbers came from.

Check us

If a number ever looks wrong, tap it. See the source. If you still think it’s wrong, tell us — we’d rather fix a bad entry than defend one.

Reach us at [email protected].