Product7 min read

Turn a written or photographed session into a structured plan with AI

To turn a written or photographed session into a structured plan with AI, paste the program text or upload up to 10 photos of a single session into Sprinting, and the AI reads it into structured exercises. It extracts a fixed set of per-set fields for each movement: reps, weight, distance, time, rest, tempo, RPE, effort percentage, height, power, and velocity. Sprinting is training periodization software for track and field coaches, and this parse is the bridge between the program you already write by hand and a plan your athletes can open on their phones.

Most coaches do not start from a blank app. They start from a system. It might be a Google Doc that has carried three seasons of edits, a printed sheet on a clipboard, a coach's notebook, or a photo of a whiteboard taken at the end of a session. The program already exists. The friction is retyping it into software, one cell at a time, which is why a lot of good programming never makes it off paper.

The goal of this guide is to remove that retyping step. The teaching here is about what a session actually contains and how to write it so it survives translation, whether the reader is a young athlete or a parser. The product part is short: Sprinting reads your existing format and turns it into structured work you can edit, assign, and track.

What a structured session actually holds

A written session is shorthand for a set of decisions. "6x60m @ 95%, rest 4min" encodes volume, distance, intensity relative to a reference, and recovery. Each of those is a separate variable, and each one carries training intent. The intensity prescription is the one coaches most often compress, because it is the one that matters most: organizing training by intensity zones rather than by raw load is central to how speed and special endurance are built across a season (Bompa & Buzzichelli, 2018).

When you move that shorthand into software, the question is how many of those variables the system can actually hold per set. If it can only hold reps and weight, a sprint session becomes a lie. Distance, target percentage, and rest are the session. Tempo and RPE may be the session on a weights day. The structure has to be wide enough for the sport, not just the weight room.

How the AI parse works in Sprinting

Open the Paste Program dialog and give it your session in one of three ways: paste the text, upload up to 10 photos or screenshots of a single session, or do both. Multiple screenshots are combined into one template, which matters when a program spans several pages or you photograph a notebook spread. The AI reads it all as one session and returns a list of structured exercises you can review before anything is saved.

For each set it pulls a fixed set of fields: reps, weight, distance, performing time, rest time, tempo, RPE, effort percentage, height, power, and velocity. It also classifies each movement by type, so a sprint, a lift, a plyometric, and a mobility drill are tagged differently and shown with the right columns. Exercises it has never seen are added to your library automatically, so the second time you parse a session that uses them, they are already known.

It reads grouping too. Superset and circuit labels like A1, A2, or Superset A become linked groups rather than loose rows. Subgroup headers from formats coaches already use, such as SS or MS prefixes, are carried onto the exercises that follow them, so a session written for a squad split into subgroups arrives split the same way.

Review before you trust. The parse returns a draft you confirm or correct, not a silent overwrite. If a value on the page was smudged or crossed out, the AI leaves that field empty rather than guessing.

Write your program so it parses cleanly

The parser is good, and the way you write makes it better. These are the same habits that make a program readable to a substitute coach or a 17-year-old, so the effort is not wasted on the machine.

Keep one movement per line with its prescription attached. Put the reference for intensity next to the number, so "@90% TM" or "@RPE 8" rather than a separate note three lines down. Use the percentage sign for effort and the letters RPE for rate of perceived exertion, because they mean different things and the parser keeps them separate. Write rest as its own token, like "rest 3min", so it does not get read as part of the work.

You writeAI extracts
6x60m @ 95%, rest 4min6 sets, 60m distance each, effort 95%, 4min rest, type sprint
Back Squat 5x5 @RPE 8, tempo 3-1-1-05 sets of 5 reps, RPE 8, tempo 3-1-1-0, type gym
Box Jump 4x3 @ 60cm4 sets of 3, height 60cm, type plyometric
A1 Trap Bar Deadlift 3x5 / A2 Broad Jump 3x3Two linked exercises in superset A

Effort percentage that updates itself

