Science and accuracy
StayToned uses published nutrition equations for daily targets and deterministic arithmetic for every meal total. Photo and description logging use AI to propose ingredients and amounts. Those proposals are starting points you can edit. StayToned is not a medical device, and its values are not lab measurements or medical advice.
The short version Targets follow Mifflin-St Jeor, standard activity multipliers, NIH-style calorie changes, Atwater 4-4-9 factors, and AMDR-inspired macro bounds. After an ingredient exists, scaling is exact: amount × nutrition per 100 g or 100 ml. The uncertain step is identifying food and guessing portion size from a photo or a sentence.
Accuracy at a glance
Different parts of the app have different kinds of accuracy. Formula-based math is reproducible. AI vision and crowd-sourced labels are not.
Daily targets
Deterministic. The same age, sex, height, weight, activity, goal, and plan always produce the same calories and macros. Population equations typically sit within about 10% of measured resting energy for many adults, with larger error in some bodies.
Ingredient and meal totals
Deterministic once amounts and per-100 values exist. Change a quantity or a nutrient and StayToned rescales locally. Meal totals are the sum of every active ingredient. Failed analyses add nothing.
AI photo estimates
Estimates, not measurements. The model is asked to use the plate as a scale and to aim for roughly ±50% on grams or milliliters. That is a prompt target, not a published validation study. Hidden oils, sauces, and drinks are easy to miss.
Barcode scans
As accurate as the Open Food Facts record. Serving-size values are preferred; otherwise per-100 g values are scaled to the listed serving. If the product has no usable facts, AI estimates and the entry is labeled as an estimate.
Daily calorie and macro targets
Calculate targets asks for age, sex, height, weight, activity, goal, and a named macro plan. You can skip the calculator and type your own calories and grams. Either way, a new snapshot applies from today forward. Past days keep the targets they already had.
1. Resting burn (BMR)
StayToned uses the Mifflin-St Jeor equation, which is a widely used estimate of basal metabolic rate in healthy adults (Mifflin et al., 1990):
BMR (kcal/day) = 10 × weight(kg) + 6.25 × height(cm) − 5 × age(years) + sex constant Sex constant: male +5 female −161 intersex −78 (midpoint of the two binary constants)
Mifflin-St Jeor was derived from measured resting energy in 498 adults. Later reviews often find it closer to indirect calorimetry than older Harris-Benedict equations for many groups, with typical mean errors around 10% and larger misses at the extremes of body size, age, or muscle mass. It does not measure your metabolism. It estimates it from four inputs.
2. Daily burn (TDEE)
Total daily energy expenditure is BMR multiplied by a standard physical-activity factor, the same PAL multipliers used by many clinical and consumer calculators:
| Activity | In the app | Factor | Meaning |
|---|---|---|---|
| Sedentary | None | 1.2 | Little movement beyond everyday tasks |
| Light | Light | 1.375 | Light exercise or movement 1–3 days per week |
| Moderate | Moderate | 1.55 | Moderate training or sports 3–5 days per week |
| Active | Active | 1.725 | Exercise or sport 6–7 days per week |
| Very active | Very active | 1.9 | Intense training every day, or a physical job |
TDEE = BMR × activity factor
These factors are coarse. Two people with the same label can burn very different amounts. Wearable energy from Apple Health or Health Connect can later replace this estimate on the energy-balance chart if you turn health sync on.
3. Goal adjustment
Intake is TDEE plus a calorie change. Deficits follow NIH-style ranges used for unsupervised weight loss (about 500–750 kcal/day for faster loss, smaller for slower loss) and never drop below conservative floors: 1,200 kcal for female profiles, 1,500 for male, and 1,350 for intersex. Surpluses stay modest so lean-gain plans do not become large unstructured bulks.
| Goal | Adjustment | Clamped range |
|---|---|---|
| Lose weight fast | −20% of TDEE | −500 to −750 kcal, not below the calorie floor |
| Lose weight slowly | −10% of TDEE | −250 to −500 kcal, not below the floor |
| Maintain weight | 0 | Intake matches estimated burn |
| Lean growth | +5% of TDEE | +100 to +250 kcal |
| Build muscle | +12% of TDEE | +250 to +500 kcal |
calorie target = round(TDEE + adjustment, nearest 10 kcal)
A 3,500 kcal change is a common rule of thumb for about 1 lb of body fat. Real weekly change varies with water, glycogen, and the mix of fat and lean tissue, so StayToned treats the calorie change as a plan, not a guaranteed scale forecast.
4. Macro plans (Atwater factors)
Calories become grams with the Atwater factors used on nutrition labels worldwide: protein 4 kcal/g, carbohydrate 4 kcal/g, fat 9 kcal/g. Named plans use the same calorie splits as the public calculator.net macro calculator, kept inside AMDR-inspired bounds from the U.S. Institute of Medicine: protein about 10–35% of calories, fat 20–35%, carbohydrate at least 40% on the linked sliders.
| Plan | Protein | Carbs | Fat | Why |
|---|---|---|---|---|
| Balanced | 25% | 50% | 25% | Even protein and fat; carbs cover half of calories |
| Low fat | 27.5% | 52.5% | 20% | Fat at the AMDR floor; remaining calories go to carbs and protein |
| Low carb | 30% | 40% | 30% | Carbs at the app’s AMDR-inspired floor; higher protein and fat |
| High protein | 35% | 42.5% | 22.5% | Protein at the AMDR ceiling for satiety and muscle support |
protein g = round((calories × protein share) / 4, nearest 5 g) fat g = round((calories × fat share) / 9, nearest 5 g) carbs g = round((calories − protein×4 − fat×9) / 4, nearest 5 g)
Carbs are the remainder so the three macros still add up after rounding. Custom sliders keep calories fixed while you move one macro; the other two rebalance inside those ranges. If you change the calorie slider, grams scale in proportion to the current shares.
The IOM AMDR for carbohydrate is 45–65% of calories. StayToned’s low-carb plan uses 40% to match the calculator.net split. That is a product convention, not a claim that 40% is the IOM lower bound.
Worked example
Profile: 30-year-old male, 180 cm, 80 kg, moderate activity, maintain, balanced plan.
BMR = 10×80 + 6.25×180 − 5×30 + 5 = 1,780 kcal TDEE = 1,780 × 1.55 = 2,759 kcal Calories = round(2,759, 10) = 2,760 kcal Protein = round((2,760 × 0.25) / 4, 5) = 175 g Fat = round((2,760 × 0.25) / 9, 5) = 75 g Carbs = round((2,760 − 700 − 675) / 4, 5) = 345 g
Same calories on High Protein become 240 g protein, 295 g carbs, and 70 g fat. Same calories on Low Carb become 205 / 285 / 90. You can still type any custom split the sliders allow.
Nutrition per ingredient
Every ingredient stores two layers: how much you ate, and nutrition per a canonical reference amount. StayToned does not store a frozen meal total as the source of truth. It stores per-item densities and recomputes.
Canonical densities
AI and in-app nutrition use a per-100 schema. Solids use grams. Liquids use milliliters. Values are never stored “per serving” or “per shot” in that density field — a 30 ml espresso shot still stores calories per 100 ml, then the 30 ml portion scales it.
scale = amount_in_g_or_ml / 100 item calories = calories_per_100 × scale item protein = protein_g_per_100 × scale item carbs = carbs_g_per_100 × scale item fat = fat_g_per_100 × scale item nutrient = nutrient_per_100 × scale
Macros on the meal round to 2 decimal places. Extra nutrients round to 4. Household units (cup, tbsp, slice, serving) convert to grams or milliliters with fixed factors before scaling:
| Unit | Canonical amount |
|---|---|
| 1 oz | 28.3495 g |
| 1 lb | 453.59237 g |
| 1 fl oz | 29.5735 ml |
| 1 cup | 236.588 ml |
| 1 tbsp | 14.7868 ml |
| 1 tsp | 4.92892 ml |
Count units (piece, slice, serving, package) need a gram or milliliter equivalent from analysis or from you. Two slices of bread with a 60 g equivalent become 60 g × the per-100 density.
Meal totals
A meal’s macros and nutrients are the sum of every ingredient that is not deleted and not a failed-analysis placeholder. Edit a quantity, swap a unit, or fix a nutrient and the meal updates immediately — no second AI call. Manual entries use the same math.
meal protein = Σ ingredient protein meal carbs = Σ ingredient carbs meal fat = Σ ingredient fat meal kcal = Σ ingredient calories meal fiber = Σ ingredient dietary_fiber_g …same sum for every other tracked nutrient
What each item can carry
Core macros on every item: calories, fat, carbohydrate, protein. Extended facts, when known: saturated / trans / polyunsaturated / monounsaturated fat, omega-3, cholesterol, sodium, dietary fiber, sugars, added sugars, total sugars, calcium, iron, potassium, magnesium, phosphorus, zinc, copper, manganese, selenium, chromium, molybdenum, iodine, vitamins A, C, D, E, K, thiamin, riboflavin, niacin, B6, folate, B12, biotin, and pantothenic acid.
Daily summaries highlight fiber and sugars next to macros. Trends can chart any of these over weeks, months, or a year. Missing values stay missing; StayToned does not invent a vitamin because a calorie was estimated.
AI meal estimates
Photo, description, and “add ingredient” flows ask a language model to return a structured ingredient list: name, quantity, display unit, normalized grams or milliliters, macros per 100, and nutrition facts per 100 when it can estimate them. The app then runs the scaling math above.
- Photos with food. The model is told to use the plate or bowl as a scale and to compare each item to that diameter. The requested accuracy on amounts is roughly ±50%. Hidden structural ingredients (a burger patty between buns) may be included. Optional toppings that are not visible should not be invented.
- Photos of menus, labels, or packaging. Readable food text counts. Printed label or menu numbers are preferred over a visual guess. Per-serving labels are converted into the per-100 schema.
- Text descriptions. If you omit amounts, the model uses a typical adult serving, or a serving sized to your age, sex, height, and weight when that profile exists. All of that is still a guess.
- Composite dishes. Meals are split into mutually exclusive ingredients when possible (bun, patty, cheese — not a single “burger”), so you can correct one item without discarding the rest.
Treat AI numbers as a first draft StayToned has not published a lab study that compares photo estimates to weighed food. Independent research on image-based diet tools often finds food identity is easier than portion size, with gram errors commonly in the tens of percent. Oils, dressings, cooking fat, beverages, and mixed restaurant dishes are the usual failure modes. Edit anything that looks wrong.
Barcode nutrition
Scans look up the product on Open Food Facts, a public, crowd-sourced food database. StayToned prefers per-serving nutrients when they exist. If only per-100 g values exist, it scales them by the listed serving quantity. Energy in kilojoules is converted with 1 kcal = 4.184 kJ. If calories are missing but macros exist, calories are rebuilt with the Atwater 4-4-9 sum. Salt in grams can fill sodium as 400 mg sodium per 1 g salt (the usual 40% sodium-by-mass conversion).
Open Food Facts records vary in completeness and can disagree with the package in your hand. If a scan has no usable nutrition, StayToned falls back to an AI estimate and labels it as an estimate, not verified label data.
Micronutrients and daily guides
When you open a nutrient, StayToned can show a daily guide from U.S. Dietary Reference Intakes and Dietary Guidelines rules, using your age, sex, and calorie target when those are known. Adults without a profile fall back to a 19-year-old, 2,000 kcal default.
| Nutrient | Guide in the app | Basis |
|---|---|---|
| Dietary fiber | At least 14 g per 1,000 kcal | IOM adequate intake |
| Added sugars | Limit to 10% of calories | Dietary Guidelines for Americans |
| Saturated fat | Limit to 10% of calories | Dietary Guidelines for Americans |
| Trans fat | Limit to 0 g | Dietary Guidelines / WHO direction |
| Sodium | Limit 2,300 mg for ages 14+ (lower for children) | Dietary Guidelines |
| Cholesterol | Limit 300 mg | Older DGA ceiling, kept as a conservative cap |
| Vitamins and minerals | Age- and sex-specific RDA or AI values | IOM DRI tables (NIH ODS) |
These guides are population averages. Pregnancy, disease, medication, and clinical diets can need different targets. StayToned does not diagnose deficiency from a food log.
Energy balance
When you calculate targets, estimated daily burn is stored as that TDEE, and the goal’s calorie change is stored beside it. The Trends energy chart can then show intake versus that plan.
If you connect Apple Health or Health Connect, burned energy for a day is the sum of the active and resting calories you allowed. That measured (or wearable-estimated) burn can differ a lot from Mifflin-St Jeor × PAL. Wearable totals are themselves models, not whole-room calorimetry.
balance = intake − burned plan balance ≈ calorie change (for example −500 kcal on a cut)
What this is not
- Not a medical device, diagnosis, or treatment plan.
- Not a substitute for a dietitian, physician, or weighed-food protocol.
- Not a claim that AI photos match a lab or a restaurant nutrition panel.
- Not a guarantee of weight change. Water, sodium, training, and adherence move the scale more than a 10 kcal rounding step.
The honest accuracy model is: published equations for the plan, exact arithmetic for the log, and human judgment for every estimate. The more you confirm portions — a label, a barcode, a kitchen scale, an edit — the closer the diary gets to the food you actually ate.
Sources
- Mifflin MD, St Jeor ST, Hill LA, Scott BJ, Daugherty SA, Koh YO. A new predictive equation for resting energy expenditure in healthy individuals. Am J Clin Nutr. 1990;51(2):241-247.
- Institute of Medicine. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. National Academies Press; 2005. Acceptable Macronutrient Distribution Ranges and 14 g fiber / 1,000 kcal.
- National Academies / NIH Office of Dietary Supplements. Vitamin and mineral RDA and AI values used for in-app nutrient guides.
- U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020–2025. Limits on added sugars, saturated fat, and sodium.
- National Institutes of Health, NIDDK. Healthy weight-loss guidance using about 500–750 kcal/day deficits and conservative calorie floors for unsupervised diets.
- Atwater WO. Food energy factors (4 kcal/g protein, 4 kcal/g carbohydrate, 9 kcal/g fat) that underpin nutrition-label calories.
- Open Food Facts. Crowd-sourced packaged-food nutrition used for barcode lookups.
Questions about this report? Contact StayToned or email me@farnood.tech.