---
title: "Create an AI Training Plan Yourself: Using ChatGPT, Claude and Gemini Properly"
description: "Create an AI training plan in 6 steps: a guide with prompt templates to copy, a model comparison and a checklist for testing the output."
url: https://www.thefitfuturist.com/en/training-analysis/create-training-plan-with-ai/
locale: en
author: Christopher Klenk
published: 2026-02-11T08:42:41.000Z
modified: 2026-07-26T12:01:11.763Z
---

# Create an AI Training Plan Yourself: Using ChatGPT, Claude and Gemini Properly

Building an AI training plan with ChatGPT, Claude or Gemini works pretty well these days. But if you want more than a plan that could have come out of any magazine — one that actually fits you and your goals — there are a few things to get right. Which model you pick is not the important part. What matters more: **an AI training plan is only as good as the context you give it.** How that works is what follows. The principles are universal, whether you start today or have trained for years, and whether you use ChatGPT, Claude, Gemini, Mistral or any other LLM (large language model).

:::tldr
An AI training plan stands or falls with your input, not with your choice of model. Write "build me a training plan" and you get a plan that could sit in any magazine. Give it your goal, equipment, training level and limitations and you get something usable. Add training principles like progressive overload, periodisation and cross-training and you get a genuinely good plan. This guide walks you through it — with prompts you can copy straight away.
:::

## Build a training plan with AI - how to get a good output

A good plan does not come from tricks or magic formulas. It comes from clean input: **the right details in your prompt, the relevant training principles**, and knowing how to keep **adjusting the output until the plan is right**. That is what you build here in six steps — from the goal through the prompt to the quality check, with templates you can copy to get started.

:::node[htmlBlock]
{
  "html": "<figure class=\"not-prose\" style=\"margin:2rem 0;text-align:center\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 520 574\" style=\"width:100%;max-width:520px;display:inline-block;font-family:Inter, system-ui, sans-serif\" role=\"img\" aria-label=\"AI training plan in 6 steps: clarify your goal, choose a model, supply context, structure the prompt, check the output, steer it\"><text x=\"0\" y=\"30\" style=\"font-size:21px;font-weight:700;fill:#0f2942\">AI training plan in 6 steps</text><line x1=\"0\" y1=\"46\" x2=\"520\" y2=\"46\" stroke=\"#e2e8f0\" stroke-width=\"1\"/><text x=\"0\" y=\"90\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">01</text><text x=\"66\" y=\"82\" style=\"font-size:15px;font-weight:600;fill:#111827\">Clarify your goal</text><text x=\"66\" y=\"102\" style=\"font-size:12.5px;fill:#6b7280\">Goal · Timeframe · Level of detail</text><line x1=\"66\" y1=\"116\" x2=\"520\" y2=\"116\" stroke=\"#f1f5f9\" stroke-width=\"1\"/><text x=\"0\" y=\"166\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">02</text><text x=\"66\" y=\"158\" style=\"font-size:15px;font-weight:600;fill:#111827\">Choose a model</text><text x=\"66\" y=\"178\" style=\"font-size:12.5px;fill:#6b7280\">ChatGPT · Claude · Gemini · local</text><line x1=\"66\" y1=\"192\" x2=\"520\" y2=\"192\" stroke=\"#f1f5f9\" stroke-width=\"1\"/><text x=\"0\" y=\"242\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">03</text><text x=\"66\" y=\"234\" style=\"font-size:15px;font-weight:600;fill:#111827\">Supply context</text><text x=\"66\" y=\"254\" style=\"font-size:12.5px;fill:#6b7280\">Level · Numbers · Equipment · Limitations</text><line x1=\"66\" y1=\"268\" x2=\"520\" y2=\"268\" stroke=\"#f1f5f9\" stroke-width=\"1\"/><text x=\"0\" y=\"318\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">04</text><text x=\"66\" y=\"310\" style=\"font-size:15px;font-weight:600;fill:#111827\">Structure the prompt</text><text x=\"66\" y=\"330\" style=\"font-size:12.5px;fill:#6b7280\">Data · Task · Exclusions · Format</text><line x1=\"66\" y1=\"344\" x2=\"520\" y2=\"344\" stroke=\"#f1f5f9\" stroke-width=\"1\"/><text x=\"0\" y=\"394\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">05</text><text x=\"66\" y=\"386\" style=\"font-size:15px;font-weight:600;fill:#111827\">Check the output</text><text x=\"66\" y=\"406\" style=\"font-size:12.5px;fill:#6b7280\">Overload · Phases · Intensity · Recovery</text><line x1=\"66\" y1=\"420\" x2=\"520\" y2=\"420\" stroke=\"#f1f5f9\" stroke-width=\"1\"/><text x=\"0\" y=\"470\" style=\"font-size:30px;font-weight:700;fill:var(--color-tff-cyan)\">06</text><text x=\"66\" y=\"462\" style=\"font-size:15px;font-weight:600;fill:#111827\">Steer it</text><text x=\"66\" y=\"482\" style=\"font-size:12.5px;fill:#6b7280\">Give feedback, adjust week by week</text><text x=\"0\" y=\"560\" style=\"font-size:12px;fill:#6b7280\"><tspan style=\"font-weight:700;fill:#ea580c\">The prompt paradox</tspan>: better training knowledge = better prompt</text></svg></figure>"
}
:::

:::node[llmRouter]
{
  "nextSectionAnchor": "your-base-prompt-by-goal"
}
:::