Effort relative to a personal best is more honest than absolute load, because it adjusts as the athlete changes. A target percentage of a one-rep max or a season-best time is the unit most periodization models actually program in (Bompa & Buzzichelli, 2018).

In Sprinting the effort percentage is not a static number you type once. For a lift it is computed live as weight divided by the athlete's reference, and for a sprint it is the reference time divided by the achieved time. Set a 90 percent target against a squat reference, and the displayed effort tracks the real weight entered against that athlete's current Training Max. When the reference moves, the meaning of the prescription moves with it, which is the point of programming by percentage in the first place.

From a parsed session to a periodized week

A single session is the start. A season is organized into phases, and block periodization concentrates a few qualities at a time before moving to the next block (Issurin, 2008). The reason to get a session into structured form is so it can live inside that larger structure instead of in a flat document.

Once a session is parsed, it sits inside a week, and a week sits inside a block. You can build a full week in a general preparation block, copy the entire week into the next block in one action, and modify it rather than rebuilding from scratch. The parse gets the raw material in. The periodization structure is what turns a pile of sessions into a plan.

Where the parse stops, and where other tools sit

Honest scope matters. The AI reads single scalar values for velocity and power when you write them, such as a target bar velocity or a watt number. It does not ingest a velocity-loss curve, a force-plate trace, or a set of timing-gate splits from a device export. Capturing rich device telemetry per rep is a separate problem, and Sprinting does not claim to solve it today. If your workflow is built around a velocity-based training device feeding live data, that is a different capability.

On the building side, other platforms approach the same problem differently. TrainHeroic, for example, positions itself as a way for coaches to move beyond spreadsheets into a single system (per trainheroic.com, accessed 2026-05-29). The distinctive thing Sprinting does at the front door is read your existing written or photographed session directly, including track-specific shorthand and subgroup headers, so the program you already have becomes the starting point rather than something you re-enter.

FAQ

Can I upload a photo of a handwritten or printed session?
Yes. You can upload up to 10 photos or screenshots of a single session, and the AI reads them as one program. If text and images both describe the same session, you can provide both and they are combined. Illegible or crossed-out values are left blank rather than guessed, so review the draft before saving.
Which fields does the AI actually pull from each set?
Reps, weight, distance, performing time, rest time, tempo, RPE, effort percentage, height, power, and velocity. It also classifies the movement type (sprint, gym, plyometric, drill, mobility, and others) and applies subgroup and superset grouping. It reads single velocity and power numbers, not full device telemetry like velocity-loss curves or timing-gate splits.
What happens to exercises the system has never seen before?
Unrecognised exercises are added to your library during the parse. The next time you import a session that uses them, they are already known and classified, so the library grows from your own programming rather than from a fixed preset list.
Will the AI rename my exercises or invent ones I did not write?
No. The parser is constrained so it cannot rename exercises you wrote verbatim and cannot invent movements that are not in your source. You can also add a short rules note to steer how it splits, groups, or labels work, but those two limits hold regardless.
Does the effort percentage stay correct as athletes get stronger or faster?
Yes, because effort is computed live against each athlete's reference. For lifts it is weight divided by the personal best, and for sprints it is the reference time divided by the achieved time. When the reference value changes, the displayed effort updates, so a percentage prescription keeps meaning the same thing across a season.

References

  • Bompa, T. O., & Buzzichelli, C. (2018). Periodization: Theory and Methodology of Training (6th ed.). Human Kinetics.Supports: A training season is organized into phases, and prescriptions are commonly programmed by intensity relative to a reference (percentage of max) rather than by absolute load alone.
  • Issurin, V. B. (2008). Block periodization: Breakthrough in sports training. Ultimate Athlete Concepts.Supports: Block periodization concentrates the development of a small number of motor qualities within a block before progressing to the next block.
  • TrainHeroic (2026). TrainHeroic (official site homepage). trainheroic.com, accessed 2026-05-29.Supports: TrainHeroic positions itself as a single system for coaches to move beyond spreadsheets; used only for the verifiable positioning statement, not for any feature-absence claim.