MealStack

Meal Plan Builder

Build personalized nutrition plans with real-time nutrient tracking and visual progress.

The meal plan builder is the core of MealStack. 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".

The plan list supports search (by title or client name), status filtering, and sorting (by recent activity, creation date, title, client name, or start date). Use the ⋯ menu on any plan to clone, archive, or assign a client directly from the list.

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. You can assign or change the client later from Plan Settings at any time.

Set duration and targets

Choose the number of days (1–28) and set calorie/macro targets:

TargetExample (weight loss)Example (muscle gain)
Calories1400 kcal2400 kcal
Protein70g150g
Carbs175g280g
Fat45g75g
Fiber25g30g

Client context panel

When a plan is linked to a client, a Client tab appears in the builder sidebar (open by default). This panel gives you constant access to the client's health profile without leaving the builder. A View Profile link at the top opens the full client profile in a new tab for quick edits.

Sections displayed:

  • Profile snapshot — name, age, gender, height, weight, BMI
  • Daily targets — calorie and macro progress bars showing actual vs target for the current day
  • Restrictions — allergies (red), intolerances (amber), dietary preference (blue)
  • Medical conditions — badges for diabetes, PCOS, thyroid, etc.
  • Cuisine preferences — preferred cuisines for culturally appropriate meal planning
  • Food likes & dislikes — green tags for likes, red tags for dislikes
  • Women's health — pregnancy status with trimester indicator and calorie adjustment (+0/+340/+452 kcal), breastfeeding status with baby age and calorie guidance (+400/+500 kcal), menstrual cycle regularity, menopausal status
  • Medications & supplements — current prescriptions and supplements (important for food-drug interactions)
  • Lifestyle — cooking skill, meal prep time, eating out frequency, stress level
  • Typical diet — what the client normally eats for each meal (helps you build plans they'll actually follow)

The women's health section shows trimester-specific calorie adjustments that match the Auto-Calculate formula. Use this as a quick reference when building pregnancy or postpartum plans.

Plan score

The Score tab in the builder sidebar rates your plan across up to 7 metrics. The overall score is the average of all applicable metrics.

MetricWhat it measuresScoring
Calorie AccuracyHow close each day's total is to the calorie target% deviation from target, averaged across days
Macro BalanceProtein, carbs, and fat vs their targetsAverage accuracy across all macros and days
Food VarietyUnique foods relative to total itemsHigher ratio = better score
Meal SpacingTime gaps between meals (needs meal times set)Days with 1.5h+ gaps between all meals
CompletenessHow many days have at least one mealPercentage of days with food items
Fiber AdequacyDaily fiber intake vs targetAverage % of fiber target met across days
Clinical SafetyCondition-aware flags based on clinical guidelinesFlags reduce the score

Clinical safety flags

When the client has medical conditions or special health status, the Clinical Safety metric checks for potential issues:

FlagTriggerReference
Pregnancy calorie floorTarget < 1800 kcal for pregnant clientsACOG minimum
Breastfeeding calorie floorTarget < 1800 kcal for breastfeeding clientsWHO minimum
Diabetes carb limitCarbs > 45% of calories for diabetic clientsADA guidelines
Kidney protein limitProtein > 20% of calories for kidney disease clientsNKF guidelines
Weight loss calorie floorTarget < 1200 kcal for weight loss clientsNutrient deficiency risk

Clinical Safety only appears when the client has relevant health data (pregnancy, medical conditions, or a weight loss goal). Plans without a linked client or without relevant conditions won't show this metric.

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 — stacked progress bar showing per-meal calorie contribution. Each meal gets its own colored segment with a compact legend below (e.g., "Breakfast 420 · Lunch 580 · Dinner 490"). Hover any segment to see the exact kcal. When no meals have items yet, falls back to a simple progress bar.
  • Macro mini-bars — compact progress bars for Protein, Carbs, and Fat showing actual vs target (e.g., "P 58/165g")
ColorMeaningRange
GreenOn track80–110% of target
AmberWatch60–80% or 110–130%
RedOff targetBelow 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.

Per-item nutrition

Every food and recipe item in the plan shows inline macro pills below its name:

  • P (protein), C (carbs), F (fat), Fb (fiber) — color-coded and shown in grams
  • Only non-zero values are displayed (no clutter from "P 0g")
  • Hover over any item name to see a nutrition hover card with a macro ratio bar, kcal, and all macros in a compact grid

Click any food name to open the Food Detail Sheet (full nutrient breakdown, portions, micronutrients). Click any recipe name to open the Recipe Detail Sheet (nutrition per serving, ingredients list, instructions).

The hover card gives you instant nutrition context without leaving the plan. Use it to quickly compare items — hover one, then hover another to see which has more protein.

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:

SlotTypical timePurpose
Early Morning6:00 AMPre-breakfast — water, nuts, seeds
Breakfast8:00 AMMain morning meal
Mid-Morning10:30 AMLight snack
Lunch12:30 PMMain afternoon meal
Evening Snack4:00 PMTea-time snack
Dinner7:30 PMMain evening meal
Bedtime9:30 PMOptional — 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.

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)