## Your goals: which plan do you actually want?

Before you open any tool, you need three decisions. They determine what you later write into the prompt — and whether the plan fits your week instead of just looking good.

- **The goal,** and be specific. "Get fitter" is not something a model can work with — a coach would ask follow-up questions too. "10 km under 55 minutes in 14 weeks" or "5 kg of muscle in 6 months" is a goal. The more concrete the goal and the timeframe, the better the plan structure.
- **The timeframe.** Eight weeks is a good frame for a first plan: long enough for visible progress, short enough to correct course. Anyone planning longer — race preparation, a season build — needs phases instead of one repeating weekly schedule. How to spot the difference is in the section on checking the output further down.
- **The level of detail.** Is a weekly structure with clear progression rules enough, or do you want sets, reps and intensity for every session? Beginners are often better served by less detail — an overloaded plan does not get followed, an understandable one does.

### Tip for experienced athletes - think wider than your main sport

Runners who only ask for running plans get incomplete plans. So do lifters who only ask for strength plans. The LLM delivers what you request — strength and mobility work will be missing, with few exceptions, if you do not name them. And that is exactly where the difference between a good and an average coach starts. Plenty of coaches give you what you want; a genuinely good one combines what you want with what you need to reach your goal.

:::node[htmlBlock]
{
  "html": "<p style=\"margin-bottom:1.5rem\">A runner who never lifts loses efficiency across a season and builds up injury risk. A strength athlete with no endurance base pays for it on long sets and through hard training blocks. Tell the model explicitly what you want alongside your main sport - it will not object, and the plan comes back far more complete.</p>\n<figure class=\"not-prose\" style=\"margin:1.75rem 0;text-align:center\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 520 212\" style=\"width:100%;max-width:500px;display:inline-block\" role=\"img\" aria-label=\"Comparison: ask only for your main sport and the plan comes back without strength or mobility work. A complete plan covers endurance, strength and mobility.\">\n  <text x=\"10\" y=\"16\" style=\"font-size:12px;fill:#6b7280;font-family:inherit\">Asked for the main sport only</text>\n  <rect x=\"10\" y=\"26\" width=\"250\" height=\"48\" rx=\"9\" fill=\"var(--color-tff-cyan)\"/>\n  <text x=\"135\" y=\"56\" text-anchor=\"middle\" style=\"font-size:13.5px;font-weight:600;fill:#ffffff;font-family:inherit\">Endurance</text>\n  <rect x=\"266\" y=\"26\" width=\"244\" height=\"48\" rx=\"9\" fill=\"none\" stroke=\"#cbd5e1\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/>\n  <text x=\"388\" y=\"56\" text-anchor=\"middle\" style=\"font-size:12.5px;fill:#9ca3af;font-family:inherit\">Strength and mobility missing</text>\n  <text x=\"10\" y=\"108\" style=\"font-size:12px;fill:#6b7280;font-family:inherit\">What your goal actually needs</text>\n  <rect x=\"10\" y=\"118\" width=\"250\" height=\"48\" rx=\"9\" fill=\"var(--color-tff-cyan)\"/>\n  <text x=\"135\" y=\"148\" text-anchor=\"middle\" style=\"font-size:13.5px;font-weight:600;fill:#ffffff;font-family:inherit\">Endurance</text>\n  <rect x=\"266\" y=\"118\" width=\"134\" height=\"48\" rx=\"9\" fill=\"#475569\"/>\n  <text x=\"333\" y=\"148\" text-anchor=\"middle\" style=\"font-size:13.5px;font-weight:600;fill:#ffffff;font-family:inherit\">Strength</text>\n  <rect x=\"406\" y=\"118\" width=\"104\" height=\"48\" rx=\"9\" fill=\"#94a3b8\"/>\n  <text x=\"458\" y=\"148\" text-anchor=\"middle\" style=\"font-size:13.5px;font-weight:600;fill:#ffffff;font-family:inherit\">Mobility</text>\n  <text x=\"260\" y=\"196\" text-anchor=\"middle\" style=\"font-size:11.5px;fill:#6b7280;font-family:inherit\">The model delivers exactly what you ask for - the rest you have to name.</text>\n</svg>\n</figure>"
}
:::

## Choosing the AI model - ChatGPT, Claude or Gemini?

Short answer: with the current flagships you can hardly go wrong - but the same rule applies there: always check the output critically. The real difference sits in your prompt and your workflow, not in the quality of the first draft. That is exactly what I tested in my AI Fitness Benchmark: I put 20 language models through real fitness and training questions, asked every question three times, and scored the answers against sports science and coaching practice rather than gut feeling. The result (as of July 2026): GPT-5.6 Sol, GPT-5.5 and Claude Sonnet 5 lead, with GPT-5.6 Terra and Claude Opus 4.8 just behind. That top group sits between 91 and 97 out of 100, and the gaps there are so small that I read them as a group rather than a ranking. Grok 4.3 with 88 and Gemini 3.1 Pro with 85 follow at a little distance.

