TrainCurve

Train smarter.
Sleep harder.
Race faster.

The training-load math your coach uses, the AI you already pay for, and the data you already have. In one platform that doesn't charge per token. Free for the first 100 workouts.

87

75

+12

The last 90 days

Your training
load.

Three numbers. The same math every endurance coach uses. Computed from your raw FIT files in real-time, no server delay, no API rate limits. Just the training impulse and the time elapsed since it happened.

TrainCurve 90-day training load chart
2026 · 90 days
Synced now

CTL · Fitness

87

+5 vs 7d

ATL · Fatigue

75

-3 vs 7d

TSB · Form

+12

Peak form

Consistency

69%

62 of 90 days

TrainCurve weekly detail
This week

The detail
behind the line.

Open any day. See the workout, the zone distribution, the recovery, what the coach would say. Every FIT file is parsed, every metric is computed, no black boxes.

  • 01

    Every workout, parsed.

    FIT, TCX, GPX. Power, HR, cadence, elevation. Computed locally, no upload delay.

  • 02

    Zone distribution, week over week.

    Z1 to Z5, in real time. The polarized training myth dies when you see your own numbers.

  • 03

    The coach sees the same data.

    Same math, same chart, same conclusions. No "premium features" paywall.

The math, annotated

What to
look for.

Every chart has a story. Here's how a 6-month training block actually reads — taper, peak, race day, and the recovery that follows. Annotations are what your coach would draw on a clipboard.

TrainCurve 6-month training load chart
2026 · 6 months
CTL
ATL
TSB

Base building

Jan–Feb. Slow Z2 volume. CTL creeps up at 0.3–0.5 TSS/day. Patience is the whole game.

Overreached

Early Apr. TSB drops to -18. The chart screams stop. Two days off, one easy spin, back to the plan.

Taper

Apr–May. Volume drops 40%. CTL barely moves, TSB climbs to peak. The week before the race: Z1 only.

Banister, E.W. (1965). "Theoretical aspects of endurance training."

The same model. The same chart. The one TrainingPeaks charges €240/year for.

The coach

Speaks your
language.

Ask "should I rest tomorrow?" The coach has your last 30 workouts, your current load, your zones, your goals. It reasons with the AI you already pay for.

  • 01

    Your key. Your data. Your AI.

    AES-256-GCM at rest. We never see your Claude or ChatGPT key. Ever.

  • 02

    Zero per-token meter.

    Your existing $20/month subscription covers unlimited coaching. No AI credits. No surprises.

  • 03

    Switch models mid-conversation.

    Claude for nuance, GPT-4o for speed, Gemini for breadth. You're not locked to one vendor.

Coach · Claude 3.5
14:32

Should I rest tomorrow? Race on Saturday.

Yes, rest. TSB is +12 — peak form. Saturday's race will hurt if you push today.

30 min Z1 spin tomorrow to keep the legs turning. Thursday Z2. Friday off or shakeout.

CTL 87 ATL 75 TSB +12

And pace targets for Saturday's 40k TT?

Ask the coach anything…
iOS · Native

The same math.
In your pocket.

TrainCurve on iOS. Native, fast, offline-first. Your CTL, ATL, and TSB on your wrist after every ride. Ask the coach from the saddle, on the climb, mid-Z2.

  • 01

    Live ride tracking. Watch the chart draw in real time. CTL updates within seconds of saving the workout.

  • 02

    Coach in your pocket. Voice-to-text. Ask between intervals. "Should I push the next one?" — real answer, real data.

  • 03

    Offline-first. No signal on the climb. No problem. Sync when you're back at the cafe.

  • 04

    Widgets. Today's TSB on your home screen. Race countdown. CTL trend. One tap to the chart.

TrainCurve iOS app showing the training load chart
Race day

The morning of.
Open the app.

Everything you need before you pin the number. Readiness score, target pace zones, weather, course profile, fueling plan — all on one screen, all from your last 90 days of data.

  • 01

    Readiness 87 · green to race.

    TSB +12, 38h sleep last 3 nights, HRV trending up. You're fresh.

  • 02

    Target: 285W · 4.2 W/kg.

    Based on your 90-day CP curve and Saturday's 18°C, 12km/h wind forecast.

  • 03

    Fueling: 80g carbs/hour.

    Gel every 25 min. Bottles at km 30 and 55. Sip to thirst.

  • 04

    Course: 1,180m climbing, 3 categorized climbs.

    Pace the first 60% conservatively. Last 40% — your form, your call.

Open data

Your data.
Your formats.

Drop a FIT file. Sync Strava in two clicks. Pull from Garmin, Wahoo, Coros, Polar, Suunto. Export the full database as JSON, CSV, or FIT whenever you want. No lock-in. The core platform is open source (AGPLv3) — self-host for your club.

In Strava
In Garmin
In Wahoo
In Coros
In Polar
In Suunto
In FIT/TCX/GPX
TrainCurve Where the math happens.

Banister 1965. Real-time CTL/ATL/TSB. The chart a coach would draw on a clipboard.

Out JSON
Out CSV
Out FIT
Out iOS
Out BYOK AI coach · Webhooks

