Eat Vitamins

Methods

Where the numbers come from

The library is four layers, each free to override the one before it. FNDDS, USDA's foods-as-consumed survey, is the backbone: names, categories, ingredients, portions, most tracked nutrients. SR Legacy supplies the staples — smaller, hand-checked, a fuller panel, and the pool a solved example draws from. A derived layer fills in what FNDDS omits — manganese, pantothenic acid, the sugar breakdown, traits like oxalate and phytate — computed from a dish's own ingredients. An overlay layer is everything curated by hand: allergen tags, diet attributes, reference intakes, ceilings, each row dated and sourced. The build refuses to emit when something looks wrong: an implausible ceiling, a serving outside 5 to 700 g, an overlay row matching nothing, a nutrient whose coverage dropped sharply since the last build. Units and names are checked at the point of reading — the name check exists because a unit cannot see a swap inside itself: nutrients 1210 to 1215 are amino acids in grams, and for one build "fructose" was isoleucine; the same check found SR Legacy's lutein and lycopene ids reversed.

Measured, estimated, or absent

Every value is one of three things, and the app says which. Measured means a laboratory measured that nutrient in that food, most of what USDA carries. Estimated — a tilde — means borrowed from the food's group because nobody measured it directly: all of the app's iodine is estimated, since USDA measures iodine in nothing. Absent renders as "no data," never as zero. The licensed databases behind most competing panels impute these gaps as routine and present the result unmarked; imputing is legitimate, presenting it as measurement is not. Thirty-six nutrients are tracked and twenty-nine are scored against a reference intake. The rest are reported without one — sodium as a ceiling only; beta-carotene, lutein and zeaxanthin, lycopene, gamma-tocopherol and K2 for want of a DRI; chromium because no dependable food-composition data exists anywhere, since the assays behind its old adequate intake were contaminated by the steel used to process the samples.

Reference intakes

Seven profiles carry their own targets and limits: the FDA Daily Value, female and male adults 19 to 50 and 51 and over, pregnancy, and lactation — each editable as a spreadsheet cell rather than a deploy. Protein has its own toggle: the default is the RDA, 0.8 g per kg — a floor rather than an optimum; on request it switches to the 2025 to 2030 Dietary Guidelines' goal of 1.2 to 1.6 g per kg, near what the indicator amino acid oxidation method finds a safe intake to be. Upper limits are enforced against the chemical form they were written for, not the total: vitamin A's is about preformed retinol, so carrots never trip it and liver does; folate's is about folic acid, so lentils never trip it and fortified cereal can.

Diets as filters

A restriction diet is a filter over the same library, not a second product. Most attributes — nightshade, goitrogen, grain, legume, seed, most allergens — are tagged per ingredient by a script reading USDA's own words where they name the thing plainly; the rest were set by hand with a source, where USDA's words do not name the thing. A dish inherits the union of its ingredients' tags, so correcting one reaches every dish built from it. Histamine is tagged by mechanism, not a blanket yes or no — fermented, cured, scombroid, a short list of foods that carry it as grown, foods that climb with ripeness, and SIGHI's liberators and DAO blockers, the weakest evidence here. FODMAP ships as a six-item model, coarse by design pending a licensed Monash dataset: lactose and excess fructose are measured and checked per serving against Varney et al. 2017's cutoffs, while fructans, GOS, sorbitol and mannitol are categorical tags at a meaningful share of a dish. Purines come from Kaneko et al. 2014, mapped to USDA name families by hand. Whichever path supplied a tag, the app says which ingredient carried it.

Ceilings and per-sitting limits

Any reported quantity can carry a ceiling the reader sets from its row, and a ceiling below the target lowers the target, so someone keeping potassium under 2,000 mg isn't also told they missed 4,700. Presets are named by the constraint, never the condition — "low potassium," not "renal." Only oxalate carries a default, because a builder has to do something. A second control is a per-sitting limit: lactose and excess fructose get Monash's cutoffs once low-FODMAP is on; anything else is a limit the reader types in for one meal rather than a whole day.

Two rules the code enforces

No double counting: reference intakes already assume ordinary absorption, so discounting intake against them would count the same loss twice. The panel compares intake to target only; absorption appears as separate findings naming the meal, the mechanism and the fix — the B12 per-meal ceiling, plant iron without vitamin C, calcium bound by oxalate, fat-soluble vitamins without fat in the meal, the phytate-to-zinc ratio, ALA that never becomes EPA or DHA. And limits apply to the form they were written for: no generated day may cross an upper limit that applies to food, and limits written for fortified or supplemental forms are never enforced against it.

What is weak

A dish is flagged when under half its weight is accounted for by ingredients carrying a measured value, so a reading built mostly from unmeasured filler is marked rather than presented as solid. The FODMAP model stays coarse until a licensed Monash dataset can replace the categorical tags with real amounts. Oxalate and phytate both come from a limited set of published tables rather than a comprehensive USDA source, so coverage thins for less common foods. And the tool only ever reasons about one day — a week of planned days would read like a food diary with better manners.

Not medical advice

Talk to your clinician before changing how you eat, especially in pregnancy or on medication.