Steel-cut oats, plain
for lower cholesterol
Beta-glucans, zero added sugar.
Soluble fiber binds bile acids in the gut. Krause 16e, ch. 33.
Learn → How we score
Three lenses, stacked. Your goals first — then how processed the food is, then what's actually on the label. Every rule cites a chapter.
The framework
Same bag of chips, two readers, different verdicts. The lenses run in this order, every time.
You pick from 14 goals at onboarding. Behavior goals (eat less junk, watch added sugar, avoid seed oils), outcome goals (lower cholesterol, manage blood sugar, lose weight slowly), and context goals (feed kids well, pregnancy, longevity). Multi-select, soft cap of 4.
When you scan a product, the engine produces one analysis per active goal, so a parent watching their own cholesterol while shopping for their kid sees both concerns side by side. The overall verdict is the strictest among them. If one goal flags the product, the day isn't streak-safe.
We use NOVA classification(Monteiro et al., 2009; adopted by Brazil's national dietary guidelines, the Pan-American Health Organization, and France's 2017 nutrition policy). NOVA splits food into four groups by how processed it is:
Group 1 and 2 are the floor of any reasonable diet. Group 3 is fine. Group 4 is the category where Hall 2019 (NIH metabolic ward RCT) found people overate by 500 calories per day versus unprocessed controls.
Once we know the NOVA group, we read every line of the ingredient list. We cross-reference against a 12,000-additive database reconciled from Ruth Winter's Consumer's Dictionary of Food Additives, FDA GRAS filings, EFSA Acceptable Daily Intake records, and the chapter-by-chapter mechanism-of-concern coverage in van Tulleken, Lustig, Moss, and Taubes.
Each ingredient gets one of three dispositions: whole food / culinary (honey, salt, olive oil), ultra-processed marker(BHT, polysorbate 80, modified starches, “natural flavor”), or analysis (fortification, processing aids, contested additives).
The evidence base
The framework is established science. Our judgment calls trace back to the sources below. Everything we cite sits in this list.
Investigative and clinical writers across the modern nutrition debate: van Tulleken, Lustig, Moss (×2), Taubes, Schatzker, Nestle (×2), Means, Spector, Pollan (×2), Willett, Tribole and Resch, Kessler, and Winter.
Full bibliography →The walkthrough
Every step the app takes when you scan a product. Steps 1–3 are universal. Steps 4–6 run once per active goal.
Identify the product
The barcode lookup hits Open Food Facts (and USDA for whole foods). We pull the canonical name, brand, ingredient list, nutrition facts, and category. If the product isn't in either database, we say so. We don't guess.
Place it in a NOVA group
Single-ingredient items map to Group 1 or 2 directly. Multi- ingredient items get tagged Group 3 or Group 4 based on the presence of ultra-processed markers in the ingredient list. A single Group-4 marker drops the product to Group 4.
Scan the ingredient list
Every ingredient is matched against our 12,000-entry additive corpus. We flag concerns by mechanism (gut barrier, glycation, endocrine, neurodevelopmental), source disagreement, and regulatory status across US and EU. Constraints (allergies, vegan, kosher) are checked here as hard rules.
Apply each of your goals
For every goal you picked, we run that goal's rules from the verdict spec. Hard rules first (e.g. watch added sugar: above 25g per serving = streak-breaker). Then soft rules (5–25g = fine sometimes). Then bonuses (whole-fruit sweetness, fiber, intact whole grains).
Write a per-goal explanation
A language model with the same evidence base loaded as context writes a one-sentence headline and a short explanation for each goal. The rules already decided the verdict; the model only writes the user-facing copy. This keeps every reason traceable to a book chapter.
Render the verdicts
You see a card per goal, sorted by severity. The overall verdict is the strictest among them. If one goal flags the product, the streak isn't saved, and you see which goal raised the flag and why.
The verdicts
What each verdict looks like in the app — same product, different goal would land differently.
Steel-cut oats, plain
for lower cholesterol
Beta-glucans, zero added sugar.
Soluble fiber binds bile acids in the gut. Krause 16e, ch. 33.
Whole-grain crackers
for feeding kids well
Real grain, but sodium is high.
280mg per serving — under the kid threshold, above the comfort line.
Strawberry yogurt cup
for watching added sugar
Sugar in the top three ingredients.
22g added sugar — past the 5g serving threshold for this goal.
The verdict rates the product against your goals. It does not rate you. The same Streak-Breaker bag of chips on a Tuesday in week 47 of consistent eating lands differently from the same bag on day three. The streak is what matters. Any single scan is noise.
What we don't know
Three places the score is still imperfect.
Spector's PREDICT study (King's College London, ZOE, Stanford, Mass General) found that under 1 percent of people sit at the average glucose, insulin, and triglyceride response to identical foods. Until you connect a CGM or a microbiome panel, we score against the population average. We'll say so when we're scoring you against you.
For carrageenan, MSG, modified starches, citric acid, and ascorbic acid, the case against them is suggestive but not closed. We tag these as “analysis” rather than pretending to a verdict. The glossary entry shows what each source says.
FDA rules let a single sugar split across 4 names so it doesn't dominate the top of the list. “Natural flavor” covers up to 100 individual chemicals. “Spices” can hide MSG-equivalent glutamate releasers. We catch the common tricks and flag them in the breakdown. Beyond that, we're bound by the label you can see.
Updates
When we change how scoring works, we log it here with a date and a reason. We don't silently re-rate your saved products. Major version changes appear in your app feed.
May 18, 2026
Verdict engine v0.2
Replaced single-goal verdicts with multi-select goals (14 total), per-goal analysis, and a strictest-wins overall verdict. Each goal's rules cite a specific book chapter; the eval harness blocks ungrounded additions.
May 17, 2026
Surface simplification
Retired the internal 1–5 concern scale in public surfaces. Replaced it with the three-bucket NOVA disposition (food / ultra-processed marker / analysis). The 1–5 data stays in the database for internal use.
May 16, 2026
Honey re-rate
Re-rated honey from L4 to L3 (contested) after surfacing the Winter / Lustig source disagreement.
GoodEnough is in private beta. Join the waitlist to be one of the first to score your kitchen against your goals.
Spot a factual error on this page, or a verdict you think is wrong? Email support@getgoodenough.com. Every correction lands in the changelog above.