Meal Plan Builder
Build personalized nutrition plans with real-time nutrient tracking and visual progress.
The meal plan builder is the core of MealCraft. Create day-by-day nutrition plans with real-time calorie and macro tracking, visual progress indicators, and smart nutrient gap alerts.
Creating a plan
Start a new plan
Go to Meal Plans and click New Plan. Give it a title — e.g., "Priya's Weight Loss Plan — Week 1".
Assign a client (optional)
Select a client to link the plan. When linked, the builder pre-fills nutrient targets from the client's profile (based on their goal, weight, and activity level).
You can also create plans without a client — useful for building templates or general-purpose plans.
Set duration and targets
Choose the number of days (1–30) and set calorie/macro targets:
| Target | Example (weight loss) | Example (muscle gain) |
|---|---|---|
| Calories | 1400 kcal | 2400 kcal |
| Protein | 70g | 150g |
| Carbs | 175g | 280g |
| Fat | 45g | 75g |
| Fiber | 25g | 30g |
Nutrient tracking
The nutrient bar at the top provides real-time visual feedback:
- Calorie ring — circular progress indicator showing percentage of daily calorie target. Green when 80–110% (on track), amber when slightly off, red when significantly under or over.
- Calorie bar — horizontal progress bar with exact numbers (e.g., "834 / 2202 kcal") and remaining amount
- Macro mini-bars — compact progress bars for Protein, Carbs, and Fat showing actual vs target (e.g., "P 58/165g")
| Color | Meaning | Range |
|---|---|---|
| Green | On track | 80–110% of target |
| Amber | Watch | 60–80% or 110–130% |
| Red | Off target | Below 60% or above 130% |
The color coding gives you instant visual feedback. Aim for all green — that means the day is well-balanced within the target range.
Meal timeline
A compact timeline above the meal slots shows your meal spacing visually:
- Dots represent each meal on a 5AM–11PM track
- Filled dots = meals with food items, empty dots = empty slots
- Shows eating window duration and fasting window (e.g., "15.5h eating · 8.5h fasting")
This is especially useful for intermittent fasting plans and ensuring proper meal spacing.
Day view
The default view shows one day at a time with meal slots:
| Slot | Typical time | Purpose |
|---|---|---|
| Early Morning | 6:00 AM | Pre-breakfast — water, nuts, seeds |
| Breakfast | 8:00 AM | Main morning meal |
| Mid-Morning | 10:30 AM | Light snack |
| Lunch | 12:30 PM | Main afternoon meal |
| Evening Snack | 4:00 PM | Tea-time snack |
| Dinner | 7:30 PM | Main evening meal |
| Bedtime | 9:30 PM | Optional — milk, supplements |
You can customize meal slots in Settings → Meal Structure. Add slots like "Pre-Workout" or "Post-Workout" for sports nutrition clients, or remove "Bedtime" if not needed.
Adding foods
Click Add food or recipe in any meal slot to open the search panel.
AI-powered suggestions
When there's a significant nutrient gap (>30% below target for any macro), an AI Suggestions section appears in the search panel. Click the "Suggest foods" button to get AI-powered recommendations based on the client's profile, dietary preference, and current nutrient gaps.
Suggestions are cached per meal type — switching between meals and back reuses previous results without another AI call. Click Refresh to get new suggestions.
AI suggestions are on-demand — they only fire when you click the button, not automatically. This keeps AI costs predictable.
Manual search
Search by English name — Type "brown rice" → results show Brown rice, cooked (USDA) at 123 kcal/100g.
Search by Hindi name — Type "dahi" → results show Curd / Dahi (IFCT) at 60 kcal/100g.
Prefix matching — Type "chick" → immediately shows Chicken, Chickpea, etc. without needing the full word.
Each search result shows:
- Food name with source badge (IFCT / INDB / USDA)
- Macro preview (calories, protein, carbs, fat) in consistent colors
- Hindi name (when available)
- Category name
- Calorie density badge — VL (very low, under 60 kcal/100g), L (low), M (medium), H (high, over 400 kcal/100g)
The first 15 results load instantly. If more results exist, a "Show more" button appears at the bottom with the total count (e.g., "Show more — 32 remaining"). Click to load the next page.
The calorie density badge helps with weight management plans. Look for VL and L foods (vegetables, fruits, lean proteins) to build volume-rich, low-calorie meals.
After adding, adjust the quantity and portion size (grams, katori, roti, cup, tablespoon, etc.).
Organizing items
Reorder within a meal
Hover over any food item to reveal a drag handle (⠿) on the left. Drag items up or down to reorder them within the meal — useful for putting the main item first, sides second, and beverages last.
Move between meals
Each item has a ⋯ menu with Move to → [meal name]. Use this to quickly move a food from one meal to another without removing and re-adding it.
Clear and remove meals
The ⋯ menu on each meal header offers:
- Clear all items — empties the meal without removing the slot itself
- Remove meal — deletes the meal slot entirely (confirms if it has items)
Add a meal slot
Click + Add meal slot below the last meal to add a missing meal type (e.g., Pre-Workout, Post-Workout, Bedtime). The dropdown shows only meal types not already in the current day.
Sports nutrition clients often need Pre-Workout and Post-Workout slots. Add them to specific days without changing your org-wide meal structure defaults.
Nutrient gap alerts
When daily targets are set and a nutrient is significantly off, the builder shows smart alerts at the bottom of the day:
| Alert | Trigger | Suggestion |
|---|---|---|
| ⚠ Protein low | Below 50% of target | "Add eggs, paneer, dal, or chicken" |
| ⚠ Fiber low | Below 50% of target | "Add vegetables, whole grains, or fruits" |
| ⚠ Fat high | Above 130% of target | "Reduce oil, ghee, or fried items" |
| ⚠ Calories high | Above 120% of target | "Consider smaller portions or lower-calorie swaps" |
These suggestions are India-specific — they recommend foods commonly available and culturally appropriate for Indian clients.
Day tabs with calorie totals
The day sidebar shows each day's name and total calories, making it easy to spot which days need attention without clicking through each one.
For active plans, the day that corresponds to today's date shows a green "Today" badge — so you always know which day the client is currently on in their portal.
Week view
Switch to week view to see all days side by side. Each day shows:
- Total calories with a color-coded progress bar
- Macro breakdown (P/C/F) in consistent colors
- Food items per meal slot
Click any day to jump back to the day view for editing.
Copying meals and days
This is the biggest time-saver in the builder:
- Copy a meal — click the ⋯ menu on any meal → "Copy to other days"
- Duplicate a day — hover over a day tab → ⋯ → "Duplicate Day"
Most clients eat similar breakfasts all week. Build one good breakfast, copy it to all days, then focus your time on varying lunch and dinner.
Alternative items
For any food in a meal slot, you can add alternatives — foods the client can swap in if the primary item isn't available.
Example: Primary item is "Moong dal cheela", alternatives could be "Besan cheela" or "Oats uttapam".
Notes and instructions
Add notes at any level of the plan — per food item, per meal, per day, or for the entire plan. Each note has two fields:
| Field | Visible to | Where it appears |
|---|---|---|
| Client note | Client + practitioner | PDF exports, client portal, meal cards |
| Internal note | Practitioner only | Builder UI only (never on PDFs or portal) |
Per-food notes
Click the 📝 icon on any food item to add notes. Common uses:
- "Boil for 10 minutes" (preparation instruction)
- "Can substitute with paneer" (alternative suggestion)
- "Use low-fat version" (client-facing tip)
- "Client mentioned bloating with this food" (internal clinical note)
The note icon is hidden by default and appears on hover. When a note exists, the icon stays visible with a colored dot indicator — green for client notes, amber for internal notes. Hover the icon to preview the note without clicking.
Per-meal notes
Click the 📝 icon in the meal header (next to the kcal total). Use for timing instructions like "Eat within 30 minutes of waking up" or "Post-workout — consume within 45 min."
Per-day notes
Click the 📝 icon at the top of the day view. Use for special day instructions like "Fasting day — only liquids until noon" or "High-carb day (training day)."
Plan-level notes
Open Plan Settings (⚙️) to add plan-level notes:
- Client Notes — general instructions shown on the PDF and portal (e.g., "Drink 3L water daily")
- Internal Notes — private notes for your reference (e.g., "Client prefers South Indian cuisine, review in 2 weeks")
Plan actions
The toolbar provides quick access to key actions:
| Action | Location | Description |
|---|---|---|
| Grocery List | 🛒 icon button | Auto-generated shopping list grouped by category |
| Activate | Green button (draft plans) | Publish the plan — auto-sends email to client |
| Send to Client | Outline button (active plans) | Email the plan with optional PDF and personal message |
| Complete | Outline button (active plans) | Mark the plan as completed |
| Reopen | Outline button (completed plans) | Move back to draft for editing |
| Restore | Outline button (archived plans) | Move back to draft for editing |
| Export PDF | ⋯ menu | Generate branded PDF with customizable sections |
| Clone Plan | ⋯ menu | Create an exact copy as a new draft |
| Save as Template | ⋯ menu | Save for reuse across clients |
| Plan Settings | ⋯ menu | Edit title, dates, targets, day labels |
| Archive | ⋯ menu | Archive for reference |
Grocery list
Click the 🛒 button to auto-generate a shopping list from all foods in the plan, grouped by category (grains, vegetables, fruits, dairy, etc.). Quantities are rounded to practical shopping amounts.
Share via copy, WhatsApp, or print.
PDF export
Click ⋯ → Export PDF to generate a branded PDF. Customize what appears:
- Cover page with practice logo and client name
- Client summary with health stats
- Day-by-day meal plan with portions and per-meal nutrients
- Daily nutrient totals
- Nutrient summary across all days
- Recipes (if included)
- Grocery list
- Recommendations (water intake, physical activity, foods to avoid)
- Custom message
Configure default export settings in Settings → Export & Branding. You can set your logo, disclaimer text, and default section toggles.
Templates
Save any plan as a reusable template:
Save as template
Open a completed plan → click ⋯ → Save as Template. Add tags like "weight-loss", "vegetarian", "1400-kcal".
Reuse later
When creating a new plan, start from a template. Go to Templates page, find your template, and click Use Template.
Build condition-specific starter templates — "Diabetes 1600 kcal", "PCOS Vegetarian", "Pregnancy Trimester 2" — and reuse them across clients. Customize per client after copying.
Plan statuses
| Status | Meaning | Editable? | Actions available |
|---|---|---|---|
| Draft | Work in progress — not shared with client | Yes | Activate, Archive |
| Active | Published and assigned to client | Yes | Send to Client, Complete, Clone, Archive |
| Completed | Program ended | No (reopen to edit) | Reopen → Draft, Clone, Next Cycle, Archive |
| Archived | Manually archived for reference | No (restore to edit) | Restore → Draft |
When you Activate a plan, MealCraft automatically sets the start and end dates (if not already set) and sends an activation email to the client — "Your meal plan starts today." You can disable this email in Settings → Notifications.
Reopening and restoring plans
- Completed → Reopen: Moves the plan back to Draft so you can edit it. Start and end dates are cleared — they'll be re-set when you activate again.
- Archived → Restore: Same as reopen — moves to Draft for editing.
This means no plan is ever a dead end. You can always go back and revise.
Sending plans to clients
After activating a plan, click Send to Client in the toolbar to email it:
- Add a personal message (optional)
- Toggle PDF attachment on/off
- If the client has a phone number, a WhatsApp share link is generated automatically
The activation email is sent automatically when you click Activate. Use "Send to Client" for follow-up deliveries — for example, after making changes to an active plan, or to re-send with a personal note.
Cloning and next cycle
Instead of building every plan from scratch, clone an existing one:
- Clone Plan — creates an exact copy as a new Draft. Available from the ⋯ menu in the builder, the plan list, or the client's Plans tab.
- Create Next Cycle — clones a completed plan and shifts the dates forward. If the original plan ended on Friday, the new one starts Saturday. Available on completed plans in the client's Plans tab.
Cloned plans track their lineage — each clone increments the version number (v2, v3, etc.) and links back to the source plan via parentPlanId.
Version numbers appear next to the plan title in the client's Plans tab, making it easy to see the iteration history at a glance.
Plan expiry
When an active plan passes its end date, MealCraft shows visual indicators:
- Builder header — "Xd remaining" (amber when ≤3 days, red when overdue)
- Plan list — expiry badge next to the status
- Plan settings — status section with countdown
- Expired banner — a red banner appears in the builder with two actions: Complete or Next Cycle
Don't let plans sit in "active" after they expire. Either mark them as completed or create the next cycle — this keeps your plan list clean and gives clients clear expectations.