:::node[htmlBlock]
{
  "html": "<figure class=\"not-prose\" style=\"margin:2rem 0\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 820 490\" width=\"820\" height=\"490\" role=\"img\" aria-label=\"AI Fitness Benchmark 2026: the nine top-scoring of 20 tested AI models, as of 25 July 2026\" style=\"max-width:100%;height:auto;font-family:Inter, system-ui, sans-serif\"><rect width=\"820\" height=\"490\" fill=\"#ffffff\"></rect><text x=\"24\" y=\"34\" font-size=\"22\" font-weight=\"700\" fill=\"#0f2942\">AI Fitness Benchmark 2026</text><text x=\"24\" y=\"56\" font-size=\"13\" fill=\"#64748b\">Which AI gives the best advice on training, nutrition &amp; health? &#183; Top 9 of 20 tested models &#183; overall score /100</text><line x1=\"24\" y1=\"72\" x2=\"796\" y2=\"72\" stroke=\"#e2e8f0\" stroke-width=\"1\"></line><g><text x=\"24\" y=\"105\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">1. GPT-5.6 Sol</text><rect x=\"254\" y=\"91\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"91\" width=\"475.3\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"105\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">97</text></g><g><text x=\"24\" y=\"139\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">2. GPT-5.5</text><rect x=\"254\" y=\"125\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"125\" width=\"455.7\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"139\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">93</text></g><g><text x=\"24\" y=\"173\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">3. Claude Sonnet 5</text><rect x=\"254\" y=\"159\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"159\" width=\"450.8\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"173\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">92</text></g><g><text x=\"24\" y=\"207\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">4. GPT-5.6 Terra</text><rect x=\"254\" y=\"193\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"193\" width=\"450.8\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"207\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">92</text></g><g><text x=\"24\" y=\"241\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">5. Claude Opus 4.8</text><rect x=\"254\" y=\"227\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"227\" width=\"445.9\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"241\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">91</text></g><g><text x=\"24\" y=\"275\" font-size=\"13\" font-weight=\"600\" fill=\"#27c4cf\">&#9733; Claude Fable 5</text><rect x=\"254\" y=\"261\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"261\" width=\"445.9\" height=\"20\" rx=\"5\" fill=\"#27c4cf\" fill-opacity=\"0.7\" stroke=\"#27c4cf\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"></rect><text x=\"790\" y=\"275\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">&#9733; 91</text></g><g><text x=\"24\" y=\"309\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">6. GPT-5.4 Mini</text><rect x=\"254\" y=\"295\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"295\" width=\"441\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"309\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">90</text></g><g><text x=\"24\" y=\"343\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">7. Claude Opus 4.5</text><rect x=\"254\" y=\"329\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"329\" width=\"436.1\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"343\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">89</text></g><g><text x=\"24\" y=\"377\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">8. Grok 4.3</text><rect x=\"254\" y=\"363\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"363\" width=\"431.2\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"377\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">88</text></g><g><text x=\"24\" y=\"411\" font-size=\"13\" font-weight=\"600\" fill=\"#0f2942\">9. Gemini 3.1 Pro</text><rect x=\"254\" y=\"397\" width=\"490\" height=\"20\" rx=\"5\" fill=\"#eef2f6\"></rect><rect x=\"254\" y=\"397\" width=\"416.5\" height=\"20\" rx=\"5\" fill=\"#27c4cf\"></rect><text x=\"790\" y=\"411\" font-size=\"13\" font-weight=\"700\" fill=\"#0f2942\" text-anchor=\"end\">85</text></g><line x1=\"24\" y1=\"432\" x2=\"796\" y2=\"432\" stroke=\"#e2e8f0\" stroke-width=\"1\"></line><text x=\"24\" y=\"454\" font-size=\"11\" fill=\"#94a3b8\">&#9733; = outside the ranking: tested via the subscription (not the API) &#8211; shown for context, not officially placed.</text><text x=\"24\" y=\"474\" font-size=\"12\" fill=\"#64748b\">Source: TheFitFuturist &#183; thefitfuturist.com/en/ai-fitness-benchmark &#183; as of 25 July 2026</text></svg></figure>"
}
:::

