Skip to content

Import a routine from text, photo, or another app

3 min read 4 tools Updated May 12, 2026

— Say it like this
Here's the routine my coach sent — make it mine.
2 more ways to say it
  • Import this — [paste routine text].
  • Parse this screenshot into a new routine called « Spring strength block ».
— Here's how it goes

What you'd see in chat

  1. Here's the routine my coach sent — make it mine.
  2. Parsed the PDF — 4-day split, push-pull-legs-upper, 18 exercises mapped to your catalog, 1 unknown flagged. Stays as a draft until you nod. Activate now, or sort the unknown first?
  3. Coach block — Q2

    Strength

    4-day push-pull-legs-upper split, barbell-anchored, 4-week mesocycle.

    4
    Days
    16
    Exercises
    4
    Avg sets

Your coach handed you a new block as a PDF, or you've got the routine you used six months ago screenshot on your phone, or a teammate pasted theirs into a chat. Instead of re-typing every day's exercise list, you hand the agent the source and let it stand up the structure.

What the agent needs to hear

Behind your sentence, the agent works backwards to three pieces: the source (a paste, an attached PDF, a screenshot), a routine name (which it can infer if the source has a header like « Spring strength block »), and your confirmation of the parsed structure before it lands in your library. The source carries the signal — split shape, days, exercises, and set counts. The agent’s job is to turn whatever shape the source is in into days, exercises, and targets.

Import is a single-pass flow: the agent reads the source, builds the routine as a draft template, and shows you the preview card. Activation is a separate step — « activate it » is the green light that flips the new routine into your daily queue. Without that nod, the routine sits in your library and tomorrow’s session pulls from whatever was active before.

Source formats and what gets parsed

Plain text paste is the fastest and most reliable. PDFs are handled inline — tables with day headers and exercise rows parse well, free-flowing prose can blur the boundary between days. Screenshots run through OCR — clean printed plans parse cleanly, handwritten or low-light shots are where digits start drifting. Spreadsheets are the gift: a column for day, exercise, sets, reps maps without ambiguity.

What the parser captures in every format: the routine name when present, the split shape (4-day PPL+upper, upper-lower, full-body), exercise names per day, set counts, and rep targets when given. What the agent stops and asks about: exercises it can’t match against your catalog. « There’s a lift called ‘Jefferson curl’ — is that something you’ve tracked before, or want me to add it as a custom exercise? » You either point at an existing entry or describe it once and the agent creates it on the spot.

What the imported routine becomes

Once imported and confirmed, the routine is structurally identical to one you built from scratch: a template that drives the daily session queue only after you activate it, feeds the progression plan from the targets the source set, and anchors adherence reads once active. Past sessions don’t migrate to it — they stay tagged to whichever routine was active when they happened.

Two parser-specific properties matter downstream. First, exercises resolve to your catalog during import, so the lifts in your routine aren’t free-text labels — they’re tracked references that PR detection and progression reads can hang onto. Custom exercises created during import (« Jefferson curl ») persist for future routines. Second, set/rep targets carry forward into progression. If the source says « 5×5 on the compounds », that’s what week-one working weights are built around. Wrong targets at import means progression starts from the wrong place.

When the agent gets it wrong

OCR is where most parse errors live. A « 5×5 » turns into « 5×3 » because the second digit blurred, and one exercise quietly starts the block under-volumed. Spot-check a sample day on the preview card; if a set count looks off, fix it: « push day — bench is 5×5, not 5×3 ».

Day grouping is the second mode. The parser merged « bench press + overhead press » into one day when the source had them on separate days, or split a single day’s eight exercises across two. Say it back: « push and pull are separate days » or « those eight are all push day, not push plus accessories ». The third mode — a placeholder for an unresolved exercise — shows up with no targetMuscle tagged. Name it: « create a custom exercise for ‘Jefferson curl’, hamstrings ».

What makes the import worth keeping

Three things decide whether this imported routine reads correctly when you activate it: the split shape matches the source (a 5-day routine parsed as 4 days breaks the week before you train it), exercises resolve to your catalog, not placeholders (placeholders mean PR detection and progression read blind on those lifts), and set/rep targets mirror the source’s intent (5×5 strength block and 4×10 hypertrophy block are different shapes the progression plan reads differently). The system treats imported and from-scratch routines 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 — then activate.

— Related