Methodology
How DishReveal turns inputs into estimates.
Last updated: 25 July 2026
DishReveal combines published equations, deterministic nutrition maths and AI-assisted food recognition. A photo result is an editable estimate, not a measurement. The app shows assumptions and confidence so you can correct the entry before saving it.
Daily energy planning
DishReveal starts with the Mifflin-St Jeor equation. It uses age, height, weight and one of two biological calculation baselines selected during onboarding.
Resting energy estimate
Base = 10 × weight in kg + 6.25 × height in cm - 5 × age in years
Male baseline BMR = Base + 5
Female baseline BMR = Base - 161
BMR is a population-level estimate of resting energy expenditure. It is not a metabolic test and can differ from an individual's actual needs.
Activity multiplier
The BMR estimate is multiplied by the activity level selected during onboarding:
- sedentary: 1.2;
- light: 1.375;
- moderate: 1.55;
- very active: 1.725; and
- extra active: 1.9.
Estimated maintenance energy = BMR × activity multiplier
Activity categories are broad. Changes in training, work, sleep, illness and ordinary daily movement can make actual maintenance energy higher or lower.
Weight-change pace model
DishReveal uses 7,700 kcal per kilogram as a planning conversion. The selected weekly change is converted to a daily adjustment and added to estimated maintenance energy.
Daily adjustment = weekly change in kg × 7,700 ÷ 7
Raw daily target = estimated maintenance energy + daily adjustment
A weight-loss pace is represented by a negative weekly change, so it lowers the raw target. A weight-gain pace is positive. The 7,700 kcal conversion is a simplified planning model. Real weight change is not perfectly linear because water, glycogen, digestion, training and adaptation all affect scale weight and energy use.
Safety floors
The app prevents its unsupervised planning calculation from starting below:
- 1,200 kcal per day for the female calculation baseline; and
- 1,500 kcal per day for the male calculation baseline.
If the raw calculation falls below the relevant floor, DishReveal raises the starting target to that floor and marks that the floor was applied. These are software guardrails, not personalised clinical recommendations. A floor does not prove that the target is suitable for you.
Calories and macros
DishReveal uses the standard 4/4/9 energy factors:
Calculated kcal = protein grams × 4 + carbohydrate grams × 4 + fat grams × 9
The onboarding plan offers four macro distributions by percentage of the energy target:
- balanced: 25% protein, 45% carbohydrate and 30% fat;
- high protein: 30% protein, 40% carbohydrate and 30% fat;
- lower carbohydrate: 30% protein, 30% carbohydrate and 40% fat; and
- plant forward: 25% protein, 50% carbohydrate and 25% fat.
The app converts the protein and carbohydrate shares at 4 kcal per gram and the fat share at 9 kcal per gram, then rounds the gram targets. Rounding can make the displayed macro-derived total differ slightly from the raw daily target.
What each logging method means
Manual entry
DishReveal uses the values you enter. Their accuracy depends on the source and the serving amount you choose.
Nutrition-label scan
Text recognition runs on the device. Deterministic rules interpret energy, serving basis and macro rows. You confirm the recognised values and serving basis before saving. A clean label can still be misread, so compare the result with the package.
Barcode lookup
Barcode results come from Open Food Facts. DishReveal rejects incomplete records rather than presenting missing energy as zero, but community-maintained product data can still be outdated, incomplete or entered for a different package size.
Photo and text analysis
Gemini identifies visible foods, estimates metric grams and proposes separate items for likely oil, butter, dressing or sauce. A plate, cutlery, hand or package may be used as a scale cue when visible. A single photo cannot establish exact weight, recipe composition or cooking fat.
Checks applied to AI results
DishReveal validates the structured result before showing it:
- energy is checked against protein, carbohydrate and fat using the 4/4/9 equation;
- high-confidence gram estimates are checked against broad food-class portion ranges;
- a result that fails a consistency check is retried once with the issue identified;
- an implausible portion that remains after retry is surfaced for confirmation rather than silently changed;
- confidence values must remain between 0 and 1; and
- the model may ask one short clarification when overall confidence is below 0.7.
These checks catch some internal inconsistencies. They cannot prove that the food identity, portion or hidden ingredients are correct.
Confidence and error bounds
The displayed confidence is a model-supplied signal used to show uncertainty. It is not a calibrated probability and is not a guarantee that a calorie value falls within a particular percentage of ground truth.
There is no universal per-photo error bound. Poor lighting, an obstructed plate, mixed dishes, restaurant recipes and invisible cooking fat can make an estimate wrong by more than 20%. Correct the food and portion before saving when you have better information.
DishReveal will not advertise an accuracy percentage until a dated evaluation on held-out real-world meals supports that exact claim. The internal release target is a real-world median calorie error of 20% or less, alongside separate red-team, latency, retry-rate and cuisine-group checks. A release target is not a promise about an individual meal.
Daily Health Score beta
The optional score is a log-balance signal, not a diagnosis or assessment of health. It appears only after at least one meal and at least one optional nutrient value have been logged.
- protein progress is compared with the proportion of the day's energy target logged and receives 30% of the score weight;
- fibre progress uses 25 g per day and receives 45% of the score weight;
- sodium uses 2,000 mg per day, adjusted to the proportion of energy logged, and receives 25% of the score weight; and
- missing fibre or sodium is excluded instead of being treated as zero.
Total sugar is displayed but not scored because ordinary labels do not reliably distinguish total sugar from free sugar.
General wellness limitation
All targets, projections, scores and AI outputs are general wellness estimates. They are not medical advice, diagnosis or treatment. Discuss individual nutrition needs, significant weight change, eating-disorder concerns, pregnancy, medication or a medical condition with a qualified health professional.
Read the privacy policy, terms of use, or email josh@kovus.dev.