Skip to content

Import a plan from text, photo, or PDF

3 min read 3 tools Updated May 12, 2026

— Say it like this
Here's the PDF my coach sent — make it my plan.
2 more ways to say it
  • Import this — [paste plan text].
  • Parse this spreadsheet into a new diet plan called « Q2 cut ».
— Here's how it goes

What you'd see in chat

  1. Here's the PDF my coach sent — make it my plan.
  2. Parsed the PDF — 7-day plan, 3 meals + 1 snack, 2,150 kcal target with 165 g protein, 215 g carbs, 60 g fat. 28 meal items resolved against your food catalog, 2 unknowns flagged for you to confirm. Activate, or review the unknowns first?
  3. Coach plan — Q2

    No data yet

    0

    Days elapsed

    0

    Days tracked

    0

    kcal avg

    kcal delta

    0g

    Protein avg

    Protein delta

Your coach just emailed the new plan as a PDF. Or maybe it's a paragraph in a chat, or a spreadsheet someone shared. Instead of re-typing every meal into the agent, you hand it the source and watch it parse the structure.

What the agent needs to hear

Behind your sentence, the agent works backwards to three pieces: the source (a paste, an attached file, an image), a plan name (which it can infer if the source has one), and your confirmation of the parsed structure before it commits. The source carries most of the signal — the agent’s job is to turn whatever shape it’s in into days, meals, items, and macros. If the PDF has a header like « Q2 cut — 2,400 kcal », the agent lifts that as the name; if the source is nameless, you say it.

Import is a two-step flow — parse first, confirm second. The agent shows the parsed structure on a card, you push back on anything off, and only then does the plan land in your library. « Looks good, save it » is the green light; without it, nothing gets written.

Source formats and what gets parsed

Plain text paste is the fastest and most reliable. PDFs are handled inline — tables and structured layouts parse well, free-flowing prose can be ambiguous around meal boundaries. Photos run through OCR — fine for clean printed plans, less reliable on handwritten notes or low-light phone screenshots where digits blur. Spreadsheets are the gift: column structure (day, meal, item, grams, kcal) maps cleanly without ambiguity.

What the parser captures in every format: the plan name when present, macro targets, days, meals per day, and items with quantities. What the agent will stop and ask: foods it can’t match against your catalog. « There’s an item called ‘Mom’s banana bread’ — is that something you’ve saved? » You either point at an existing entry or describe it and the agent creates a custom food on the spot.

What the parsed plan becomes

Once imported and confirmed, the plan is structurally identical to one you built from scratch: a template that becomes active when you activate it. The history of how it got there doesn’t follow it forward.

Two parser-specific properties matter downstream. First, foods resolve to real catalog entries during import, so items in your plan aren’t free-text strings — they’re tracked references. Custom foods created during import (« Mom’s banana bread ») persist for future logs and recipes. Second, computed macros are validated against the source’s stated totals. If the source says « 2,400 kcal » but the items sum to 2,650, the agent flags the discrepancy on the preview card before saving — so you can adjust either the targets or the items, not discover the mismatch three weeks in.

When the agent gets it wrong

OCR is where most parse errors live. A « 250 » turns into « 25 » because the zero blurred, and one day’s calories quietly land at a tenth of actual. Spot-check a sample day’s totals against the source’s stated kcal; if they’re an order of magnitude off, fix it: « day 2 lunch — the chicken is 250 g, not 25 ».

Meal grouping is the second mode. The parser merged « 200 g chicken + 200 g rice » as one item, or split « scrambled eggs with toast » into two. Say it back: « two items, not one » or « eggs and toast are one meal item ». The third mode — a placeholder for an unresolved food — shows up with no macros computed. Name it: « create a custom food for ‘banana bread’, 280 kcal per slice ».

What makes the import worth keeping

Three things decide whether this imported plan reads correctly when you activate it: numbers match the source after parse (verify a sample day on the preview card — don’t assume the parser caught every digit), foods resolve to your catalog, not placeholders (placeholders mean macros won’t compute on log-from-plan, and adherence goes blind on those slots), and meal structure mirrors the source’s intent (three meals plus two snacks is not the same as five equal meals, even at matching macros). The system treats imported and from-scratch plans identically once saved; the difference is whether you trust the parser caught the source. Read the preview the way you’d read a contract before signing.

— Related