1 Client & Preferences
Everything is included by default. Tap an item once for "dislike" (avoided when possible), twice for "allergy / can't eat" (never shown), a third time to reset.
Check the Client Meal Log in the Coach Console, then paste recipe names here (one per line) to avoid repeats. They're deprioritised, not blocked — if there's nothing else that fits, they'll still show up, flagged "recently given".
2 Daily target
3 Meal split
4 Recipe options
How many matching recipes to generate per meal slot — for the client, or the on-screen results.
How this works
Every recipe has an anchor ingredient that scales roughly with serving size, plus flex ingredients that get nudged up or down to close the gap to your target (protein weighted highest, then calories, then carbs/fat). Fixed ingredients like seasoning never move. If a recipe hits its own scaling ceiling before reaching the target, the tool adds a compatible extra (egg, fruit, shake, etc.) to close the rest of the gap — it only does this when there's genuine headroom, not to fix an overshoot. Substitution notes are informational only: swapping an ingredient isn't applied automatically, since dietary tags live at the recipe level here, not per-ingredient. Results are flagged "within tolerance" at ±10% of target per macro. This runs off a static export of the Airtable nutrition base — if recipes change in Airtable, this tool needs to be regenerated to reflect it.