JESS MOVEFoodLens 360°

Food intelligence

A photograph cannot tell you
the calories. So we stopped pretending.

FoodLens returns a range, the source of its evidence and a confidence level — and refuses to collapse that range unless the source is verified. Everything on this page is one real plate, carried through every stage, with every figure computed by the engine rather than written by hand.

One meal, actually read

What comes back, on a plate where only one thing had a label.

A weekday lunch: a shop-bought chicken and bacon sandwich, a handful of salted crisps, and an apple.

Energy

a range, not a number

610to815kcal

A range, because two of the three items were estimated from a photograph. The sandwich is exact — its label was read. The crisps and the apple are not, and a total cannot be more certain than the least certain thing in it.

What was on the plate

  • Chicken and bacon sandwich96% confidentBarcode scanned — the label was read directly.
  • Salted crisps, small bag71% confidentRecognised from the photograph. Pack size estimated from the bag in shot.
  • Apple88% confidentRecognised from the photograph. Size estimated against the plate.

Front of pack, with the basis of every figure

NutrientAmountWhere it came from
fat28.4glabelFrom the sandwich label, plus a reference figure for the crisps by weight. The largest single contributor is the sandwich.
saturates7.9glabelThe sandwich label carried it. The crisps figure is from a reference table.
sugars19.1gcalculatedMostly the apple, worked out from an estimated weight — so this figure moves with how big the apple actually was.
salt2.6glabelThe sandwich label plus a reference figure for the crisps. This is 43% of a day’s guideline in one lunch, and it is the number worth noticing on this plate.
fibrenot measuredunmeasuredNot measured. No label here declared it and a photograph cannot establish it. Shown as unknown rather than as zero, because a zero would be read as a fact about the meal instead of a gap in the evidence.

The one thing worth noticing: Salt. This lunch is 2.6g, which is 43% of a day’s 6g guideline before dinner. The sandwich carries most of it, and that is a swap rather than a sacrifice.

Why it does not just give you a number

A photo-calorie app would return a single confident number for this plate. Independent testing presented in 2026 found that leading apps underestimate meal energy by around 250 to 345 calories, with macronutrient error rates between 48% and 66%. The response here is not a better guess — it is a range, a stated basis for every figure, and an unmeasured nutrient left visibly unmeasured.

This example is stored, not generated. Nothing on this page calls a model, spends an allowance or costs anything, and it is the same for everybody who reads it — which also means it is not a cherry-picked run you could not reproduce.

Stage one — capture

The camera earns the estimate before the shutter fires.

Six live checks run on the viewfinder. Each one that passes narrows the cone the estimate will eventually carry — a reference object and a second angle together are worth more than any amount of model confidence.

Chicken katsu curry, rice and slaw

4 items recognised
Breaded chicken 94%Rice 97%Curry sauce 71%Slaw 83%Dinner fork · 195mm

Each box carries its own confidence, because the interesting part of recognition is not what the model saw — it is how sure it is. Curry sauce at 71% is the weakest link, and it is also the ingredient hiding the most oil.

Capture quality

pass at 60%
  • Plate detectedGood97%
  • Lighting qualityGood82%
  • Item recognition bordersGood74%
  • Barcode detectedIf it came in a packet, scan the barcode. It beats any estimate.0%
  • Second angle guidanceA second photo from the side resolves depth, which is most of portion size.0%
  • Portion reference visibleGood91%

Two checks failed, so the cone stays at ±18%. Scanning a barcode or adding a side-on photo would tighten it — the app asks rather than guessing.

Portion references the estimator can actually use

depth is most of portion size
  • Dinner fork · 195mm
  • Teaspoon · 130mm
  • Adult hand span · 190mm
  • Standard mug · 95mm
  • Dinner plate · 270mm
  • Credit card · 86mm

Stage two — processing

Six steps, shown while they run.

The sequence is visible because each step is a place the answer could go wrong, and you deserve to know which one produced the number you are looking at.

  1. 1Finding foodsSegmenting the plate into recognisable items.
  2. 2Estimating portionsVolume from area and depth, against a reference object.
  3. 3Checking preparationCooking method, and the added oil nobody photographs.
  4. 4Calculating nutritionComposition lookup per item, ranges carried throughout.
  5. 5Comparing with your patternAgainst your own fortnight — never against another person.
  6. 6Creating alternativesThe smallest change first. A different meal is a last resort.

Stage three — the result

Meal Intelligence is about the analysis, not the food.

A takeaway with a scanned barcode and a confirmed portion scores high. A home-cooked salad photographed in bad light scores low. The number tells you how much to trust the figures beneath it — nothing else.

68OF 100
workable

How much we know about this plate — not a rating of the food.

Reasonable, but the ranges are wide. One correction would narrow them.

Built from four things: the best evidence source available across the plate, how many items were confidently named, how tightly the portion is pinned down, and whether the cooking method — and so the added oil — is known.

Energy

low confidence
690kcal442938 kcal

Confidence: low — quantity of oil and sauce. A photograph cannot resolve portion size, hidden ingredients or cooking method exactly, so this stays a range.

Where the energy comes from

Atwater
751implied kcal
  • Protein21.8%41g
  • Carbohydrate45.8%86g
  • Fat32.4%27g

The macros imply 751 kcal against a stated 690+8.8%. Close enough to agree, so both stand.

The plate

4components
  • Protein 32%
  • Starchy carbohydrate 38%
  • Vegetables & salad 14%
  • Fats & sauces 16%

Per 100g