Recipe results appear in a separate section above foods, showing:

  • Recipe name with a violet indicator
  • Calories per serving — so you can compare recipes against individual foods before adding
  • Servings count, cuisine type, and ingredient count
  • "per serving" label for context

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.

Can't find a food? A "Create custom food" link appears at the bottom of search results. Click it to open the Quick Food Creator pre-filled with your search query. After creating, the food is automatically added to the meal slot — no need to search again. See Food Database → Quick food creator for details.

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:

AlertTriggerSuggestion
⚠ Protein lowBelow 50% of target"Add eggs, paneer, dal, or chicken"
⚠ Fiber lowBelow 50% of target"Add vegetables, whole grains, or fruits"
⚠ Fat highAbove 130% of target"Reduce oil, ghee, or fried items"
⚠ Calories highAbove 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.

Food safety warnings

The builder automatically flags foods that may be unsafe or inappropriate based on the client's health profile. Warnings appear as colored badges on food items in the meal slots.

Pregnancy safety

When a client is marked as pregnant, the builder warns about:

LevelFoods flagged
CriticalAlcohol, high-mercury fish (shark, swordfish), raw/undercooked foods (sushi, tartare)
WarningCaffeine (coffee, espresso — limit 200mg/day), raw papaya, excess pineapple

Medical condition warnings

When a client has medical conditions in their profile, the builder flags condition-specific foods:

ConditionFoods flaggedLevel
DiabetesSugar, jaggery, honey, sweets, mithai, maida, white bread, soda, juiceWarning
Kidney DiseaseHigh-potassium (banana, potato, spinach, coconut water), high-phosphorus (cola, processed meat)Warning
HypertensionHigh-sodium (pickle, papad, chips, namkeen, instant noodles, soy sauce)Warning
High CholesterolHigh saturated fat (ghee, butter, fried foods, pakora, samosa, red meat)Warning
Thyroid (Hypo)Raw goitrogens (raw cabbage, broccoli, cauliflower, soy) — cooking reduces goitrogensInfo
PCOSHigh-GI/refined foods (same as diabetes list)Info

Medication interactions

When a client has medications listed in their profile, the builder warns about food-drug interactions:

MedicationInteracting foodsLevel
WarfarinVitamin K-rich (spinach, kale, broccoli, green tea)Warning
MetforminAlcoholWarning
StatinsGrapefruitWarning
MAOIsTyramine-rich (aged cheese, soy sauce, kimchi, salami)Critical
LevothyroxineCalcium, iron, soy, coffee (reduce absorption)Info
ACE inhibitorsHigh-potassium (banana, orange, potato, coconut water)Info

All warnings are informational — they help you make informed decisions, not restrict your choices. Use clinical judgment to decide whether a flagged food is appropriate for the specific client.

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.

Food alternatives

For any food in a meal, you can add alternatives — "or" options the client can choose from if the primary item isn't available or preferred. This is the industry-standard approach used by platforms like Nutrium and Foodzilla.

How nutrient totals work

Only the primary food in each alternative group counts toward meal and day totals. The primary is always the first item in the group (topmost). Alternative items show their own calories inline but are excluded from all totals — nutrient bar, day calories, plan score, grocery list, and PDF summaries.

This means adding alternatives never inflates your nutrient numbers. The day stays accurate to what the client will actually eat — whichever option they pick.

Adding alternatives

Open the item menu

Hover over any food item in a meal and click the ⋯ dropdown menu.

Click "Add alternative"

The food search panel opens in alternative mode — the header shows "Add alternative to [meal name]".

Search and select

Find the alternative food and click it. It's added to the same group as the source item, positioned directly below it.

You can also click + Add option in the group footer to add more alternatives to an existing group.

Visual grouping

