Meal timing for training: why context beats macros
There is no such thing as a universally healthy food; there is only food that fits the specific physiological slot of your training day.
There is no such thing as a universally healthy food; there is only food that fits the specific physiological slot of your training day.
A generic tracker treats food as a list of macros. It does not know when in the day the food is landing, and it does not know whether the food fits that moment. The result is meal plans built from macro totals that read fine on paper and land wrong on the plate. Salmon at 7 am. Rice at 10 pm. Chicken 30 minutes before a workout. All arithmetically valid, all timing-blind.
KEXBI's food database carries a small but load-bearing set of slot-fit scores on every food. It is a 0 to 1 score for each of 11 named meal windows. The scores are derived, not user-remembered, and they let the meal plan route foods to the right time of day without asking you to know the physiology behind it. This is the fourth article in the fuel-database series.
A day of eating for someone who trains does not have three windows. It has closer to eleven. Some are anchor meals (breakfast, lunch, dinner, snack). Some are training-window slots that appear only on training days (pre-workout at T minus 120, T minus 60, T minus 30, intra-workout, post-workout immediate, post-workout meal). Some are peripheral slots that carry outsized weight for recovery (pre-bed).
Each slot has its own brief in KEXBI's rules. Pre-workout at T minus 30 is a fast-clear window: fat is off, fibre is off, complex protein is off, only liquid or fast carbs land. Pre-bed is a slow-protein window: casein-adjacent slow protein is on, high-GI carbs are off. Post-workout immediate is an insulin-sensitive window: fast carbs and fast protein land, fat is off. Reading a food as "healthy" collapses these into one bucket. Reading a food as "0.97 lunch, 0.0 post-immediate, 0.33 pre-bed" respects the slots.
Each per-slot score is derived from a small number of inputs that live on the food document itself. Five of them do most of the work.
Fast under 60 min, moderate 60 to 120, slow over 120. Anchors moderate; peri-workout wants fast; pre-bed wants slow.
Low, medium, high. Pre-workout medium; post-workout immediate high; pre-bed low.
Grams per 100 g. T minus 30 caps fat at 8 g. Anchor slots tolerate fat freely.
Grams per 100 g. T minus 60 caps fibre at 5 g. Higher fibre is fine at anchors.
Whey, casein-dominant, casein-moderate, lean, fatty, plant, none. Whey for post-immediate; casein-adjacent for pre-bed; lean for anchors.
The scoring function reads these five values off the food and generates a per-slot number by applying the slot's brief. A slot that wants fast digestion, low fibre, and low fat (T minus 30 pre-workout) reads chicken breast and returns 0.10. The same slot reads dextrose and returns 0.90. The same food (chicken breast) at a slot that wants moderate digestion, lean protein, and cultural fit (lunch) reads 0.97. Nothing about the food changed; the slot changed.
The clearest way to see the routing map is to lay one food across all 11 slots. Chicken breast is a useful case study because it is a classic anchor protein that is also just as clear about which slots it does not fit.
| Slot | Score | Reading |
|---|---|---|
| Lunch | 0.97 | Anchor fit. Moderate digestion clears by mid-afternoon. |
| Dinner | 0.97 | Anchor fit. Cultural default, lean protein. |
| Post-workout meal | 0.73 | Good fit. Lean protein for the rebuild window at 60 min plus. |
| Pre-bed | 0.33 | Marginal. Moderate digestion misses the pre-bed casein preference. |
| Pre-workout T-120 | 0.30 | Marginal. Slot usually calls for slower carbs and higher volume. |
| Breakfast | 0.27 | Low. Cooking effort and cultural convention penalise. |
| Snack | 0.27 | Low. Requires cooking; not a typical snack. |
| Pre-workout T-60 | 0.20 | Low. Digestion too slow for the tighter window. |
| Pre-workout T-30 | 0.10 | Off limits. Solid protein too close to training sits heavy. |
| Post-workout immediate | 0.00 | Off limits. KEXBI's rule prefers fast protein here. |
| Intra-workout | 0.00 | Off limits. Solid protein during work can sit heavy. |
The pre-bed slot has a specific physiological brief. You are heading into a sleep window where hormone release peaks in the first three hours [1]. KEXBI's feeding aim in that window is to hold amino acid availability across the sleep without spiking insulin. That combination lands on casein-adjacent slow protein: cottage cheese, Greek yoghurt, milk, whey-casein blends. Research suggests a pre-bed protein feed can add to overnight muscle repair.
Chicken breast is a lean, moderate-speed protein. Its amino-acid release is not the slow drip KEXBI's pre-bed rule prefers. The score reads 0.33: not banned, not preferred. The meal plan does not offer chicken breast for the 10 pm slot unless nothing better is on the pantry. The alternative shows up higher in the ranking, and you do not need to know why.
KEXBI's post-workout immediate rule rewards speed. Insulin sensitivity is elevated and muscle glycogen is depleted. Total daily protein and how it is spread matter most [2]; KEXBI still prefers fast protein straight after training. The routing target is a fast carb (dextrose, banana, white rice, sports gel) paired with a fast protein (whey isolate). KEXBI therefore places solid moderate-speed protein at 60 to 90 minutes post-training, in the post-workout meal slot, rather than at the 15-minute mark.
Chicken breast reads 0.00 for the post-workout immediate slot. The score is not being harsh; it is being honest. Whey isolate reads 0.95 for the same slot. The engine picks whey when it can, chicken when your plan or pantry does not carry whey, and the post-workout meal at 90 minutes when the immediate window has already closed.
Each per-slot score comes from a written rubric, anchored in sports-nutrition consensus statements [3,4]. A food's scores are set once, when it enters the database, from its digestion speed, glycemic index, fat, fibre and protein, and then stored on the food. The same food carries the same scores until its data is refined, and the daily maths that uses them runs on fixed rules.
The result is a set of scores built around each slot's brief. It handles edge cases (fasted training, keto adaptation, plant-only diets) through modifier layers that adjust the base scores by context. It is auditable: the reason a specific food scored 0.27 at breakfast is traceable to the rubric line that produced it, not buried in a model weight nobody can inspect.
A meal plan built without slot-fit scoring is a meal plan built on macro totals alone. The totals can be right and the day can still land wrong. Chicken breast three times on a training day looks fine on paper and misses the post-workout window, misses the pre-bed window, and offers no fast carb around the workout. That is not a failure of the person's choice. It is a failure of the tool that gave them the choice.
KEXBI's food database carries the routing map on the food, not in the app's marketing copy. Every food, 11 slot scores, derived from digestion speed, GI, fat, fibre, and protein type, anchored in consensus statements. The meal plan uses the map. You see the meal. The maths lands in the background.
The 11-slot taxonomy is KEXBI's implementation choice. The per-slot rubric is anchored in Kerksick 2017 and Thomas 2016 for the training-window slots, in Van Cauter 2004 and Res 2012 for the pre-bed window. The example chicken breast scores are the live entries in KEXBI's food database; scores may change as the underlying food data is refined.