Training Intelligence #2: Learning the Science

This is the second post in my Training Intelligence series, where I’m documenting my journey building a personalized AI running coach. See the full series here


What Makes a Coach Intelligent?

After I shared the first post about my vision, it’s only natural to ask: “So… is this just ChatGPT prompting with a fancy title?”

Fair question. But here’s the difference:

I don’t want the AI to just answer questions. I want it to think like a coach — drawing from physiology, context, and experience to offer guidance that actually makes sense for me.

And to do that, it needs to understand the science of endurance training — not as rules, but as reasoning patterns. So before building anything, I went down the rabbit hole.


The Science Deep Dive

Spent some time reading and revisiting some books – Daniels’ Running Formula, Magness’s Science of Running, Noakes’ Lore of Running and some other articles. Some of the information was dense.

Here’s what I discovered:

Great coaches don’t train workouts. They train adaptations.

They understand what physiological system you’re targeting (aerobic base, lactate threshold, neuromuscular efficiency), when it should be stressed, and how long it usually takes to respond.

Small confession: I used to think training was about hitting prescribed paces. Turns out it’s about creating the right physiological stress at the right time for the right duration. The pace is just a means to an end.


The Building Blocks I Need to Understand

Physiological Markers: The Engine Specifications

Lactate Threshold (LT) – The Most Important Discovery

Most runners think LT is “the pace where you start breathing hard.” After reading Daniels, I learned it’s much more specific:

  • The fastest pace you can sustain for 30-60 minutes
  • The anchor point for ALL other training zones
  • Changes with fitness – static zone charts are useless

For me, recent race data suggests my LT is around 5:25/km right now. Six months ago it was 5:35/km. That 10-second improvement changes a lot about my training zones.

When I ask my AI, “Was that tempo session effective?” I want it to reason based on where the effort sat relative to my current threshold, not some generic formula.

VO2max – The Overrated Metric

Popular in fitness marketing, but coaches barely use it day-to-day. It shows your aerobic ceiling, but you can’t train VO2max directly – you train the systems that support it.

More useful: tracking changes over time as a fitness trend indicator.

Running Economy – The Silent Game Changer

Why some runners with “lower” VO2max run faster times. It’s your efficiency rating – how much energy you use at a given pace.

Hard to measure without lab testing, but I can infer it from HR/pace relationships over time. When my heart rate drops at the same pace, my economy is improving.

Heart Rate Zones – Noisy but Essential

My 47-year-old max HR isn’t 220-age (it’s more like 189 based on actual training measurements, not formulas). The AI needs to understand zone models like coaches do – as ranges with context, not rigid boundaries.


Load and Stress Concepts: Where Science Meets Math

This is where I hit the implementation reality: I can’t just prompt an AI about training stress – I need to calculate it first.

TRIMP (Training Impulse) – Three Approaches to the Same Problem

After researching trademark issues with TSS, I discovered TRIMP has multiple variants:

  • Banister TRIMP (1975): Exponential weighting based on heart rate reserve. It aligns well with how effort actually feels — harder sessions count more, just like they should.
  • Edwards TRIMP (1993): Zone-based approach (time in zones × coefficients). Simpler but less accurate.
  • Lucia TRIMP (2003): Based on ventilatory thresholds. Most physiologically sound but hardest to implement.

I had to choose which to build. Banister’s exponential formula won because it makes threshold work count disproportionately more than easy runs – exactly what coaches intuitively understand. Also because it’s easier to implement.

def calculate_banister_trimp(duration_min, avg_hr, max_hr, rest_hr):
    hr_reserve_fraction = (avg_hr - rest_hr) / (max_hr - rest_hr)
    weighting_factor = 0.64 * math.exp(1.92 * hr_reserve_fraction)
    return duration_min * hr_reserve_fraction * weighting_factor

Chronic/Acute Load Model – Fitness vs. Fatigue

  • CTL (Chronic Training Load): 42-day rolling average – your “fitness”
  • ATL (Acute Training Load): 7-day rolling average – your “fatigue”
  • TSB (Training Stress Balance): CTL – ATL – your “readiness”

