Why macro tracking apps are inaccurate: the data gap
Standard databases rely on flat nutrition labels. KEXBI maps eight dimensions of food data to match your plate to your training and your body clock.
Standard databases rely on flat nutrition labels. KEXBI maps eight dimensions of food data to match your plate to your training and your body clock.
Pick a chicken breast out of the fridge. The packet shows a nutrition line: about 120 kcal per 100 g, 23 g of protein, 1.2 g of fat, no carbs. A shelf-life date, an origin, a barcode. That is the whole record most food apps carry too, sometimes with a handful of missing decimals.
KEXBI carries a different document for the same food. The macros are there. So are seven other dimensions: cooked-state macros, per-method transforms, micronutrients at amino-acid resolution, glycemic data, gastric residence, protein type, meal-slot fit across 11 windows, and verified provenance. The purpose of the depth is not thoroughness for its own sake. It is what turns a food from a number into a decision the engine can make.
The label on the packet is a legal document, not a coaching one. It carries the macronutrient breakdown that regulation requires: energy, protein, fat (of which saturates), carbohydrate (of which sugars), fibre, salt. A shelf-life date. The country of origin. A short ingredients line. For a whole food like chicken breast, that is enough for a legal shelf, and it is what most tracker apps store.
The packet answers one question: what did you eat, in macro terms. It does not answer whether the food fits the meal slot, whether cooking changed the numbers, or what part of the micronutrient profile drives recovery. Those questions matter if you train. The document carries the answers.
Chicken breast is stored in KEXBI on a raw basis, matching the USDA SR Legacy convention [1]. Raw is what you buy. Raw is what the packet lists. But raw is not what you eat.
Cooking a chicken breast drives off water. A 100 g raw breast lands closer to 75 g on the plate. The macros do not disappear with the water; they concentrate. That is the yield factor. For skinless chicken breast, the factor sits at roughly 0.75, sourced from USDA Agricultural Handbook 102 [7] and Bognár's yield tables [2]. It is a KEXBI implementation value calibrated against that reference, not a value from any single trial.
Weighing 100 g of cooked chicken and looking up "chicken breast" in a generic tracker often returns the raw number. The result is someone who thinks they ate 23 g of protein when the plate carried 31. Across a day, that is enough to under-count a lean-mass protein target by 30 or 40 g. KEXBI stores raw, materialises cooked when the user records what they ate, and never asks the reader to hold both numbers in their head. The next article in this series covers the raw-vs-cooked problem in full.
Yield is not the only thing cooking changes. Method matters. Grilled chicken breast drops fat slightly; pan-fried gains fat from the oil; deep-fried gains fat and carbs from the batter. KEXBI stores a macrosCookedByMethod block on every protein that has a meaningful method-to-macro delta, with nine standard methods covered: boiled, steamed, grilled, baked, roasted, pan-fried, deep-fried, microwaved, pressure-cooked. Air-fried is added where the difference matters.
The meal plan uses this to pick methods per slot. A pre-workout window at T minus 60 pulls boiled or steamed protein: fast to clear the stomach, minimal added fat. An anchor slot (lunch or dinner) pulls grilled or baked: the flavour lands, and the T minus 3 hour clearance window absorbs the moderate fat. A post-workout meal one to two hours out preserves lean-protein selection: boiled or steamed if the aim is a fast rebuild, grilled if the aim is satiety [5]. The method is not a garnish. It is a routing decision.
The packet lists no leucine content. It lists no B3. No selenium, no phosphorus, no potassium. Yet those are the fields that matter for how well the protein supports muscle protein synthesis and recovery, and whether it covers micronutrient targets that a hard training week burns through faster than a sedentary week.
The micronutrient block on the chicken breast document carries the numbers the packet skips. Amino acid resolution is not decorative. The roughly 2.5 g leucine dose that research links to a strong muscle protein synthesis response [6] is only measurable if the leucine per 100 g is stored per food, not averaged into a generic "protein" bucket.
Same food, different lens. The nutrition label sees calories and protein. KEXBI sees the amino acid signature and the recovery-relevant micros. The engine uses the second view to decide whether the meal covers the day's leucine, whether you need a B-vitamin lift, and whether the food pairs well with sleep or training.
Two more fields the packet does not carry. Gastric residence is the digestion speed of the food (fast under 60 minutes, moderate 60 to 120, slow over 120). Protein type classifies the protein into a functional bucket: lean, fatty, whey, casein-dominant, casein-moderate, plant, or none.
For chicken breast, the classification reads moderate digestion, lean protein. That combination is why chicken lands as a textbook lunch and dinner slot fit and why it does not land as a post-workout immediate fit. The 60 to 120 minute clearance window makes it ideal for anchor slots (the meal has time to digest before the next event); it makes it a weaker fit for the 30 to 60 minute post-workout window, where KEXBI's default is a faster protein such as whey. Total daily protein and how it is spread matter more than any one slot.
The centrepiece of the document is a meal-slot fit block: a 0 to 1 score for each of 11 named slots. Breakfast, snack, lunch, dinner, pre-bed, pre-workout at T minus 120, T minus 60, T minus 30, intra-workout, post-workout immediate, post-workout meal. Each score is derived from the digestion speed, GI, fat load, fibre load, and protein type described above, then anchored against sports-nutrition consensus [3,4,5]. The result is not one number but eleven.
| Slot | Score | Reading |
|---|---|---|
| Lunch | 0.97 | Anchor fit. Moderate digestion clears before evening; lean protein at a peak socialising slot. |
| Dinner | 0.97 | Anchor fit. Same reasoning; the dominant Western cuisine slot. |
| Post-workout meal (1 to 2 h) | 0.73 | Good fit. Lean protein for the rebuild window, moderate speed acceptable at 60 min plus. |
| Pre-workout T minus 120 | 0.30 | Marginal. Moderate digestion clears in the window, but the slot usually calls for slower carb and higher volume. |
| Pre-bed | 0.33 | Marginal. Not slow enough to hold amino acids overnight; casein-moderate foods outscore. |
| Breakfast | 0.27 | Low fit. Cooking effort and cultural convention penalise; raw chicken unacceptable. |
| Snack | 0.27 | Low fit. Requires cooking; not a typical snack food. |
| Pre-workout T minus 60 | 0.20 | Low fit. Digestion too slow for the tighter window. |
| Pre-workout T minus 30 | 0.10 | Off limits. Solid protein this close to training sits heavy. |
| Post-workout immediate | 0.00 | Off limits in KEXBI's scoring. The plan prefers a faster protein here; chicken digests more slowly. |
| Intra-workout | 0.00 | Off limits. Solid protein during work can sit heavy and hold you back. |
The 11 scores are the engine's routing map for the food. When the meal plan is built for a day, it does not ask "is chicken healthy". It asks "does chicken fit slot X for this person today". That question has 11 different answers per food. Averaging them into one number collapses the information.
Every field on the document carries a source record. Macros on the chicken breast entry read VERIFIED for calories and protein. Micronutrients read USDA, meaning the source is USDA FoodData Central [1]. Yield factor points at USDA Agricultural Handbook 102 [7]. Nothing on the record is user-contributed. Nothing is a scraped average.
Above that sits a small check by hand. A small number of foods have had their slot scores checked and edited by hand, and those fields join a locked fields list. It covers a handful of foods, not the whole database. Subsequent enrichment passes are permitted to fill sparse fields but cannot overwrite the locked ones. That is how the database is designed to avoid drift over time.
None of the above is visible in the app. The user sees the food, picks it, records it. The document under the surface is what makes the plan the food ends up in coherent.
The nutrition label on a chicken breast is legally sufficient for a shelf. It is not sufficient for a plan.
KEXBI holds macros in two states, per-cooking-method transforms, micronutrients at amino-acid resolution, glycemic data, gastric residence, protein type, meal-slot fit across 11 windows, and verified provenance. Eight dimensions of the same food, connected. That is the depth per ingredient. It is the standard every food in the database is built to.
The next four articles in this series each take one of those dimensions apart in depth: raw vs cooked, glycemic load timing, meal-slot fit, and the moat against generic trackers.
The chicken breast document values quoted throughout (macros, yield factor, micronutrients, meal-slot fit scores) are the live entries in KEXBI's verified pantry dataset, sourced from the references above and, where noted, calibrated as KEXBI implementation values against the cited literature. The 0.75 yield factor for skinless chicken breast draws on USDA Handbook 102 and Bognár 2002. The 11-slot meal-fit taxonomy is KEXBI's implementation choice; the underlying rules for what qualifies a food for a slot are anchored in Kerksick 2017 and Thomas 2016. Amino acid values per 100 g are drawn from USDA FoodData Central.