Items in the same alternative group are wrapped in a dashed border with "or" dividers between them:

  • The primary item (first in the group) shows a green dot (●) next to its name — this is the one counting toward totals
  • Alternative items show dimmed calorie values to indicate they're excluded from totals
  • The group footer has two actions: + Add option (add another alternative) and Ungroup (dissolve the group)

Changing the primary

Drag-and-drop reordering within a group changes which item is primary. The topmost item after reordering becomes the new primary, and nutrient totals update accordingly.

Removing and moving items

  • Removing an item from a 2-item group automatically dissolves the group — the remaining item becomes standalone
  • Moving an item to a different meal detaches it from its group. If the source group is left with only 1 item, that group is dissolved automatically

Alternatives in PDF exports

Day list layout — Alternative items appear indented below the primary with an italic "or" prefix and dimmed calories. A footnote explains: "Items marked 'or' are alternatives. Nutrition totals reflect the primary option only."

Week grid layout — Only primary items are shown (space is limited). Items that have alternatives show an asterisk (*). A footnote explains the convention.

Grocery list — Only primary items are included in the grocery list. Alternative ingredients are excluded to avoid over-purchasing.

Alternatives in the client portal

Clients see the primary food normally. Below it, a small chip shows "X alternatives" — tapping it expands the alternative options with an "or" prefix and a left border accent.

Each alternative has a "Use this" button. When a client taps it, the selected food swaps to the top position and the meal's nutrient totals recalculate instantly to reflect the selected item. The day totals and calorie ring on the home screen update too. Selections persist across page refreshes — the client doesn't need to re-select each time.

Use alternatives for common substitutions: "Brown rice" with alternatives "Quinoa" and "Roti". This gives clients flexibility while keeping your nutrient targets accurate — totals always reflect whichever option the client has selected.

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:

FieldVisible toWhere it appears
Client noteClient + practitionerPDF exports, client portal, meal cards
Internal notePractitioner onlyBuilder 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:

ActionLocationDescription
Grocery List🛒 icon buttonAuto-generated shopping list grouped by category
ActivateGreen button (draft plans)Publish the plan — auto-sends email to client
Send to ClientOutline button (active plans)Email the plan with optional PDF and personal message
CompleteOutline button (active plans)Mark the plan as completed
Back to Draft⋯ menu (active plans)Revert to draft — clears dates, removes from portal
ReopenOutline button (completed plans)Move back to draft for editing
RestoreOutline button (archived plans)Move back to draft for editing
Export PDF⋯ menuGenerate branded PDF with customizable sections
Clone Plan⋯ menuCreate an exact copy as a new draft
Save as Template⋯ menuSave for reuse across clients
Plan Settings⋯ menuEdit title, dates, targets, day labels
Archive⋯ menuArchive for reference

Plan settings

Open Plan Settings from the ⋯ menu (or click the gear icon) to manage all plan metadata in one place.

Client assignment

The top section lets you assign, change, or remove the client linked to this plan.

  • Assign a client — search by name and select. Nutrient targets auto-fill from the client's profile for any empty target fields.
  • Change — switch to a different client. Empty targets are filled from the new client's profile.
  • Remove — unlink the client (the plan keeps its content and targets).

Changes are saved when you click Save Settings — you can cancel to undo.

If you created a plan without a client (e.g., while drafting), you can assign one later without losing any work. The builder header also shows an "Assign a client" shortcut when no client is linked.

Duration

Use the +/− stepper to change the plan duration (1–28 days).

  • Extending adds blank days with the same meal slot structure as existing days.
  • Shrinking removes days from the end. If those days contain food items, a confirmation dialog warns you before deleting.

Schedule

  • Start date — sets when the plan begins. Auto-detects the weekday and relabels days accordingly.
  • End date — auto-calculated from start date + duration.
  • Day labels — choose weekday labels (Mon→Sun) or generic labels (Day 1, Day 2...).

Daily targets

Edit calorie and macro targets. If a client is linked, click Sync from client to pull the latest targets from their profile.

Nutrient visibility

Control which nutrients the client sees in PDFs and the portal. By default, all five nutrients (calories, protein, carbs, fat, fiber) are visible. You can hide specific nutrients per plan — useful for clients where showing certain macros isn't clinically appropriate (e.g., hiding fat for clients with eating disorder history, or hiding all macros for clients who feel overwhelmed by numbers).

Click any nutrient pill to toggle it off. Hidden nutrients are still tracked internally — the practitioner always sees all data in the builder. Only the client-facing outputs (PDF exports and portal) are affected.

