Why macro tracking apps are inaccurate: the data gap
Standard databases rely on flat, legal nutrition labels. KEXBI maps eight dimensions of food data to align your plate with circadian athletic recovery.
Standard databases rely on flat, legal nutrition labels. KEXBI maps eight dimensions of food data to align your plate with circadian athletic recovery.
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 for an athlete. 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 (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 an athlete 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 Architect 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 whether the protein triggers muscle protein synthesis, supports recovery, and covers micronutrient targets that a hard training week burns through faster than a sedentary week.
The microShadow block on the chicken breast document carries the numbers the packet skips. Amino acid resolution is not decorative. The 2.5 g of leucine threshold that clears the MPS window in trained adults [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 the athlete needs 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 wrong for the 30 to 60 minute post-workout window where the target is a fast protein that primes MPS immediately. Whey does that job. Chicken does not.
The centrepiece of the document is a mealSlotFit 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 a session sits heavy. |
| Post-workout immediate | 0.00 | Off limits. The MPS window calls for whey speed; chicken cannot land the leucine peak fast enough. |
| Intra-workout | 0.00 | Off limits. Solid protein during work degrades performance. |
The 11 scores are the engine's routing map for the food. When the Meal Architect plans a day, it does not ask "is chicken healthy". It asks "does chicken fit slot X for this athlete today". That question has 11 different answers per food. Averaging them into one number collapses the information.
Every field on the document carries a dataSources 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 reads USDA_AH102, pointing at Agricultural Handbook 102 [2]. Nothing on the record is user-contributed. Nothing is a scraped average.
Above that sits a small human-in-the-loop system. Once a registered dietitian has reviewed a food and signed off on the numbers, the reviewed fields join an agentLockedFields list. Subsequent enrichment passes are permitted to fill sparse fields but cannot overwrite the RD-locked ones. That is how the database avoids 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. Every food in the database carries it.
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 is from USDA Handbook 102 (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.