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.
Minerals on recipe pages, and where they stop
Our recipe pages show five per-serving minerals alongside the macros — sodium, potassium, magnesium, calcium and iron. They come from the same place every other number does: the matched USDA record for each ingredient, scaled by that ingredient’s weight and divided by the serving count. Nothing is estimated, and no model ever supplies one.
These five are shown because their coverage is good enough to be worth showing. USDA reports them for essentially every whole-food record — the lab-analyzed ingredients most recipes are built from. We hold ourselves to roughly 98% coverage before a nutrient earns a slot on the page.
Plenty of nutrients don’t clear that bar, and we’d rather say so than pad the page. USDA’s coverage of vitamins is genuinely patchy: vitamin D is reported for about two-thirds of the Standard Reference records, choline for under two-thirds, and pantothenic acid (B5) is missing entirely from the FNDDS dataset — which happens to be the dataset our ingredient matcher trusts first. Packaged and crowd-sourced foods are sparser still. We store all of it, and we show the part we can stand behind. As coverage improves, fields get added.
Two consequences worth being plain about. First, if a single ingredient in a recipe has no magnesium reading, that recipe’s magnesium shows as a dash — not a partial total added up from the ingredients that did have one. A number built from four ingredients out of six is not an underestimate you can reason about; it’s a wrong number that looks like a right one. Second, we don’t show these against a daily target or a percentage. We don’t know your age, your body, or what your doctor told you, and turning a measurement into a verdict on whether you’ve had enough is not ours to do. We state the number.
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 hello@twentygrams.app.