LevelWhere to setBehavior
Practice defaultSettings → Export & BrandingApplies to all clients and plans unless overridden
Per-clientClient → Portal tab → Nutrient VisibilityOverrides practice default for this client
Per-planPlan Settings → Client Nutrient VisibilityOverrides client and practice defaults for this plan
Per-exportExport dialog → Visible NutrientsOne-time override for this specific PDF export

The cascade resolves from most specific to least: export override → plan → client → practice → all visible. Setting a level to "inherit" (null) falls through to the next level up.

Notes

  • Client notes — shown on PDF exports and the client portal.
  • Internal notes — visible only to you and your team.

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
  • Per-item macros (optional) — show P/C/F below each food item. Enable with the "Show item macros" toggle in the export dialog. Off by default to keep PDFs clean.
  • Daily nutrient totals
  • Nutrient summary across all days
  • Recipes (if included)
  • Grocery list
  • Recommendations (water intake, physical activity, foods to avoid)
  • Custom message
  • Visible nutrients picker — choose which macros appear in the PDF (calories, protein, carbs, fat, fiber)

Display preferences in exports

Your practice's display preferences (configured in Settings → Food Database → Visibility & Filters) automatically apply to PDF exports:

SettingEffect on PDF
Portion display: "Grams first"Shows "225g (1.5 katori)" instead of "1.5 katori (225g)"
Portion display: "Portion only"Shows "1.5 katori" without gram weight
Gram rounding: Nearest 10gRounds all gram values to nearest 10
Recipe portionsShows "1 serving (250g)" when gram weight is available

Per-item macros are hidden by default in PDFs. Enable them when the client needs detailed nutrition transparency — for example, clients tracking macros for bodybuilding or diabetes management. For most clients, meal-level and day-level totals are sufficient.

If the client's portal is enabled, a QR code linking to the portal is automatically added to the cover page. For PDFs without a cover page, the QR code appears at the end of the document.

Configure default export settings in Settings → Export & Branding. You can set your logo, disclaimer text, default section toggles, and default nutrient visibility.

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

StatusMeaningEditable?Actions available
DraftWork in progress — not shared with clientYesActivate, Archive
ActivePublished and assigned to clientYesSend to Client, Complete, Back to Draft, Clone, Archive
CompletedProgram endedNo (reopen to edit)Reopen → Draft, Clone, Next Cycle, Archive
ArchivedManually archived for referenceNo (restore to edit)Restore → Draft

Confirmation dialogs

All status transitions require explicit confirmation. Each dialog explains what will happen:

ActionWhat the dialog tells you
ActivateDates will be set automatically, activation email sent to client, plan visible in portal
CompletePlan marked as finished, client loses active view, can reopen later
Back to DraftDates cleared, client loses portal access, no email sent
ArchiveHidden from list, client loses access, can restore later

If the plan has no assigned client, the dialog omits client-specific warnings (email, portal) and only mentions the date changes.

One active plan per client

MealStack enforces a single active plan per client. If you try to activate a plan for a client who already has one active, you'll see a dialog offering two choices:

  • Cancel — keep the existing plan active
  • Replace & Activate — the existing plan is automatically marked as "Completed" and the new plan becomes active

This prevents confusion about which plan is current. If you have legacy duplicate active plans (created before this guardrail), the plan list shows an amber ⚠ warning icon with a tooltip: "This client has multiple active plans."

Deactivating a plan (Back to Draft)

If you accidentally activated a plan or need to make significant edits, use Back to Draft from the ⋯ menu. This:

  • Moves the plan back to Draft status
  • Clears the start and end dates (they'll be re-set on next activation)
  • Removes the plan from the client's portal immediately
  • Does not send any email notification to the client

When you Activate a plan, MealStack 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. The delivery dialog offers two channels side by side:

  • Send Email — emails the plan to the client with an optional personal message and PDF attachment
  • WhatsApp — opens WhatsApp with a pre-composed message containing the plan details and portal link (requires the client to have a phone number)

Both options support:

  • A personal message field (optional)
  • PDF attachment toggle (on by default)
  • Portal link inclusion (if the client's portal is enabled)

If the client has only a phone number (no email), you can still deliver via WhatsApp. If they have only an email (no phone), the WhatsApp button won't appear.

You can also copy the portal link directly from the ⋯ menu → Copy Portal Link in the plan builder toolbar.

Plans without a client assigned show a disabled "Send to Client" button with a tooltip explaining you need to assign a client first. Click "Assign a client" in the plan header or open Plan Settings to link one.

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, MealStack 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.

On this page