Two men. Both 38 years old, both 1.78 meters tall, both 82.5 kilograms. Same BMI, 26.0. Every chart on the internet files them under the same word, overweight, and most calorie apps would hand them the same prescription.
One has a 94 centimeter waist. The other measures 82. Run the arithmetic our app runs and the first man is carrying 6.65 kilograms of fat per square meter of height, enough to warrant a calorie deficit, and a specific one: 12.7 percent below maintenance. The second comes out at 5.57, under the line where a deficit is warranted at all. He is told to eat at maintenance and keep training. Same BMI, opposite instructions, and both instructions are right.
This issue is about why our app refuses to act on BMI, what it acts on instead, and the two places where the replacement knows less than it would like to. The limits are not a footnote here. They are half the point, and they get their own section near the end.
The problem with BMI is not measurement
The standard complaint about BMI is that it is a bad measurement: it flags muscular people as overweight, it misses skinny-fat, it ignores where the weight sits. All true, all beside the point. BMI measures exactly what it claims to measure, mass over height squared, and it does so perfectly. The problem starts when someone treats that measurement as an instruction.
BMI is a sum. Split total mass into fat mass and everything else, divide both by height squared, and you get two indices: fat mass index, FMI, and fat-free mass index, FFMI, which covers muscle, bone, water and organs on the same scale. Then
FMI + FFMI = BMI
holds exactly. This is an identity, not a model. No new information was added and none was lost. The decomposition does not know anything BMI does not know. What it does is refuse to answer before the question is resolved.
Because the two components call for opposite responses. Excess fat mass is the thing a calorie deficit treats. Low lean mass is the thing a calorie deficit makes worse. A single elevated number that pools them is genuinely ambiguous between “eat less” and “whatever you do, do not eat less,” and an app that prescribes off the sum is guessing which side of that ambiguity you are on. Most guess the same way for everyone.
So the design rule fell out on its own: never act on the sum. Act on the parts, and only after estimating them honestly, which is where the difficulty actually lives. More on that below.
Fat mass sets the dose
Once BMI is split, the fat half can carry the prescription, and the thresholds did not need inventing. The WHO cutoffs everyone already uses, BMI 25 for overweight and 30 for obese (WHO Technical Report Series 894), were evaluated at the body fat that the RFM equation assigns to a waist-to-height ratio of 0.50, the boundary most waist guidance converges on. For women that is 36 percent body fat, which turns BMI 25 into an FMI entry threshold of 9.0 and BMI 30 into a ramp top of 10.8. For men it is 24 percent, giving 6.0 and 7.2. The old cutoffs are not discarded. They are resolved into the component they were always trying to describe.
Between entry and top, the prescribed deficit scales continuously from 10 to 15 percent of maintenance. No bands, no cliffs. A marginal body gets a marginal dose: the first man in the opening sits 54 percent of the way up the male ramp, so he gets 12.7 percent, not a round number pulled from a tier.
Age moves the bar, not the dose. From 60 to 85 the entry threshold climbs and the ceiling falls to 10 percent, because the evidence for aggressive deficits in older adults is weaker and the cost of lean mass lost while cutting is higher. And under 18 the classifier simply exits: no status, no factor, no calorie target. Fixed adult cutoffs are wrong for growing bodies and we have no growth percentiles, so the app declines to prescribe rather than pretending the adult math transfers. Sleep and training coaching work as normal.
Two floors close the section. Intake never goes below 1200 kilocalories for women or 1500 for men, the level below which micronutrient needs stop being meetable from whole food. And one floor we deleted deserves a confession: the model used to carry a relative floor of 1.10 times resting metabolic rate. It looked protective. It was actually a maximum-deficit rule in disguise, and a capricious one: depending on activity level its effective ceiling ranged from 8 to 37 percent, so two people prescribed the same deficit got different treatments for reasons neither of them could see on any screen. A safety rule you cannot explain is a bug with good intentions. It is gone.
Lean mass holds the veto
The other half of the identity has a different job. FFMI is checked against a floor: 14.6 for women, 16.7 for men, the lower bound of the fat-free mass range observed at normal BMI in a large reference population (Kyle et al., 2003). Below that floor, no deficit is prescribed regardless of how much fat mass is present. Calories hold at maintenance and the protein target rises to 2.2 grams per kilogram. Build before you cut.
This is the decision BMI cannot make, because inside the sum the case looks identical to ordinary overweight. And it is where the protein logic earns its place: protein follows the state, 1.8 grams per kilogram in balance, 2.0 in a deficit or surplus, 2.2 in recomposition. Since the app’s daily nutrition prompt leads with protein, the lean-mass finding arrives as an action for today rather than a label on a profile screen. A classifier that only renames you is a dashboard. The entire point of this one is that each state compiles to different instructions.
Where the split comes from
The identity needs exactly one estimate to operate: body fat percentage. Everything else is arithmetic. We compute it from two published equations and nothing else.
Relative fat mass, RFM (Woolcott and Bergman, 2018), uses waist and height: for men, 64 minus 20 times height over waist; for women, 76 minus the same term. The Deurenberg equation (Deurenberg et al., 1991) uses BMI, age and sex. When a waist is declared we blend them, weighted 75 to 25 toward RFM, because against DXA reference data RFM runs near unbiased, about 0.9 points high, where Deurenberg reads about 2.3 points low. Without a waist, Deurenberg stands alone, and that case matters enough to be the first limit below.
One boundary worth stating plainly: if you enter your own body fat figure, say from a DXA scan, the app stores and displays it, but the classifier does not consume it. It runs on its own estimate. That is a deliberate line we may yet revisit, and if we do, this newsletter is where the reasoning will appear.
The two limits
Every model earns the right to its outputs by admitting where it has no inputs. This one has two such places, and hiding either would be the exact sin the whole design argues against.
First: without a waist measurement, body fat comes from Deurenberg alone, which is a function of BMI, age and sex. At that point FFMI is fully determined by numbers you already typed in. Running the split would produce a composition claim derived from no observation of your composition, a circle dressed as a finding. So the app does not make one. The dose logic still runs on the best available estimate, but the model will not present the split as something it learned about your body. It has not earned that. Declare a waist and it has.
Second, and this one is open: the lean-mass veto uses absolute FFMI floors, and absolute floors do not transfer to heavy bodies. Heavier people carry more lean mass simply to move themselves, so a genuinely sarcopenic body at high BMI can clear 16.7 comfortably while being exactly the case the veto exists to protect. The guard does real work where it fires, and the cases it catches are genuine, low lean mass at normal or low BMI, classic sarcopenia, the population most harmed by a prescribed deficit. But its reach at high BMI is poor, and we know it. This sits open in our tracker. Whether a threshold exists that transfers, computable from the inputs a phone can honestly collect, is an open question, and it is possible the honest answer is that it requires a scan we cannot ask for. If that is the answer, the limit stays and so does this disclosure.
Neither limit is rare in this category. What is rare is printing them. Our position is that a coaching model’s credibility is the sum of the claims it declines to make, which is fitting, because that is also the argument of this entire piece.
What this buys
Strip it to the design stance and there are three commitments. Every number on screen comes from a formula we will name, and have now named: two body fat equations, one identity, thresholds re-derived from the WHO cutoffs rather than invented. The model acts only on what it has earned, and says so when it has not. And every classification compiles to an instruction for today, because a finding that changes nothing you do is decoration.
BMI survives all of this, incidentally. It is in the identity, it anchors the thresholds, it feeds Deurenberg. We did not throw the number away. We stopped taking orders from a sum.
Vantage is an iOS longevity coach. It reads Apple Health and returns one prioritized action per day for sleep, training and nutrition. The nutrition action is built on the model above.
The model, thresholds and constants here are mine, specified and verified against our own build. Drafting was done with an AI assistant working from my material. Errors are mine.

