Most calorie apps hand you a number on day one and never revisit it. The number came from a formula that has never met you — it doesn't know how much you move, how you sleep, or what your body does with the food you eat. So the plan is wrong in some small way from the start, and it stays wrong.
Kinra works the other way around. It begins with the same kind of formula as a first guess, then quietly learns from two things it can actually observe: what you log, and how your weight trend moves. Over a few weeks it forms its own estimate of what you burn, and it adjusts your plan a little at a time. This page is the whole method — first in plain language, then with the math, cited to the research it's built on.
The plain-language version
A first estimate. When you start, Kinra needs somewhere to begin. It uses a standard resting-energy equation and an activity factor to make an opening guess at what you burn in a day.1 Treat it as a prior, not a verdict — it's the starting line, not the finish.
Trend weight, not the scale. Your weight on any single morning is noisy: water, sodium, a late dinner, the time you weighed in. Kinra smooths your check-ins into a trend so one heavy morning doesn't move your plan and a gap between weigh-ins doesn't distort it.
Two hidden numbers. Under the hood, Kinra runs a small statistical filter that keeps track of two things it can't observe directly: your true, de-noised body weight, and what you currently burn in a day. Each day, the food you logged nudges the modeled weight — eat less than you burn and it drifts down — and each weigh-in corrects the picture.2 The only way to explain "you logged around 2,000 calories a day and your trend held steady" is that you burn about 2,000 a day, so that is what the filter learns.
Slow on purpose. The burn estimate is only allowed to drift gradually. One big dinner, one skipped day, one strange weigh-in — none of these can swing it. That's a deliberate stability setting, not a side effect: a genuine change in your activity or metabolism still shows up, over a week or two, while day-to-day noise washes out.
A partial day can never drag it down. A day where you clearly only logged part of your food is treated as "at least this much," never as the whole day. Days you didn't log at all are simply absent. Either way, the estimate of what you burn cannot be pulled down by missing food — which is the single most common way this kind of math goes wrong.
Honest confidence. The filter tracks how uncertain it is and reports a range around the burn estimate, not just a single number. Confidence rises as complete logging days and weigh-ins accumulate and the range narrows. When the data is thin or your logs and your trend disagree, Kinra says so — and holds your target steady rather than guessing.
Steps help a little, and only if you share them. If step data is available, it gives the estimate a gentle extra signal, so a real change in how much you move can register a bit sooner. It is entirely optional: steps only nudge, your food log and weight trend are always the anchor, and the engine works fully without them.
Gentle weekly updates. Your burn estimate updates smoothly in the background every day, but your target only changes at the weekly check-in — and only when the engine is confident and the change is actually needed. Small drifts are left alone; corrections are damped, capped, and rounded; and a change is always a proposal you accept, never something applied silently. A steady target is a normal, healthy outcome, not a stall.
Guardrails. Targets stay above sensible floors and never sit too far below your estimated burn. After a long stretch in a deficit, or a stall, Kinra suggests a maintenance break instead of cutting lower.3
The math, for the curious
You never need to see any of this to use Kinra. But the engine is deterministic — the same inputs always produce the same output — so if you want to audit it, here it is.
The resting-energy prior
Kinra's opening guess uses the Mifflin–St Jeor equation for resting energy, multiplied by an activity factor.1 It's a sensible, well-validated start — and only a start.
REE = 10·kg + 6.25·cm − 5·age + sex
sex = +5 (male) / −161 (otherwise)
prior_TDEE = REE × activity_factor
Activity factors run from about 1.2 for a sedentary week to 1.9 for a very active one. This prior seeds the estimator with wide initial uncertainty — formula estimates of energy expenditure are only good to within a few hundred calories a day for an individual — and the filter converges away from it as your real data arrives.
Trend weight
Daily weight gets smoothed into a trend with a time-aware version of exponential smoothing — the same idea behind The Hacker's Diet,4 but adjusted so a gap between weigh-ins doesn't throw it off. The 10-day constant means the trend follows real change without chasing daily noise.
alpha = 1 − exp(−days_since_last_weight / 10)
trend = prev_trend + alpha·(weight − prev_trend)
Learned expenditure: a state-space filter
The burn estimate comes from a two-state filter (a Kalman filter, the standard tool engineers use to track a true signal through noisy measurements), advanced one calendar day at a time. The hidden state is your de-noised weight W and your daily expenditure E. Energy balance is the physics: each day, logged intake I moves the modeled weight, using roughly 7,700 calories per kilogram of tissue as a short-window approximation.5
predict, each day:
W ← W + (I − E) / 7700
E ← E (+ small process noise)
update, on a weigh-in:
correct W and E toward the reading,
weighted by how noisy scale weight really is
A few properties of this design carry the whole promise:
- Expenditure is a random walk with small process noise. That process noise is the single stability knob — it's the only thing that lets
Emove. Under normal data the estimate drifts by tens of calories a day per week, never hundreds, yet a genuine metabolic or activity change is still tracked within about one to two weeks. - Weigh-ins are weighted by their real noise. Day-to-day scale weight varies by roughly half a percent of body mass from fluid alone, so no single reading is taken at face value. A reading far out of line with the prediction — a salty dinner, a glycogen swing — is automatically down-weighted rather than trusted or silently discarded.
- Partial days are treated as a lower bound, never as truth. A day flagged incomplete, or with logged calories implausibly far below the current burn estimate, doesn't feed the energy-balance step with its too-low intake. The invariant, enforced structurally and tested: a partial or empty day can never lower the expenditure estimate.
- Steps are an optional, low-weight observation. When step data exists, it forms a soft, deliberately uncertain expenditure signal that lets the estimate respond a little faster to a sustained activity change. When it doesn't exist, the update is simply skipped and the filter runs on weight and logs alone — the estimate does not depend on steps.
- Uncertainty is computed, not styled. The filter carries a live covariance, so the range around the burn number is a real statistical interval that widens when data is sparse and narrows as complete days and weigh-ins accumulate. The high / medium / low confidence tier is derived from it.
The weekly adjustment
When Kinra changes your target, it compares your desired pace to your observed pace, halves the correction so it never overreacts, caps the change, and rounds it. Small differences sit inside a deadband and are left alone.
rate_error = desired_rate − observed_rate (kg/week)
delta = round10(rate_error × 7700 / 7 × 0.5)
delta = clamp(delta, −150, +150)
Low confidence, sparse logging, or logs and trend that disagree too much all hold the target instead. And a change to your goal or pace is always a confirmed action — the engine proposes, you accept.
What Kinra deliberately does not claim
Honesty is part of the method, so here is what the engine will not pretend to do. It does not claim a lab-precise measurement of your metabolism — even a perfect estimator is limited by the noise in scale weight and food logs, which research on this class of method puts at a meaningful margin per individual.67 It does not predict your long-term weight from a fixed rule, because bodies adapt as you lose.3 It does not require step or activity data — steps are an optional nudge, not a dependency. And it does not infer body-fat percentage or diagnose anything medical. When your logs and your trend disagree, it flags it gently, as a question about the data — never as an accusation about you.
This is general wellness support for healthy adults, not medical advice. Your targets are coaching estimates. For medical questions, pregnancy, or any history of disordered eating, talk with a qualified clinician.
References
- 1.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.
- 2.Hall KD, Sacks G, Chandramohan D, et al. Quantification of the effect of energy imbalance on bodyweight. Lancet. 2011;378(9793):826–837.
- 3.Rosenbaum M, Leibel RL. Adaptive thermogenesis in humans. Int J Obes (Lond). 2010;34 Suppl 1:S47–S55.
- 4.Walker J. The Hacker's Diet. Fourmilab. 1991.
- 5.Hall KD. What is the required energy deficit per unit weight loss? Int J Obes (Lond). 2008;32(3):573–576.
- 6.Sanghvi A, Redman LM, Martin CK, Ravussin E, Hall KD. Validation of an inexpensive and accurate mathematical method to measure long-term changes in free-living energy intake. Am J Clin Nutr. 2015;102(2):353–358.
- 7.National Institute of Diabetes and Digestive and Kidney Diseases. Research Behind the Body Weight Planner.
This is general wellness and nutrition support for healthy adults, not medical advice, diagnosis, or treatment. Calorie and macro targets are coaching estimates. Talk to a qualified clinician about medical questions, pregnancy, or disordered eating.