The paper · 1965

"The performance impulse, or fitness, is a positive function of both the quantity of training and the time elapsed since training occurred."

— Eric W. Banister

Principles

What we
won't compromise.

01

Numbers, not adjectives.

CTL, ATL, TSB, TSS, IF, NP, FTP zones — calculated from your raw FIT files. The Banister 1965 impulse-response model. Free on the free plan. The same one TrainingPeaks charges €240/year for.

02

BYOK. Period.

Your key, your data, your AI. We charge zero per token. AES-256-GCM at rest. Switch between Claude, GPT-4o, Gemini mid-conversation. Your existing $20/month covers unlimited coaching.

03

Open source.

The core is AGPLv3. Self-host if you want. Your training data, in formats you control. Export the full database as JSON, CSV, or FIT. No lock-in. Your data outlives us.

04

EU. GDPR. Local-first.

Data in Frankfurt. Never sold. Forgotten on request. Built in Barcelona for European athletes who care about where their data sits. No third-party trackers, no analytics resale, no ads.

The year

365 days.
Every workout.

GitHub-style heatmap. Every square is a day. Darker = harder. Empty = rest. The shape of a season — the consistency that wins races.

214

Days trained

412h

Total time

38

Day streak

59%

Consistency

96

Avg TSS

+8

vs 2025

JulAugSepOctNovDecJanFebMarAprMayJun
Mon Wed Fri Sun
Less
More
2026 · in progress
TrainCurve weekly recap
Every Sunday

Your week,
in one shot.

A weekly recap delivered every Sunday morning. Total volume, intensity distribution, recovery, the workouts that mattered, the ones that didn't. No algorithm decides what's important — the data does, and you read it like a coach.

  • 01

    Total volume vs. plan.

    12h 30m vs. 13h planned. Close enough. Don't chase it on Tuesday.

  • 02

    Intensity distribution.

    72% Z2, 18% Z3-Z4, 10% Z5+. The 80/20 is intact.

  • 03

    The one that mattered.

    Thursday's 4h Z2 with 4x8min surges. Theerobic work that bought Saturday's race.

  • 04

    Next week, in plain English.

    "Two intensity days, one long Z2, three easy spins. Sunday off. Trust the form."

Pricing

Free for the basics.
€9 for the rest of us.

Free

For athletes who want to see the numbers.

  • Up to 100 workouts
  • CTL / ATL / TSB chart
  • FIT / TCX / GPX upload
  • Mock AI coach (offline)
  • CSV / JSON export
€0 forever
Create account →
MOST POPULAR

Pro

For serious training blocks and race prep.

  • Unlimited workouts
  • Strava + Garmin sync
  • BYOK AI coach
  • TSS, IF, NP, FTP zones, race planner
  • CSV / JSON / FIT export
  • iOS app
€9 per month
Start 14-day trial

Team

For coaches managing multiple athletes.

  • Everything in Pro
  • Up to 25 athletes per seat
  • Coach dashboard
  • Shared BYOK pool (optional)
  • Priority support
€29 per coach / month
Talk to us →
FAQ

Questions,
answered.

The math, the money, the privacy, the devices. If something's missing, our WhatsApp button is at the bottom of the page.

01

What are CTL, ATL and TSB?

CTL (Chronic Training Load) is your Fitness — a ~42-day exponentially-weighted average of your TSS. ATL (Acute Training Load) is your Fatigue — a ~7-day average. TSB (Training Stress Balance) is your Form: CTL minus ATL. The same model Banister published in 1965. The one TrainingPeaks charges €240/year for.

02

What is TSS?

Training Stress Score combines a workout's duration and intensity. One hour at your threshold (FTP) equals 100 TSS. CTL, ATL, and TSB are exponentially-weighted averages of your daily TSS. Computed locally from your FIT files — no upload, no server delay, no API rate limits.

03

Does TrainCurve charge for the AI coach?

No per-token fee. BYOK — bring your own key for Claude Pro or ChatGPT Plus. Your $20/month subscription covers unlimited coaching. We never see your key, never store it in plaintext, never share it. Switch models mid-conversation if you want.

04

Is there a free plan?

Yes. Free forever for your first 100 workouts. No credit card, no trial, no auto-conversion. Pro is €9/month for unlimited workouts and the BYOK AI coach. Team is €29/coach/month for managing multiple athletes.

05

Which devices and apps?

Drop a FIT, TCX, or GPX file. Sync Strava in two clicks. Pull from Garmin, Wahoo, Coros, Polar, Suunto. Open formats in, open formats out: JSON, CSV, FIT. No lock-in. The core platform is open source (AGPLv3) — self-host for your club.

06

Is my data private?

Yes. EU-hosted in Frankfurt. GDPR-compliant by design. AES-256-GCM for your AI provider key. Right to be forgotten on cancel — 30-day purge from production and backups. No third-party trackers, no analytics resale, no ads. Ever.

Drop your
first FIT file.

No credit card. No per-token meter. Just the math your coach uses, the AI you already pay for.

Made in Barcelona · EU-hosted · AGPLv3