UK front-of-pack
  • Fat11.4gMedium
  • Saturates3.2gMedium
  • Sugars4.1gLow
  • Salt1.7gHigh

Salt is high at 1.7g per 100g. The word is printed beside the colour — colour on its own is not an accessible signal.

Evidence in play

  1. 1User confirmed quantityverified
  2. 2Verified manufacturer labelverified
  3. 3Barcode verified productverified
  4. 4Restaurant supplied recipehigh
  5. 5Trusted composition databasemedium
  6. 6Ai visual estimatelow
  7. 7General recipe probabilityunknown

A user correction outranks everything, including a manufacturer’s label. You know what you put on the plate; the model is guessing.

The Food Intelligence Wheel

12 dimensions. No composite score.

One number invites the comparison this product refuses to make, so there isn’t one. Confidence is itself an axis — how well the meal is understood sits beside what is in it, on the same chart.

EnergyProteinFibrePlantsFat qualitySugarsSaltProcessingPortionPersonal fitAllergensConfidence

What a food may be called

exhaustive list
  • high frequency concern
  • high in salt
  • high in saturated fat
  • low in fibre
  • portion may exceed target
  • uncertain ingredients
  • better alternatives available

And what it may never be called

banned
  • bad
  • junk
  • cheat
  • guilty
  • sinful
  • clean
  • toxic

A permitted framing describes the food. A banned one describes the person eating it. That is the whole distinction, and it is enforced by list rather than by tone of voice.

Allergens

Absence is never inferred from a photograph.

A model can be extremely confident there are no peanuts in a picture and be wrong in a way that puts someone in hospital. So only a complete declaration from a verifiable source may say “absent”. Everything else is unknown, and unknown is displayed as a warning rather than a pass.

All 14 UK declarable allergens

source: restaurant-supplied recipe
  • celery
    Declared absent
  • cereals containing gluten
    Declared present
  • crustaceans
    Declared absent
  • eggs
    Declared present
  • fish
    Declared absent
  • lupin
    Declared absent
  • milk
    Declared absent
  • molluscs
    Declared absent
  • mustard
    Declared absent
  • peanuts
    Declared absent
  • sesame
    Declared absent
  • soybeans
    Declared present
  • sulphur dioxide and sulphites
    Declared absent
  • tree nuts
    Declared absent

Not declared by a source we can verify. We cannot tell from a photograph — check the packet or ask, especially if a reaction would be serious.

The swap ladder

The smallest change first. A different meal is a last resort.

Level one keeps the meal you wanted. “Choose something else” is level five, because a suggestion that ignores what you actually feel like eating is a suggestion nobody takes.

Level 2 simulated

grill instead of deep-fry
  • Energy690 kcal545 kcal21%
  • Saturates9.4g5.3g44%
  • Salt3.1g2.9g6%
  • Fibre4.2g4.4g5%
  • Protein41g41g0%

Keeps the same dish, the same sauce and the same rice. Note that the simulated figures carry +8% extra uncertainty — a meal you have not eaten cannot be known as well as one you photographed.

The five rungs

  1. Keep the meal, reduce one element. Use half the sauce.
  2. Change the cooking method. Grill or air-fry instead of deep-frying.
  3. Replace one side. Replace half the chips with vegetables or salad.
  4. Rebuild the plate. Keep the chicken, reduce the rice, add vegetables, lighter sauce.
  5. Choose a different meal. Grilled chicken, rice and vegetables instead of the breaded dish.

Every swap must respect

  • culture
  • budget
  • local availability
  • allergies
  • religion
  • cooking skill
  • family size
  • preparation time
  • preferred foods
  • supermarket accessibility

Your pattern

Compared with your own fortnight — and nobody else’s.

There is no cohort comparison and no percentile against other users, because that is a leaderboard about food. The only useful baseline is the one you set yourself.

This meal against your median

14 days
+6.6%

Your median evening meal is 647.5 kcal. This one is typical for you — which is a fact about your fortnight, not a verdict about your dinner.

Where your salt actually comes from

7 days × meal

Dinner on Friday and Saturday is doing most of the work. That is a more useful thing to know than a weekly total, because it names a moment you can change.

Plant diversity

6 groups

21 distinct plants this week · new: baked beans, banana, blueberries, coriander, ginger, lentils, oats, red pepper, sesame, spring onion, tomato, turmeric, walnuts, wholemeal bread

A count of distinct plants, not a target you are failing. The empty slots are drawn faintly and carry no red, because an unfinished week is not a bad one.

The boundary

8 things FoodLens will never claim.

NEVER 01

Allergen absence from appearance.

NEVER 02

Microbial safety from image.

NEVER 03

Disease diagnosis.

NEVER 04

Exact calorie count from photo.

NEVER 05

Medical treatment advice.

NEVER 06

That movement cancels out food.

NEVER 07

A single composite health score.

NEVER 08

A comparison against another named person.

Movement is never framed as cancelling out food

A short walk may support your movement target and break up sitting after the meal.

Walk for 20 minutes to burn off the burger.

Under 18
No figures

No calorie, weight or BMI framing reaches a child, in any mode, under any consent setting. bodySurfacePolicy does not consult the switch below 18.

Photograph one meal.

A range with its evidence, every nutrient labelled by how it was arrived at, and nothing invented to fill a gap. Two minutes to an account and the camera is the next screen.

Free to create. 150 AI credits a month for 2 months, then AI features need a plan — everything that is not AI carries on either way. Premium is £5.99 a month and cancels in one click. Under 18 a guardian confirms before the account opens.