How MyFoodFit Scores Your Food: Our Methodology
People ask us a fair question: how does the score work?
Not "what is the score" for a given product. That part is easy. You scan it, you get a number from 0 to 100. The question behind the question is whether our scoring reflects anything real, or whether we have just assigned arbitrary numbers to make an app that looks scientific.
This page explains exactly how we calculate every score. We publish this because transparency is not optional when you are advising people with diabetes, coeliac disease, pregnancy, IBS, and 37 other health conditions on what to eat. If we cannot explain how the score works, we have no business generating one.
Why personalisation matters
Most food scoring systems apply a single algorithm to every product for every person. Nutri-Score gives a baguette a C rating whether you are a pregnant woman, a bodybuilder, or someone managing kidney disease. Yuka generates the same score regardless of your allergies, conditions, or goals.
This is not a criticism of those systems. They were designed for population-level labelling, not individual guidance. But if you are managing a specific health condition, population averages are not just unhelpful. They can be actively misleading.
A tin of baked beans is a perfectly reasonable food for most people. High in fibre, decent protein, low in fat. But for someone with IBS on a low-FODMAP protocol, those same beans contain galacto-oligosaccharides that will almost certainly trigger symptoms. For someone with kidney disease managing potassium intake, the potassium content is a genuine concern.
A single universal score cannot capture this. So we do not use one.
What the score means
Every product receives a score from 0 to 100. That score maps to one of four bands:
Green (70-100): This product works well for your profile. The nutrition is solid and it aligns with your dietary needs.
Upper amber (50-69): Broadly fine, but with something worth noting. Elevated sugar, moderate processing, or a nutritional compromise of some kind. Not a serious concern, but not the best available option in its category.
Lower amber (30-49): Nutritionally average or weakly aligned with your profile. Edible, sometimes necessary, but worth seeking an alternative when one is available.
Red (0-29): Significant issues for your specific profile. It might be very high in sugar for a diabetes user, a declared allergen, or a nutritional void. When a product scores Red, the app shows the specific reason, because a Red for "contains gluten" is a different kind of Red from "very high in saturated fat."
Most foods land in one of the amber bands, and that is by design. The scoring is calibrated to produce meaningful distinctions rather than a binary of good and bad.
One hard limit applies regardless of nutrient profile: no NOVA 4 ultra-processed product can score in the Green band. The ceiling for ultra-processed food is upper amber (maximum 69). Excellent macronutrients cannot lift a fizzy drink into Green.
Allergen detection: a separate safety verdict
Before the score is calculated, allergen detection runs as an independent check. This produces a safety verdict, either pass, warn, or block, that is displayed alongside the score but is entirely separate from it.
The separation matters enormously. A product might score 74 and carry a tree nut warn simultaneously. The Green score tells you the product is nutritionally well-suited to your profile. The warn tells you it may not be safe. These are different questions with different answers, and the app presents them as such.
Allergen matching uses word-boundary-safe logic with false-positive exclusion sets. "Buckwheat" does not trigger a wheat flag. "Gluten free" stated on the label suppresses all gluten and wheat matches. "Non-dairy creamer" does not trigger a dairy alert. Getting this right requires careful engineering; a system that flags buckwheat as containing wheat destroys trust immediately and, more seriously, teaches users to dismiss alerts that matter.
If you have a severe allergy, the allergen safety verdict is the signal to act on. The numeric score tells you nothing about whether a product is safe for you.
The scoring architecture
Every score is built through six sequential layers, each modifying the output of the layer before it. The engine is entirely deterministic. No LLM is involved in scoring, and there is no probabilistic element anywhere in the pipeline. The same product, scanned by the same user with the same profile, will always produce the same score.
Layer 1: Base macronutrient profile
Every score starts at 50. From there, the product's macronutrient profile raises or lowers the score based on energy density, protein, fat, saturated fat, sugar, fibre, and salt. Each nutrient is assessed per 100g, which allows fair comparison across very different product types.
Fat receives particular attention. We score what kind of fat it is, not just how much. The fat quality ratio, the proportion of unsaturated to total fat, is a distinct scoring input alongside total fat content. A product high in total fat but predominantly unsaturated, such as walnuts, oily fish, or avocado, is treated differently from one with the same total fat dominated by saturated fat, such as processed pastry or palm-oil-heavy confectionery. This prevents the engine from penalising nutritionally valuable foods for simply containing fat.
The base score is assessed per 100g to allow fair cross-product comparison, then blended with typical serving size data so a 40g bowl of oats is treated differently from 100g of olive oil.
Nutrient modifiers can add or subtract up to 15 points each, with a total cap of 25 points from macronutrients. No single nutrient dominates the outcome.
Layer 2: Micronutrient assessment
Where data is available from the UK government's CoFID database and Open Food Facts, we assess iron, calcium, folate, and vitamin C. Products meeting 15% or more of the EU Nutrient Reference Value per 100g receive a modest bonus. These modifiers are profile-weighted: pregnancy increases the importance of folate; menopause increases the weight given to calcium; kidney disease suppresses potassium bonuses that would otherwise apply. Where no reliable data exists for a product, we suppress the micronutrient component rather than estimate.
Layer 3: NOVA ultra-processing classification
We apply the NOVA classification, which groups foods from NOVA 1 (unprocessed: fresh fruit, eggs, plain meat) through to NOVA 4 (ultra-processed: reconstituted products, soft drinks, packaged snacks assembled from industrial-fraction ingredients). The NOVA penalty is proportional: NOVA 3 and 4 products receive progressively steeper deductions.
The NOVA 4 amber ceiling described above applies at this layer. The detail of how we handle NOVA intelligently, including the sanity check for misclassified simple products and the Health-Positive UPF exception for nutritionally valuable categories, is covered in its own section below.
Layer 4: Derived signals
Certain patterns in a product's overall profile trigger compound signals that single-nutrient checks miss. Seven signals are currently active. Each applies a specific penalty or bonus, and they can stack: a product that is both a nutritional void and sugar dominant receives both penalties. The full list is described in the derived signals section below.
Layer 5: Personal constraint engine
This is where MyFoodFit fundamentally departs from universal scoring systems.
When you set up your profile, you select from 40 dietary profiles. Of these, 27 are scoreable and modify the numeric output. The remaining 13 are allergen-only and feed the safety verdict system only, without altering the score.
Each scoreable profile applies its own set of modifiers to the accumulated score. For a diabetes profile, high sugar draws a heavier penalty. For a heart health profile, saturated fat thresholds are tighter. For a gut health profile, fermented foods receive a bonus.
Penalty multipliers stack with dampening to prevent compounding: no product can lose more than half its score from constraint penalties alone. Reward multipliers are capped. This keeps scores within a range that remains interpretable.
All 27 scoreable profiles run in a single pass. You scan once. The engine evaluates every active profile simultaneously. The allergen-only profiles, covering all 14 EU declarable allergens, are handled entirely through the separate safety verdict described earlier.
Layer 6: Guardrails
Guardrails are score floors that prevent genuinely healthy whole foods from being penalised by a single above-average nutrient.
Olive oil is technically very high in fat. Without a guardrail, the fat modifier would suppress its score considerably. The guardrail ensures that olive oil and similar whole-food healthy fats never drop below a floor that reflects their actual health value. We apply guardrails for vegetables, fruit, lean protein, dairy, healthy oils and fats, and oily fish. The oily fish guardrail floor is raised for users with heart health and pregnancy profiles, reflecting the particular importance of omega-3 for those groups.
NOVA 4 products are excluded from all positive guardrails. A fish finger does not qualify for the oily fish floor. A fruit-flavoured sweet does not qualify for the fruit floor. The guardrail system protects whole foods, not ultra-processed products that happen to contain a protected ingredient.
How we handle NOVA
The amber ceiling
All NOVA 4 products are subject to a hard ceiling of 69 (upper amber). No NOVA 4 product can score Green, regardless of its nutrient profile. The research base linking high UPF consumption to chronic disease outcomes is now substantial enough that we do not want to produce Green scores for ultra-processed foods, even when their isolated macronutrients look favourable.
The NOVA sanity check
Source databases occasionally misclassify simple products. Frozen peas have appeared in our data tagged as NOVA 3 or NOVA 4 because the upstream classifier applied category-level heuristics rather than ingredient-level analysis. Where a product has five or fewer ingredients and no UPF markers in its ingredient list, the NOVA sanity check caps the classification at NOVA 2. This prevents the scoring engine from penalising genuinely minimally processed products on the basis of a bad upstream tag.
Health-Positive UPF
Not all ultra-processed foods are nutritionally equivalent. A fortified wholemeal breakfast cereal with 6g of fibre per serving is technically NOVA 4. So is a can of Red Bull. Treating these identically is not analysis; it is laziness.
We built a Health-Positive UPF system that identifies eight categories of technically ultra-processed foods with demonstrated nutritional benefit: fortified wholemeal cereals, plant milks, fermented beverages such as kefir and kombucha, plant sterol spreads, wholemeal bread, high-protein dairy, tofu and tempeh, and plant-based proteins like Quorn. Products in these categories receive a reduced NOVA penalty, capped at a 60% reduction, provided they pass sugar and saturated fat safety gates. Genuinely unhealthy products cannot qualify through category membership alone.
The NOVA penalty is never completely removed for these products. The Health-Positive exception acknowledges real nutritional value; it does not pretend that industrial processing carries no long-term risk.
Derived signals
Seven compound signals are currently active. Each applies a specific penalty or bonus, and they can stack.
Nutritional void: Fires when a product has less than 3g of protein per 100g, less than 1g of fibre per 100g, NOVA 3 or higher, and more than 5g of sugar per 100g. This catches foods that deliver calories with almost no nutritional return: think boiled sweets, many crisps, and most confectionery.
Sugar dominant: Identifies products where the calorie profile is overwhelmingly sugar-driven in an ultra-processed context. Many breakfast cereals and cereal bars trigger this.
Processed meat: Products matching processed meat patterns (sausages, bacon, salami, ham) receive a dedicated penalty reflecting the IARC Group 1 carcinogen classification for processed meat.
Liquid calorie: Fires on fruit juices, sugar-sweetened beverages, and other calorie-dense drinks where the absence of fibre and chewing means blood sugar impact is substantially worse than solid food with comparable calories. Liquid calories warrant their own signal rather than treatment as merely "high sugar" because the mechanism and magnitude of harm are distinct.
Saturated fat bomb: Fires when saturated fat exceeds 15g per 100g and the product is NOVA 3 or higher. Targets pastries, heavily processed dairy desserts, and reconstituted meat products.
High-fat UPF: Fires when total fat exceeds 25g per 100g and NOVA is 3 or higher. Whole-food categories, including nuts, oily fish, seeds, and avocado, are explicitly excluded so the signal does not penalise foods whose fat is primarily unsaturated and nutritionally valuable. The target is products that are simultaneously heavily processed and high in fat without the whole-food credentials that would justify it.
Fermented food modifier: Kimchi, kefir, kombucha, miso, tempeh, sauerkraut, and live-culture yoghurts receive a probiotic bonus of 4 to 8 points, weighted by the user's active dietary profiles. NOVA 4 products are fully excluded from this modifier: a "probiotic" fizzy drink does not qualify. Cured meats that happen to contain fermented ingredients do not qualify either.
Profile-specific scoring
Of the 40 profiles, 27 are scoreable and 13 are allergen-only. The allergen-only profiles feed the safety verdict system rather than the numeric score.
The same product scores differently depending on which profiles are active. A 200g pot of plain Greek yoghurt illustrates this clearly:
- Under a general health profile, it scores well on protein and calcium and receives a fermented food modifier bonus.
- Under a GLP-1 support profile, protein density is weighted more heavily because preserving lean mass on reduced calorie intake is the central concern. The same pot scores higher than it would for a general health user.
- Under a menopause profile, calcium receives a doubled weighting. The score rises again.
- Under a kidney disease profile, the potassium content triggers a penalty not visible to any other profile.
- Under a dairy allergy profile, the allergen verdict produces a block, entirely independent of the numeric score.
The 27 scoreable profiles span goals (weight management, heart health, high protein, gut health), dietary patterns (vegan, vegetarian, halal, kosher), medical conditions (diabetes, IBS, coeliac, kidney disease, Crohn's, histamine intolerance), life stages (pregnancy, menopause, GLP-1 support), and neurological support (ADHD, mood).
Multiple profiles stack in a single pass. A vegan user with a nut allergy and a gut health goal does not need three separate scans. One scan, one combined score, one combined safety verdict.
Validation
HFSS alignment. Our scoring achieves 83.3% agreement with the UK government's High Fat, Sugar, and Salt nutrient profiling model, used to determine which products can be advertised to children. Disagreements are almost entirely cases where our personalised modifiers legitimately produce a different assessment for specific user profiles.
Nutri-Score correlation. Pearson correlation of 0.835 against Nutri-Score grades across a sample of UK supermarket products. Strong alignment on population-level nutritional quality, while preserving the personalisation Nutri-Score lacks.
Automated testing. 16,570 UK products tested across 20 dietary profile configurations, producing 331,400 individual scoring assessments. 100% barcode resolution rate, 88% scoreable.
An internal clinical audit against NHS, SACN, WHO, and NICE guidance identified 11 issues across three severity levels. All critical and important issues have been addressed.
What we deliberately do not do
We do not gamify. There are no streaks, no celebrations, no confetti when you scan a Green product. Food choices are personal and often complex. Turning them into a game trivialises conditions that affect people's daily quality of life.
We do not use LLMs for scoring. Natural language food search uses AI-powered intent parsing; scoring does not. The scoring engine is entirely deterministic. Same inputs, same profile, same score. Always.
We do not treat the score as a safety verdict. For allergen safety, read the allergen verdict, not the score. They answer different questions and one of those questions is about whether you can safely eat the product at all.
We do not override medical advice. Our scores reflect nutritional analysis against your stated dietary profile. They are not medical prescriptions. Every medical and clinical profile in the app displays a disclaimer badge, and we encourage users to work with their healthcare team.
We do not sell your data. Scanning data is anonymised at the device level. Behavioural signals are linked to anonymous device identifiers, not personal information. We are GDPR compliant, with full data export and deletion capabilities built in.
How we compare
vs Yuka: Single score for everyone. Useful for quick general assessments but cannot account for individual conditions, allergies, or goals. Penalises additives on a precautionary basis that does not always align with regulatory science.
vs Nutri-Score: Population-level labelling system adopted in several European countries. Applies identically to everyone regardless of health conditions. Does not account for ultra-processing or specific allergens.
vs ZOE: ZOE provides personalised nutrition based on individual metabolic testing: blood sugar responses, blood fat responses, gut microbiome analysis. It requires biological samples and provides ongoing dietary coaching. MyFoodFit is a point-of-purchase decision tool that scores products against your stated health profile without biological testing. Complementary approaches rather than competing ones.
vs MyFitnessPal: Primarily a calorie and macronutrient tracker. Does not score foods, evaluate ultra-processing, check for allergens, or apply condition-specific constraints. It solves a different problem.
The full technical breakdown
The validation data, guardrail thresholds, scoring ranges, and current build status are published on the scoring methodology page.
We publish our methodology because trust is not built by hiding how things work. It is built by showing your working and letting people evaluate it for themselves.
MyFoodFit launches on the App Store on 22 June 2026.
This content is for information only and does not replace medical advice.
Coming Soon to the App Store
Personalised food scoring for 36+ dietary conditions. Register your interest for early access.
Medical disclaimer
This content is for information only and does not replace medical advice. Always consult a qualified healthcare professional before making changes to your diet or treatment.