The receipts

No magic numbers. Working shown.

Every prescription in COOKED traces to published sports-science ranges applied to your data — and the app shows the arithmetic on request.

“How we got this number”, everywhere

Tap any target and see the inputs: your weight, the session, your sweat rate, the forecast, the caps that bounded it. If we can't show the working, we don't ship the number.

  • Every fuel card carries its derivation
  • Safety caps are visible, not silent
  • Estimates say they're estimates
650 ml/hr because
Sweat test720 ml/hr
Apparent temp29°
Safety capapplied

Carbs: a ceiling you earn, not a number you pick

Hourly carbs are banded by how trained your gut is — because absorption, not willpower, is the limit. Intensity scales the day: hard sessions burn glycogen disproportionately, so the same hour costs more.

  • Beginner 50 · Intermediate 65 · Advanced 90 · Elite 120 g/hr
  • Intensity factor: easy ×0.85 · moderate ×1.0 · hard ×1.15
  • Your logged absorption raises the ceiling over time — gut training, measured
Your carb ceiling
90G / HR · ADVANCED
Elite tier120 g/hr

Fluid: measured, scaled, capped

Your sweat rate comes from the in-app sweat test — weigh in, train, weigh out. Conditions scale it as a ratio, so a rate measured on a hot day is never re-inflated for heat it already included. Then a hard cap, because over-drinking dilutes blood sodium and hyponatremia is more dangerous than mild dehydration.

  • Conditions multipliers: cold ×0.85 · mild ×1.0 · hot ×1.2 · very hot ×1.35
  • Caps: 1,200 ml/hr on the bike · 1,000 running · 800 swimming
  • Deliberately conservative — the cap is a safety feature, not a target
Sweat test
Pre-weight72.4 kg
Post-weight71.6 kg
Fluid drunk500 ml
Sweat rate1.3 L/hr

Sodium: your sweat's concentration, not a stock answer

Sodium need = sweat volume × sweat concentration. A test strip beats everything; without one, self-reported saltiness maps to the published concentration bands. Either way, the hour is capped — more salt than the gut can move just sits there.

  • Bands: not salty 500 · average 800 · salty 1,200 · very salty 1,500 mg/L
  • Hard hourly cap at 2,500 mg
  • Gated so easy short sessions don't prescribe pointless salt
Your sweat
1,200MG SODIUM / L
Sourcesalty · self-report
Hourly cap2,500 mg

Heat: the forecast at your start line, humidity included

Dry 26° and humid 26° are different races. COOKED computes Steadman apparent temperature — AT = T + 0.33·e − 4, where e is vapour pressure from humidity — at the hour and place you actually start, and only ever adjusts upward.

  • Tiers: mild <20° · hot 20–28° · very hot >28° apparent
  • Forecast pulled for your home location and each race's start line
  • Cold days change nothing — no noise, no downward nudges
Race morning
Air temp26°
Humidity78%
Feels like31° · very hot
Fluid adjusted+35%

The carb-load: six days, ramped, not one giant pasta night

Race week runs a per-kilo ramp that peaks at 10 g/kg on the final two days for an A-race — with fibre guidance so the load doesn't backfire. Shorter or lower-priority events get proportionally lighter ramps.

  • Full load: 6 · 6 · 7 · 8 · 10 · 10 g/kg across the six days out
  • Scaled to race priority and duration — a 5k doesn't get an Ironman load
  • Race-day breakfast handled separately, timed to the gun
Days to race → g/kg
6 · 5 days out6
4 days out7
3 days out8
2 · 1 days out10

Protein: the endurance evidence, encoded

A baseline in the middle of the endurance range, raised when the evidence says raise it: age, energy deficit, big days. The highest applicable rule wins — and the app tells you which rule fired.

  • Baseline 1.6 g/kg · over-50 1.8 · 150-minute-plus days 1.8 · deficit 2.0
  • Energy from Mifflin-St Jeor, the clinical standard — pinned to textbook values in tests
  • Older muscle needs a bigger stimulus for the same response — so the app gives it one
Today's protein
1.8G / KG · BIG DAY
Rule fired150+ min training
Baseline1.6 g/kg

When the race goes sideways, the maths holds

Miss half an hour of feeding and the plan repays the deficit across the hours you have left — bounded by a gut-headroom ceiling of 1.35× your rate and a hard +25 g/hr catch-up cap, so recovery never becomes the thing that ends your race.

  • Deficit repayment, never wishful “just eat more”
  • Catch-up capped at +25 g/hr above plan
  • Total absorption never exceeds 1.35× your trained rate
30 min missed
Deficit−45 g
Repay over2 hours
New rate≤ ceiling

Your N of 1 beats the average

Population averages start the model; your data finishes it. Sweat tests, logged sessions and race outcomes pull every number toward the athlete you actually are.

  • In-app sweat test replaces the estimate
  • Learned carb tolerance from what you actually absorb
  • Race results feed back into the next plan
Model inputs · you
Sweat ratemeasured
Carb tolerancelearned
Heat responselearned

Pinned by two and a half thousand tests

The maths isn't vibes. Automated invariants prove the model can't contradict itself: harder never prescribes less, hotter never raises the carb ceiling, a lighter athlete never gets more, totals always equal rate × hours, and junk input can never produce a broken number.

  • 2,500+ automated tests across the engine
  • Monotonicity proven in every direction that matters
  • Textbook reference values pinned exactly
Invariants
Harder ⇒ less fuelimpossible
Hotter ⇒ higher ceilingimpossible
NaN on junk inputimpossible
Start your 14-day free trial

Everything unlocked · No card required