Evidence & safety
How FitBuddy calculates
health targets
The numbers are calculated deterministically on your device. Repeated body and nutrition history can support one small, bounded alternative. AI can choose only between exact candidates created by the app; it cannot invent or edit a target.
Last evidence review: 11 September 2026.
Calculation at a glance
- Validate that the profile is within the adult calculator’s safety scope.
- Estimate resting energy from age, height, weight, and sex.
- Apply the full-day activity level used for this proposal.
- Apply a bounded deficit, maintenance target, or bounded surplus for the goal.
- Calculate protein, fat, and carbohydrate inside adult distribution ranges.
- Optionally inspect quality-gated repeated readings and food-log coverage.
- Show every candidate and its evidence before the user applies it.
FitBuddy always creates the normal formula candidate. It creates at most one trend-adjusted candidate, and only when all consistency and adherence gates pass. No smart scale and no AI provider are required for the standard calculation.
Weight context, not an “ideal weight”
There is no scientifically valid universal ideal weight. BMI is a population screening tool, not a diagnosis or an individualized prescription. FitBuddy shows the adult BMI range of 18.5–24.9 only as context and suggests a scale target only when it can serve as a defensible first milestone.
| Situation | Milestone behavior |
|---|---|
| Weight loss at BMI 25 or above | Up to 5% below current weight, without crossing below the upper healthy-BMI boundary. |
| Gain goal below BMI 18.5 | The lower healthy-BMI boundary is shown as a milestone; professional guidance is encouraged. |
| Healthy-range muscle gain or recomposition | No scale target is invented. A manual target remains available. |
Suggested milestones are rounded to 0.5 kg to avoid false precision. The 5% loss milestone is a first checkpoint associated with possible improvement in health markers, not a universal endpoint or a requirement to reach a particular BMI.
Baseline energy calculation
1. Resting energy
FitBuddy uses the Mifflin–St Jeor equation. Weight (w) is in kilograms,
height (h) in centimetres, and age (a) in years.
| Profile value | Resting estimate (kcal/day) |
|---|---|
| Male | 10w + 6.25h − 5a + 5 |
| Female | 10w + 6.25h − 5a − 161 |
| Not provided | 10w + 6.25h − 5a − 78, the midpoint of the two constants |
This estimates resting energy; it is not a measurement of metabolism.
2. Full-day activity
The resting estimate is multiplied by the activity level used for the proposal:
| Level | Factor | Meaning |
|---|---|---|
| Sedentary | 1.2 | Mostly seated with little planned exercise |
| Lightly active | 1.375 | Mostly seated plus light exercise about 1–3 days/week |
| Moderately active | 1.55 | Moderate exercise about 3–5 days/week or an active routine |
| Active | 1.725 | Hard exercise about 6–7 days/week or a physical job |
| Very active | 1.9 | A strenuous job plus hard training or frequent two-a-days |
estimated maintenance = resting estimate × activity factor
3. Goal adjustment
| Goal | Adjustment |
|---|---|
| Weight loss | 15% deficit, bounded to 250–500 kcal/day |
| Body recomposition | Estimated maintenance |
| Muscle gain | 8% surplus, bounded to 150–300 kcal/day |
The result is not set below 1,200 kcal/day without supervision and is rounded to the nearest 50 kcal. The recommendation window shows the resting estimate, activity factor, estimated maintenance, goal adjustment, formula target, optional trend step, and final target separately.
The activity factor already includes average exercise. Logged workout calories stay visible but are not credited back 1:1, avoiding exercise double counting and reducing sensitivity to uncertain calorie-burn estimates. Reassess the starting estimate against a consistent 2–4 week weight trend.
Selected versus workout-suggested activity
The activity selector represents typical overall movement: planned workouts, daily movement, and physical work. When a user requests a target recommendation, FitBuddy also reviews the current 28-day workout window. It normalizes workout days, session count, and duration to weekly values. Estimated exercise calories are not used for this recommendation.
| Suggested level | Weekly workout evidence |
|---|---|
| Very active | At least 6 workout days and 9 sessions and 600 minutes |
| Active | At least 6 workout days or 300 minutes |
| Moderately active | At least 3 workout days or 150 minutes |
| Lightly active | At least 1 workout day or 60 minutes |
| Sedentary | Some workout history exists but remains below those thresholds |
Thresholds are evaluated from very active downward. When a valid suggestion exists, the proposal is recalculated with the workout-suggested level before it is displayed. The dialog explicitly identifies that level, its factor, and the supporting workout totals. If the user chooses Use current, FitBuddy rebuilds the whole proposal with the manually selected level before saving it.
With no workouts in the window, there is no workout suggestion and the selected level is preserved. Workout logs cannot observe a physical job, walking, workout intensity, or unlogged exercise, so users should keep the selected level when it better reflects their typical life.
Repeated body-trend personalization
FitBuddy never changes a target from one smart-scale reading. It reviews up to 42 recent calendar days, collapses multiple readings on the same day to their median, and estimates direction with a robust Theil–Sen slope so isolated readings have less influence.
Weight-trend quality gates
Every gate below must pass:
- At least 4 measurement days spanning at least 14 days.
- The latest reading is no more than 10 days old.
- No gap between measurement days exceeds 14 days.
- Median absolute residual variation stays within the larger of 0.4 kg or 0.6% of median body weight.
Missing, sparse, stale, irregular, or noisy readings keep the normal formula plan. Consistent weight-only history is enough to support cautious feedback; smart-scale body-composition fields remain optional.
Optional composition support
Body-fat percentage and muscle-mass direction can support interpretation, but neither directly calculates calories. Each field independently needs at least 3 valid readings spanning 14 days, a reading within 10 days, no gap over 14 days, and bounded residual variation. The residual limit is 2 percentage points for body fat and the larger of 0.75 kg or 1% of median body weight for muscle mass.
Consumer bioimpedance varies with hydration, meals, exercise, temperature, and device algorithms. Composition trends are supporting evidence only, never a diagnosis.
Food-log and adherence gate
A numeric adjustment additionally requires:
- Food logs on at least 21 of the previous 28 completed days, excluding today.
- Average logged intake within the larger of 10% or 150 kcal of the current target.
This reduces the chance of changing a target when incomplete logging or adherence is a more plausible explanation for the observed trend.
One bounded response
| Goal | Observed weekly weight rate | Candidate step |
|---|---|---|
| Weight loss | At least −0.10% (flat, increasing, or very slow loss) | −100 kcal/day |
| Weight loss | At most −1.00% | +100 kcal/day |
| Muscle gain | At most +0.05% | +100 kcal/day |
| Muscle gain | At least +0.50% | −100 kcal/day |
| Recomposition | At most −0.50% | +100 kcal/day |
| Recomposition | At least +0.50% | −100 kcal/day |
These are conservative FitBuddy feedback rules, not clinical diagnoses or claims of a universally optimal weekly rate. Only one 100 kcal/day alternative can be created. Every request reconstructs the unadjusted baseline, preventing repeated requests from stacking the same adjustment. The 1,200 kcal floor still applies and macros are recalculated for the adjusted candidate.
Before application, the app shows the sample count, date span, weight trend, food-log coverage, available composition support, and exact calorie step.
Macronutrient calculation
Protein begins from body weight and the selected goal/activity context. “Active” here means moderately active, active, or very active.
| Goal | Below moderate activity | Moderate activity or above |
|---|---|---|
| Weight loss | 1.4 g/kg | 1.6 g/kg |
| Muscle gain | 1.4 g/kg | 1.6 g/kg |
| Recomposition | 1.2 g/kg | 1.6 g/kg |
- At BMI 30 or above, protein dosing weight is capped at the weight corresponding to BMI 30.
- Protein is constrained to 10–30% of target energy.
- Fat is set near 25% of energy.
- Carbohydrate fills the remaining energy.
- Four kcal/g are used for protein and carbohydrate; nine kcal/g for fat.
Existing calculated targets are normally kept stable unless calories differ by at least 150 kcal or protein differs by at least 20 g. The quality-gated 100 kcal trend step is the explicit exception. Placeholder, non-positive, energy-inconsistent, or out-of-range macros are recalculated rather than preserved.
AI boundary, privacy, and offline behavior
| Where | What happens |
|---|---|
| Always on-device | Profile validation, BMI context, energy arithmetic, activity analysis, trend processing, quality gates, candidate numbers, safety bounds, and macro validation. |
| Optional AI provider | When configured and requested, the fields listed below and each complete local candidate may be sent so AI can select one exact candidate ID and write a short regional coaching note. |
| No AI or provider failure | The calculation still works. FitBuddy uses the deterministic local default: the trend candidate when valid, otherwise the formula candidate. |
An optional target-selection request can contain:
- Age, sex, height, current weight, selected activity level, and goal.
- Current calorie and protein targets.
- Aggregated workout, body-trend, composition-trend, and nutrition-coverage evidence.
- Each complete locally generated candidate: its ID, calories, macros, target weight, recommended activity, and bounded adjustment.
Raw individual body-reading rows and the full food-log history are not included in this request. The provider receives the aggregates above. Its retention rules apply.
AI does not generate calorie or macro numbers for this feature. The repository accepts only an exact candidate ID that the app generated locally. Unknown IDs, malformed responses, timeouts, and provider failures fall back to the local default. If a valid candidate ID arrives with invalid coaching text, the text is discarded while the valid selection remains. AI cannot bypass local floors and bounds.
Profile data, raw body readings, food logs, and saved targets remain in the local database. See Privacy for the complete data boundary.
Limits and safety scope
- Automated targets are available only for adults age 18 or older.
- Children and adolescents need age- and sex-specific growth assessment.
- Pregnancy and breastfeeding are outside the calculator’s scope.
- Medical conditions, prescribed diets, eating-disorder history, and elite sport require individualized professional advice.
- BMI is screening context, not a diagnosis.
- Mifflin–St Jeor is a practical starting estimate; individual error can be material.
- Athlete-specific equations or measured resting energy may be preferable for competitive athletes.
- Workout history is incomplete evidence of total daily expenditure.
- Smart-scale composition is noisy and used only as supporting trend evidence.
Recommendations are planning estimates, not medical advice. FitBuddy encourages reassessment from consistent real-world trends rather than treating one calculated number as permanent or exact.
Previous method and correction
An earlier FitBuddy method asked an LLM to perform target arithmetic, used a fixed 1.0 g/kg weight-loss protein rule, could imply unsupported target-weight precision, and combined a full activity factor with exercise calorie subtraction. That could double count exercise.
The current method moves arithmetic and safety bounds into deterministic app code, uses goal/activity-aware protein, treats BMI only as context, avoids 1:1 exercise credit-back, and permits only quality-gated repeated-reading feedback. AI remains optional and constrained to selecting an exact local candidate plus coaching text.
Evidence used
- ADA Standards of Care in Diabetes—2024: obesity and weight management — individualized treatment, modest sustained loss, and energy-deficit evidence.
- NIDDK research behind the Body Weight Planner — dynamic weight change, adult-only scope, and limitations.
- CDC adult BMI categories and limitations — BMI as a screening measure interpreted with other factors.
- Comparison of resting metabolic rate equations in adults — Mifflin–St Jeor as a practical general-adult estimate.
- Systematic review and meta-analysis of RMR equations in athletes — population-specific accuracy and individual uncertainty.
- National Academies macronutrient distribution guidance — adult carbohydrate, fat, and protein ranges.
- International Society of Sports Nutrition position stand — protein needs for healthy exercising adults.
Source material was summarized and rephrased; links are provided for verification.
Continue with the beginner guide · Review Privacy · Inspect the source code