The math is simple. The insight is profound: you can predict overtraining before it happens.

Time in Zone Distribution – The Training Recipe

Stephen Seiler’s research shows elite endurance athletes follow roughly:

  • 80% easy (aerobic base)
  • 15% threshold (lactate threshold work)
  • 5% VO2max (high intensity)

My AI coach needs to track this distribution and flag when it drifts too far from optimal. This could be configurable depending on the athlete’s goal.


Subjective Feedback: The Human Element

Here’s what separates intelligent coaching from algorithmic following: the subjective signals that often matter more than objective data.

Tim Noakes’ Central Governor research showed that fatigue is often neurological before it’s physiological. A coach who ignores subjective feedback misses crucial information.

Daily readiness indicators:

  • Energy Level (1-10)
  • Motivation to Train Hard (1-10)
  • Muscle Soreness (1-10)
  • Sleep Quality (1-10)
  • Life Stress (1-10)

No watch has ever told me ‘you’re grumpy, under-recovered, and forcing it.’ But a coach would notice. My AI system needs to learn that too.


From Theory to Implementation: The Three-Layer Reality

Here’s my biggest realization: teaching an AI to “understand” training science requires both calculation AND reasoning.

Layer 1: Data Processing (I Must Build This)

Garmin doesn’t export TRIMP scores – it gives me raw heart rate data. I need to:

  • Calculate TRIMP from HR data
  • Determine time-in-zone distributions
  • Track fitness trends over time
  • Update lactate threshold estimates

Layer 2: Intelligence Layer (AI-Powered Reasoning)

Once I have the numbers, the AI interprets them:

  • “Your TRIMP is high but you feel great – what does that mean?”
  • “Today’s tempo was 10 seconds faster than LT pace – adaptation or overreach?”
  • “You’re 47 and slept poorly – should you skip intervals?”

Layer 3: Structured Coaching Interface

Not open chat, but focused interactions:

  • “How did today’s session go?”
  • “What should next week look like?”
  • “Am I on track for my October race?”

What This Means in Practice

When I interact with my AI coach, I want conversations like:

Me: “Just finished 4x1K at 4:40/km. HR averaged 168, felt controlled but not easy.” [that may come directly from uploading the session]

AI Coach: “That’s right at your lactate threshold – good execution. Your profile shows you’ve done threshold work twice this week already though. How are you feeling recovery-wise?”

Me: “Actually pretty tired. Slept poorly last night.”

AI Coach: “Let’s make tomorrow an easy aerobic run then. Your TRIMP has been climbing and with poor sleep, pushing another hard session risks overreaching. We can pick up the intensity again Thursday.”


The Athlete Profile as Working Memory

All of this lives in the athlete profile – not just a log, but the working memory the AI uses to guide decisions.

It includes:

  • Current thresholds and zones (updated regularly)
  • Recent training load and response patterns
  • Individual characteristics (age adjustments, recovery needs)
  • Patterns of overreach or underload
  • Upcoming goals and periodization context

Unlike static training plans, my AI coach will:

  • Update fitness estimates after each workout
  • Recognize my specific response patterns
  • Adjust recommendations based on actual vs. predicted responses
  • Learn what works specifically for me

What’s Next

Now that I understand what knowledge my AI needs AND how to implement it, the next step is architecture:

  • What gets processed locally vs. cloud?
  • How does the LLM interact with calculated metrics?
  • What’s the optimal interface for structured coaching?

Next up: [Architecture Decisions – Rules vs AI vs Hybrid] — where I show how these three layers work together.


Training Intelligence Series: See all posts
Next: Architecture Decisions


Discover more from Liviu Nastasa

Subscribe to get the latest posts sent to your email.

Unknown's avatar

Author: Liviu Nastasa

Passionate about software development, sociology, running...definitely a geek.

Leave a comment