Back to all posts
·4 min read·ai

Stop Retyping Programs. Start Importing Them.

The AI program importer in SWEATX parses PDFs, Excel, Word, and whiteboard photos into editable block-based training in seconds. Here's how it works, what it catches, and what it can't.

A coach reached out last week. He'd been retyping the same six-week block into TrueCoach every Monday morning. Six weeks × four athletes × fifteen exercises each day. That's not coaching — that's data entry with a whistle in your back pocket.

This is why we built the AI program importer. And why it's on the landing page, not hidden behind a paywall: if you can't see it work on the first visit, you have no reason to trust the rest of the product.

What you drop, what you get back

You drop any of these:

  • PDF — from TrainingPeaks, a coach's email attachment, a program you bought
  • Excel / XLSX — the classic spreadsheet format coaches have used since 2003
  • Word / DOCX — whatever your old mentor sent you
  • Plain text / markdown
  • Image — iPhone photo of a whiteboard, a scanned gym wall chart, a screenshot of Notion

Max 10 MB per file. The parser runs on Claude — not a regex heuristic. That matters because real program files are messy: inconsistent capitalization, three different notations for tempo on the same page, RPE written sometimes as "RPE 8" and sometimes "@8", rest periods that switch between seconds and minutes.

What comes back is a structured program tree:

Week 1
├── Day 1 — Upper A
│   ├── Warmup
│   │   ├── Row — 5min easy
│   │   └── Band pull-aparts — 3×15
│   ├── Strength
│   │   ├── Bench press — 4×5 @ RPE 8, 3-0-1-0 tempo
│   │   └── Pendlay row — 4×6 @ RPE 7
│   └── Accessory
│       └── DB incline press — 3×10
├── Day 2 — Lower A
│   ...

Every field — sets, reps, RPE, tempo, rest, weight, notes — is editable before save. The parser never invents what it can't read; ambiguous entries surface as warnings on the block, and the coach fills in the blanks.

What it catches that a human transcriber misses

Three things that coaches lose when retyping manually:

  1. Tempo notation survives the round trip. 3-0-1-0 stays 3-0-1-0 all the way to the athlete's phone. Most platforms strip tempo during parsing because they don't have a dedicated field for it — SWEATX treats eccentric intent as a first-class property of the set.

  2. RPE per set, not per exercise. If the program says "Squat 5×3 @ 7, 7.5, 8, 8.5, 9" the parser maps each RPE to its specific set. When the athlete logs the set in the mobile app, the prescribed RPE shows alongside their rating — you see the intended vs actual in the same view.

  3. Nested blocks as real objects, not copy-paste. If your program has a "Warmup A" block that appears in every Upper day, the parser recognizes repetition and creates a single reusable block. Edit the warmup once, every workout using it updates. This is what "block-based programming" actually means — not a marketing term, a real data model.

What it can't do (yet)

Honesty over sales pitch:

  • Hand-scrawled whiteboard photos with truly illegible handwriting — the model will flag sets as "unreadable" rather than invent numbers. You review, you fill in.
  • Programs split across multiple files — upload them one at a time, the system doesn't merge them automatically.
  • Exercises named in languages the exercise library doesn't know — parses fine but you may need to assign a demo video manually.

The workflow this unlocks

Before:

  1. Open source file (coach email, PDF, whiteboard photo)
  2. Create new program in platform
  3. Type week 1 day 1 exercises
  4. Type week 1 day 1 sets × reps × RPE × tempo
  5. Repeat for weeks 1–12 × days 1–5 × ~6 exercises/day = ~360 individual fields, by hand
  6. Assign to athlete, schedule each day manually
  7. Pray for typos

After:

  1. Drop the file on the landing page
  2. Review the parsed tree — fix anything the parser flagged
  3. Hit "Apply to athlete" or "Apply to group"
  4. 12 weeks × 5 athletes = 60 workouts scheduled atomically

A coach who imported a 12-week block last week told me this saved him ~2 hours of setup for the month. Over a year of normal program turnover that's a working week back.

Try it

The importer is on the SWEATX landing page. No signup needed to test — drop any program file and see what it returns. If it parses cleanly, creating an account is one click and the parsed program moves into your dashboard ready to assign.

If it doesn't parse cleanly, email help@sweatx.app with the file. We use every failure case to make the next parse better.

Stop Retyping Programs. Start Importing Them. | SWEATX