All results and the full methodology are in the [AI Fitness Benchmark](https://www.thefitfuturist.com/en/ai-fitness-benchmark/): 1,887 scored answers, every question asked three times, graded by several models as judges and cross-checked by me. My cross-check matches the AI scoring exactly in 86 to 89 percent of cases, and within one grade in 98 percent.

One thing worth stating plainly: the benchmark was run in German. That is deliberate — it tests how these models perform outside English, which is where most comparisons stop looking. The ranking transfers, but if you prompt in English you will generally get slightly stronger answers than the scores suggest.

The fundamentals are equally solid across all the big models: reading files, structuring plans, responding to follow-up questions — and long-term memory across conversations now exists at every provider (which you have to maintain, so that mistakes do not get baked in).

Choosing between the cloud models is therefore mostly a workflow question - which ecosystem do you live in?

| Model | Strength | Recommended when |
| --- | --- | --- |
| ChatGPT | Custom GPTs, largest ecosystem of ready-made tools | Recurring planning with a persistent coach setup |
| Claude | Projects, skills, precisely structured output | Complex planning, your own files, exactly formatted plans |
| Gemini | Google ecosystem: Drive and Sheets integration | Training logs in Google Sheets, live integration of your own data |
| Mistral (Le Chat) | EU servers by default, cheapest subscription | You want data to stay in Europe - and accept the trade-off: Mistral Medium 3.5 scores 68 out of 100 in the benchmark, and only 55 on the safety questions |
| Gemma (self-hosted) | Maximum control, best privacy - everything stays on your machine | Data sovereignty matters more than convenience; at 83 out of 100 the strongest self-hostable model in the benchmark, but not at flagship level |
| DeepSeek & co. (via API) | No fixed cost - billed per request, huge model choice | Tech-minded people who want to compare many models - the spread is wide here: DeepSeek V3.2 scores 72, Llama 4 only 51 |

The genuinely structural difference runs between cloud and local. A local model like Gemma runs entirely on your own machine — your health data, injury history and performance numbers never leave the house, and you need no subscription either. The price: you get the bare model and you are your own operator. Gemma comes from Google, but installed locally there is no chat service around it, no memory across devices and no phone app.

Setup runs through tools like Ollama or LM Studio, and the hardware bar is lower than many assume: the 31B model fits in 4-bit onto a 24 GB consumer graphics card, so an RTX 3090 or 4090. You do not need a data centre, but you do need a card like that or a Mac with enough unified memory — and hardware prices have climbed sharply lately.

In the benchmark Gemma did surprisingly well as the only genuinely home-capable model: 83 out of 100, 13th of 20, and clearly ahead of the much larger Llama 4, which finishes last on 51. It does not reach the top group, and the gap is largest on the sensitive safety questions. The large open-weight models from Llama or DeepSeek are not home-machine material anyway despite their open weights — they only run sensibly on servers.

:::info[info]
#### Is a thinking model worth it?

Extended thinking - deeper, step-by-step analysis before answering - is usually active by default in the 2026 flagship versions anyway; with Claude you control it through the thinking style setting. Averaged across all categories of my benchmark, thinking models score 87 out of 100 and standard models 74. But the gap comes mostly from the sensitive questions, not from the weekly plan: for simple plans, thinking adds little. It becomes useful when the plan has to resolve conflicts - multi-phase periodisation (hypertrophy → strength → peak), many constraints at once, or injuries that have to be worked around. For a standard training plan the normal model is enough.
:::

What such a setup looks like in practice is shown by the [training plan skill for Claude](https://www.thefitfuturist.com/en/training-analysis/claude-training-plan-skill/) \- a preconfigured environment with structured context building:

> I personally use Claude most often - and the reason is the skill. Once installed, Claude asks me the right questions first and only then plans - the questions I would ask as a coach. No default assumptions, no plan for someone in general. For me that is the real advantage over the other tools.
> 
> **-** **Christopher Klenk**

The same principle exists for Gemini: the article on the [Gemini Gem for training planning](https://www.thefitfuturist.com/en/training-analysis/gemini-gem-training-plan/) shows how to build yourself a persistent coach gem.

## Your input - more important than the model

An AI training plan is only as good as the context you provide. No model can see how fit you actually are right now, how much time you realistically have during the week, or that you are protecting a knee - unless you say so. This is the prompt paradox: people who know little about training can ask for less and get a weaker plan - and often do not even notice.

How strongly that shows up surprised me in my own benchmark. One of the eight categories deliberately tests thin questions, exactly that "build me a training plan" with nothing else. The scores there scatter right across the top group: GPT-5.6 Sol takes 100 out of 100 and Claude Sonnet 5 reaches 92, but GPT-5.5 drops to 57 and Claude Opus 4.8 to 62 - even though both sit at the very top of the overall ranking. Claude Fable 5, which I tested outside the ranking through the subscription, lands at 55.

My reading: this is not a knowledge problem but a behavioural difference. The answers are technically fine, the models simply start planning straight away on a thin question instead of asking first. That is exactly the work you take off their hands when you supply the context up front - and then it hardly matters which of the top models is in front of you.

**These six dimensions make the difference between generic and usable:**

:::node[dimensionsList]
{
  "items": [
    {
      "icon": "TrendingUp",
      "text": "How long have you been training? What can you actually do? What worked, what did not? And upload your current plan - no single input tells the model more about you.",
      "title": "Training level & current plan"
    },
    {
      "icon": "Target",
      "text": "Specific, with a timeframe - \"10 km under 55 minutes in 14 weeks\", not \"get fitter\". The more concrete, the better the plan structure.",
      "title": "Goal"
    },
    {
      "icon": "Dumbbell",
      "text": "Full gym, home gym, bodyweight - or treadmill, outdoors, indoor trainer, road bike, mountain bike. Every combination produces a different plan.",
      "title": "Equipment & setting"
    },
    {
      "icon": "Clock",
      "text": "45 minutes early in the morning under time pressure is not the same as 90 minutes in the evening. Otherwise the model builds for a week that is not yours.",
      "title": "Availability"
    },
    {
      "icon": "ShieldAlert",
      "text": "Knee pain, a disc injury, shoulder trouble. The model can work around them - it cannot diagnose them.",
      "title": "Limitations"
    },
    {
      "icon": "Gauge",
      "text": "Bench press 5×5 at 80 kg, 5 km in 26 minutes, 40 km weekly running volume. Without numbers like these the model guesses - and you can tell from the output.",
      "title": "Performance numbers"
    }
  ]
}
:::

The full picture - which physiological data from wearables and diagnostics you can prepare as prompt input - is covered in the guide to [physiological foundations for AI training](https://www.thefitfuturist.com/en/training-analysis/physiological-foundations-ai-training/).

## Building your first AI training plan

Do not worry, though: you can build a usable first plan today without a pile of training data. You need no race times, no one-rep maxes, no wearable. Goal, availability and equipment are enough for a working start. What you do need is a decent prompt:

:::node[compareBlock]
{
  "bad": "Build me a training plan",
  "good": "Build me a beginner plan for general fitness over 8 weeks.\n\nMY DATA:\n- Training for 3 months, 3× per week, 45 minutes each\n- Gym with free weights\n- No injuries\n- Goal: a solid base of strength and endurance\n\nNOT WANTED:\n- No plan without progression across the 8 weeks\n- No vague numbers - give me concrete sets and reps\n\nFORMAT: weekly plan per training day with exercises, sets × reps and a deload week. Explain the logic behind it.",
  "badLabel": "Weak template",
  "goodLabel": "Good template"
}
:::

The structure of the good template is always the same: give your own data, sharpen the task, exclude weaknesses explicitly, define the format. Concrete numbers stop the model from guessing, and the exclusions filter out the typical weaknesses of AI-generated plans. 

**What is still missing in this example:** real limitations, cross-training preferences and a periodisation structure if you plan for more than 8 weeks. That is exactly what the templates further down are built for.

:::info[info]
#### Why there is no role line here

"You are an experienced coach…" sat in every prompt guide for years - and plenty of people still use it. As of 2026 several studies show: expert roles do not make answers better, and on fact-based tasks sometimes worse - they mainly change the tone. The quality of your plan comes from your data, clear requirements and the format, not from a costume for the model. Leaving it out costs nothing - it makes room for what counts. 

There is one exception: you want a plan in the style of a specific person or training philosophy. Then that belongs in the prompt - not as a role for the model, but as a reference. How that works is under "Train like your role model" further down.
:::

### Using templates as context

You do not have to start from scratch. Two routes work particularly well and are underrated.

If you already train to a plan, or used to, upload it. ChatGPT, Claude and Gemini read files: PDF, DOCX, even photos of handwritten plans. That gives the model more context than any description, because it sees what you actually did. Here is what that looks like:

```
Attached is my current training plan, which I have been following for 4 months.

MY SITUATION:
- The plan worked well, but I have been stuck on bench press and overhead press for 3 weeks
- Leg exercises are still progressing
- I now have 5 instead of 4 days per week available

TASK:
1. Analyse the existing plan: what works, where are the weaknesses?
2. Build a follow-up plan for the next 8 weeks that builds on this one
3. Fix the upper body stall - explain what you change and why

NOT WANTED:
- No completely new plan that ignores what came before
- No changes to leg exercises without justification
```

Or you have seen a plan that looks good - from a professional, from a forum, from an athlete you follow. Upload it, explain what you like about it and what you need differently. The model then builds in the same spirit, but tailored to your situation. This method works well because you give the model a quality reference instead of an empty frame.

### Your base prompt by goal

Pick a goal and equipment, copy the prompt - the placeholders in square brackets you replace with your own data. The more you get out of those brackets, the better the plan. And if you are training for a running race specifically, the [AI running plan guide](https://www.thefitfuturist.com/en/training-analysis/ai-running-training/) adds a sport-specific walkthrough from 5k to marathon.

:::node[promptSelector]
{
  "prompts": {
    "muscle": {
      "homegym": "Build a training plan for muscle building over [X] weeks.\n\nMY DATA:\n- Training experience: [X years, current programme - or beginner]\n- Current numbers: [e.g. dumbbell bench press 2×25 kg × 8]\n- Training days: [X] per week, [X] minutes each\n- Equipment: home gym - [e.g. dumbbells up to 30 kg, pull-up bar, bench, resistance bands]\n- Limitations: [injuries - or: none]\n\nNOT WANTED:\n- No exercises using equipment I do not have - name alternatives\n- No plan without progression across the weeks\n- No vague numbers like 3-4 sets - give concrete sets, reps and RPE\n\nFORMAT: weekly plan per training day with exercise, sets × reps, RPE and rest times. Explain the progression logic and schedule a deload week.",
      "vollgym": "Build a training plan for muscle building over [X] weeks.\n\nMY DATA:\n- Training experience: [X years, current programme - or beginner]\n- Current numbers: [e.g. bench press 80 kg × 5, squat 100 kg × 5]\n- Training days: [X] per week, [X] minutes each\n- Equipment: full gym - free weights, machines, cable stations\n- Limitations: [injuries - or: none]\n\nNOT WANTED:\n- No exercises that ignore my limitations\n- No plan without progression across the weeks\n- No vague numbers like 3-4 sets - give concrete sets, reps and RPE\n\nFORMAT: weekly plan per training day with exercise, sets × reps, RPE and rest times. Explain the progression logic and schedule a deload week.",
      "bodyweight": "Build a training plan for muscle building using bodyweight only over [X] weeks.\n\nMY DATA:\n- Training experience: [X years - or beginner]\n- Current numbers: [e.g. 15 clean push-ups, 5 pull-ups - or: I do not know]\n- Training days: [X] per week, [X] minutes each\n- Equipment: bodyweight only [optional: pull-up bar, resistance band]\n- Limitations: [injuries - or: none]\n\nNOT WANTED:\n- No progression through more reps alone - progress through harder variations and leverage\n- No complicated exercises without technique cues\n\nFORMAT: weekly plan per training day with exercise, sets × reps and the next harder variation as the progression target. Explain the progression logic."
    },
    "fitness": {
      "homegym": "Build a training plan for general fitness and health over [X] weeks.\n\nMY SITUATION:\n- Current state: [e.g. inactive for 6 months / beginner / coming back after a break]\n- Goal: [get fit / lose weight / build a base / become more mobile]\n- Training days: [X] per week, [X] minutes each\n- Equipment: at home - [e.g. dumbbells, resistance bands, mat]\n- Limitations: [health, injuries, age]\n\nNOT WANTED:\n- No exercises using equipment I do not have - name alternatives\n- No entry point that is too hard for my current state\n- No plan without slow, understandable progression\n\nFORMAT: weekly structure with session type (strength, endurance, mobility), concrete exercises, duration or reps and intensity. Tell me when and how to progress.",
      "vollgym": "Build a training plan for general fitness and health over [X] weeks.\n\nMY SITUATION:\n- Current state: [e.g. inactive for 6 months / beginner / coming back after a break]\n- Goal: [get fit / lose weight / build a base / become more mobile]\n- Training days: [X] per week, [X] minutes each\n- Equipment: gym - free weights, machines, cardio equipment\n- Limitations: [health, injuries, age]\n\nNOT WANTED:\n- No entry point that is too hard for my current state\n- No complicated exercises without technique cues\n- No plan without slow, understandable progression\n\nFORMAT: weekly structure with session type (strength, endurance, mobility), concrete exercises, duration or reps and intensity. Tell me when and how to progress.",
      "bodyweight": "Build a training plan for general fitness and health over [X] weeks.\n\nMY SITUATION:\n- Current state: [e.g. inactive for 6 months / beginner / coming back after a break]\n- Goal: [get fit / lose weight / build a base / become more mobile]\n- Training days: [X] per week, [X] minutes each\n- Setting: at home or outdoors, bodyweight only\n- Limitations: [health, injuries, age]\n\nNOT WANTED:\n- No entry point that is too hard for my current state\n- No complicated exercises without technique cues\n- No plan without slow, understandable progression\n\nFORMAT: weekly structure with session type (strength, endurance, mobility), concrete exercises, duration or reps and intensity. Tell me when and how to progress."
    },
    "running": {
      "homegym": "Build a training plan for [distance: 5 km / 10 km / half marathon / marathon] in [target time].\n\nMY DATA:\n- Current level: [last race time or current training paces]\n- Running experience: [X years, currently X km per week]\n- Weeks until race day: [X]\n- Training days: [X] per week\n- Strength work: at home with [e.g. dumbbells, resistance bands] - schedule [X] supporting strength sessions per week\n- Limitations: [injury history, time constraints]\n\nNOT WANTED:\n- No sessions over [X] km without justification\n- No pace targets unrelated to my current fitness\n- No strength exercises using equipment I do not have\n\nFORMAT: weekly structure with session type (intervals, tempo, long run, easy run), distance, pace target and heart rate zone. Schedule a taper in the final [X] weeks.",
      "vollgym": "Build a training plan for [distance: 5 km / 10 km / half marathon / marathon] in [target time].\n\nMY DATA:\n- Current level: [last race time or current training paces]\n- Running experience: [X years, currently X km per week]\n- Weeks until race day: [X]\n- Training days: [X] per week\n- Strength work: gym access - schedule [X] supporting strength sessions per week\n- Limitations: [injury history, time constraints]\n\nNOT WANTED:\n- No sessions over [X] km without justification\n- No pace targets unrelated to my current fitness\n- No running plan without strength and mobility work\n\nFORMAT: weekly structure with session type (intervals, tempo, long run, easy run), distance, pace target and heart rate zone. Schedule a taper in the final [X] weeks.",
      "bodyweight": "Build a training plan for [distance: 5 km / 10 km / half marathon / marathon] in [target time].\n\nMY DATA:\n- Current level: [last race time or current training paces]\n- Running experience: [X years, currently X km per week]\n- Weeks until race day: [X]\n- Training days: [X] per week\n- Strength work: no equipment - schedule [X] sessions of bodyweight strength and stability (core, single-leg work, running drills)\n- Limitations: [injury history, time constraints]\n\nNOT WANTED:\n- No sessions over [X] km without justification\n- No pace targets unrelated to my current fitness\n- No running plan without strength and mobility work\n\nFORMAT: weekly structure with session type (intervals, tempo, long run, easy run), distance, pace target and heart rate zone. Schedule a taper in the final [X] weeks."
    }
  }
}
:::

## Checking the output: does the plan meet the basic principles?

Before you take a plan into your training, check it. Not because AI plans are generally bad - but because every good training plan has to satisfy the same principles, whether it comes from a model or from a coach. You can test these four without any prior knowledge:

:::node[dimensionsList]
{
  "items": [
    {
      "icon": "TrendingUp",
      "text": "Does the plan raise volume, intensity or frequency systematically? Test question: does week 4 differ from week 1? A plan that only repeats works for four weeks and then stalls.",
      "title": "Progressive overload"
    },
    {
      "icon": "Calendar",
      "text": "Does the plan structure training into phases - volume, intensity, deload? Test question: is a lighter week scheduled anywhere? Mandatory for plans longer than 8 weeks.",
      "title": "Periodisation"
    },
    {
      "icon": "Zap",
      "text": "Does the plan tell you how hard a session should be? Ideally via RPE, the 1-10 scale for perceived effort - RPE 8 means two more reps would have been possible. Without it you train blind.",
      "title": "Intensity control"
    },
    {
      "icon": "Heart",
      "text": "Are rest days scheduled - and hard sessions not stacked back to back? Your body adapts during recovery, not during the session. Test question: does every week have at least one real rest day?",
      "title": "Recovery"
    }
  ]
}
:::

Over the last few years I have systematically worked through a series of AI-generated training plans as an experienced coach with a sports science background. **The most common shortcoming is always the same: no periodisation framework.** The plan looks identical in week 6 and week 1 - no build, no phases, no deload. The model does not know that you want to build something systematically unless you say so. One sentence in the prompt changes that fundamentally: "Structure the plan in two phases - volume build in weeks 1-4, intensity phase in weeks 5-8, deload in week 9."

The full checklist - seven warning signs that reveal a weak plan - is in the [framework for checking AI training plans](https://www.thefitfuturist.com/en/training-analysis/ai-training-plan-limits/).

## Steering: the first output is never the end

No single prompt delivers a plan that fits 100 percent. That is not a weakness of the models - it is the normal way of working. The first output is a draft, and this is exactly where your advantage over a finished PDF from the internet lies: you intervene without starting over.

You talk to the model like an informed sparring partner:

"The squats on Wednesday are too much right after Tuesday's long run - swap that."

"Explain why you made week 3 harder than week 4."

"I have a work trip next week - build me a bodyweight alternative for week 6."

The typical adjustment rounds look almost always the same: too much volume for your week - have it cut. An exercise does not fit - request an alternative, with reasoning. Missed a week - have the plan rebuilt instead of feeling guilty. And if a decision by the model looks odd to you: ask. Either the explanation convinces you, or the model corrects itself - both move you forward.

Steering gets another level better with real data. A Garmin log export, a Strava CSV, an old plan from an app - upload it. The model can then work out what you actually do, not what you think you do. That gap is often bigger than expected.

What research says about detailed prompts leading to better plans - and why that alone is not enough - is covered in the [analysis of prompt quality in ChatGPT training plans](https://www.thefitfuturist.com/en/news/prompt-quality-chatgpt-training-plans-study/).

## Tips and tricks from practice

A few moves that get noticeably more out of the standard workflow.

### Train like your role model

The model already knows the well-known programmes and training philosophies - you do not have to explain them, only name them. Upload the plan of an athlete you follow, or start straight from one of these classics:

| Programme / philosophy | Good for | Opening prompt |
| --- | --- | --- |
| Arnold split | Muscle building with plenty of training time (5-6 days/week) | "Build a plan following the classic Arnold split, scaled to my numbers: \[data\]" |
| 5/3/1 (Jim Wendler) | Strength on the main lifts, clear monthly progression | "Build me a 5/3/1 cycle based on my maxes: \[numbers\]" |
| Push/Pull/Legs | Muscle building, flexible across 3-6 days | "Build a push/pull/legs plan for \[X\] days per week: \[data\]" |
| 5×5 full body | Strength beginners, simple structure with fast progression | "Build a 5×5 full-body plan for beginners: \[data\]" |
| Norwegian threshold training | Ambitious runners with high weekly volume | "Adapt Norwegian threshold training to \[X\] km per week and \[X\] sessions: \[data\]" |
| Couch to 5K | Running beginners up to their first 5 km | "Build a couch-to-5K plan over \[X\] weeks: \[level\]" |

What matters is the "scaled to my numbers" - you want the structure of the original, not its workload. And the check from the section above applies here too: famous does not automatically mean right for your level and your week.

### Let the model ask first

One sentence at the end of the prompt changes the quality noticeably: "Ask me five follow-up questions before you build the plan." The model collects the missing context itself instead of filling gaps with assumptions - and the questions show you, in passing, which details you forgot.

### Order the export format up front

One extra line in the prompt saves you the retyping - depending on where the plan is supposed to end up:

| Format | Good for | How to ask for it |
| --- | --- | --- |
| Table in the chat | Reading, looking up, printing as PDF | "Give me the plan as a clear table" |
| CSV | Training log in Excel or Google Sheets | "Export the plan as CSV with the columns date, session, details" |
| ICS (calendar file) | Sessions as appointments in Google, Apple or Outlook Calendar | "Create an .ics file with every session as a calendar entry" |
| ZWO (Zwift workout) | Structured indoor cycling sessions straight into Zwift | "Write the interval session as a .zwo file for Zwift" |

Garmin Connect, Polar Flow and Strava, on the other hand, offer no direct file import for planned workouts - plans only get there manually. If you still want your sessions on the watch, you can put a platform like intervals.icu in between: create the workouts there in its text syntax (the model can write that for you too) and sync them as the workout of the day to Garmin and co.

### Do a weekly check-in

At the end of each training week, send short feedback and have the coming week adjusted to it. That turns a static plan into a guided process - closer to real coaching than any one-off PDF. It can be this brief:

```
Week 3 is done - my feedback:
- Tue intervals: completed, but the last 2 reps clearly above target pace
- Thu strength: good, squats felt strong
- Sat long run: stopped at km 14, legs heavy (RPE 9)
- Slept badly all week (project deadline)

Adjust week 4: total volume down a bit, and I want to repeat Tuesday's
intervals before it gets harder.
```

:::node[htmlBlock]
{
  "html": "<figure class=\"not-prose\" style=\"margin:1.5rem 0;text-align:center\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 520 175\" style=\"width:100%;max-width:480px;display:inline-block\" role=\"img\" aria-label=\"Loop: train the week, send short feedback to the model, plan gets adjusted - repeat every week\">\n  <rect x=\"10\" y=\"30\" width=\"150\" height=\"56\" rx=\"12\" fill=\"white\" stroke=\"#d1d5db\" stroke-width=\"1.5\"/>\n  <text x=\"85\" y=\"54\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">Train the</text>\n  <text x=\"85\" y=\"70\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">week</text>\n  <path d=\"M164 58 L181 58\" stroke=\"#9ca3af\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>\n  <polygon points=\"181,53 189,58 181,63\" fill=\"#9ca3af\"/>\n  <rect x=\"193\" y=\"30\" width=\"150\" height=\"56\" rx=\"12\" fill=\"color-mix(in srgb, var(--color-tff-cyan) 8%, white)\" stroke=\"var(--color-tff-cyan)\" stroke-opacity=\"0.5\" stroke-width=\"1.5\"/>\n  <text x=\"268\" y=\"54\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">Short feedback</text>\n  <text x=\"268\" y=\"70\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">to the model</text>\n  <path d=\"M347 58 L364 58\" stroke=\"#9ca3af\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>\n  <polygon points=\"364,53 372,58 364,63\" fill=\"#9ca3af\"/>\n  <rect x=\"376\" y=\"30\" width=\"134\" height=\"56\" rx=\"12\" fill=\"white\" stroke=\"#d1d5db\" stroke-width=\"1.5\"/>\n  <text x=\"443\" y=\"54\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">Plan gets</text>\n  <text x=\"443\" y=\"70\" text-anchor=\"middle\" style=\"font-size:12.5px;font-weight:600;fill:#111827;font-family:inherit\">adjusted</text>\n  <path d=\"M443 90 L443 128 L85 128 L85 100\" fill=\"none\" stroke=\"var(--color-tff-cyan)\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>\n  <polygon points=\"80,102 90,102 85,90\" fill=\"var(--color-tff-cyan)\"/>\n  <text x=\"264\" y=\"150\" text-anchor=\"middle\" style=\"font-size:11px;fill:#6b7280;font-family:inherit\">repeat every week</text>\n</svg>\n</figure>"
}
:::

:::info[info]
#### Memory: check it, do not trust it

A wrongly stored memory entry can distort every future answer - and you will not notice. The tool remembers "user has knee problems" because you mentioned it once in another context. From then on you get plans without deep squats, without understanding why. Or your weight from 6 months ago is still in memory and the calorie recommendation no longer fits. Check regularly what is stored - in ChatGPT under Settings → Personalization → Memory, in Claude under Settings → Memory. Delete outdated or wrong entries straight away. [Data privacy with AI tools](https://www.thefitfuturist.com/en/training-analysis/fitness-app-data-privacy/) deserves more attention than most people give it.
:::

## What AI cannot do

AI plans - whether the plan suits you shows up only in training. That is not a weakness of individual models but a structural limit. Four things stay with you:

:::node[dimensionsList]
{
  "items": [
    {
      "icon": "Activity",
      "text": "The model cannot see how you are today - poor sleep, sore legs, stress. It plans from your inputs. Autoregulation, adjusting the load day to day, stays your job.",
      "title": "No real-time state"
    },
    {
      "icon": "User",
      "text": "Whether your knees cave on a squat is invisible to a text model. Technique work needs eyes: a coach, your own video, an experienced training partner.",
      "title": "No technique correction"
    },
    {
      "icon": "Brain",
      "text": "It can explain why progressive overload works - but not make you go to the gym on Tuesday evening anyway. Execution stays with you.",
      "title": "No motivation"
    },
    {
      "icon": "AlertCircle",
      "text": "With acute pain, after injuries or with chronic conditions, a doctor or physiotherapist belongs in the loop before the plan gets started. That cannot be prompted away.",
      "title": "No substitute for a doctor"
    }
  ]
}
:::

Where specialised fitness apps with real-time sensor data and adaptive adjustment are structurally ahead is shown by the [comparison of fitness app AI versus prompting yourself](https://www.thefitfuturist.com/en/training-analysis/fitness-app-ai-vs-llm/). What current research says about AI-generated training plans compared with human coaches is summed up honestly - without hype in either direction - in the [AI versus coach comparison](https://www.thefitfuturist.com/en/training-analysis/ai-training-plan-vs-coach-study/).

## Your next step

A good AI training plan comes from what you put in - not from the model. Goal, equipment, availability and limitations are enough for a first usable plan. Progressive overload, periodisation, cross-training and your own data as context are the road from usable to genuinely good.

Take one of the prompts from the selector above. Send it, read the plan through - and ask follow-up questions until you understand the logic. A plan you do not understand is a plan you will not follow well.

If you want to apply the same approach to nutrition, [building an AI nutrition plan yourself](https://www.thefitfuturist.com/en/training-analysis/create-ai-nutrition-plan/) is the next logical step - and the [overview of where AI is used in fitness](https://www.thefitfuturist.com/en/training-analysis/ai-in-fitness/) puts the bigger picture in order.

## FAQ

### How long does it take to create an AI training plan?

The first draft takes 2–5 minutes. The real effort is in the iteration – adjusting exercises, questioning the logic. Plan for 15–20 minutes the first time. For follow-up plans on the same basis you need much less time, especially with Projects or Custom GPTs.

### Do I need a Pro subscription or are the free models enough?

For simple plans the free versions are enough. The difference shows up when you upload your own plans as context and with features like Projects or Custom GPTs – those are usually behind a subscription. If you regularly work with your own documents, ChatGPT Plus or Claude Pro are a solid choice.

### Which model is best for training plans – ChatGPT, Claude or Gemini?

The current models from OpenAI (ChatGPT), Anthropic (Claude) and Google (Gemini) all deliver usable results. ChatGPT is strongest for recurring planning via Custom GPTs. Claude structures outputs particularly precisely. Gemini scores with Google Drive integration. A systematic comparison is in our AI Fitness Benchmark.
