Ausgangslage
Pacing-Rechner liefern eine einzige Durchschnittszeit — aber ein Marathon mit 600 Höhenmetern bei 28 °C läuft sich völlig anders als auf flacher, kühler Strecke. Und KI-generierte „Trainingspläne" erfinden gern Zahlen, denen man nicht trauen kann.
Lösung
Die Zahlen kommen aus deterministischem, sportwissenschaftlich fundiertem TypeScript-Code: Daniels VDOT, Riegel, Strava-GAP, Hitze- und Wind-Modelle, ISSN-Verpflegung. Die KI erklärt diese Zahlen nur — und wird gegen die Quelldaten auf ±1 % validiert, sonst fällt sie auf ein geprüftes Template zurück. Vertrieb über programmatisches SEO: 79+ Rennseiten werden statisch generiert.
Im Kern
Deterministische Engine
Kilometer-Splits inkl. Höhen-, Hitze-, Höhenlagen- und Wind-Anpassung — keine erfundenen Zahlen.
Validierte KI
Die Erklärung muss die berechneten Werte auf ±1 % treffen, sonst greift ein geprüftes Template.
Race-Week-Wetter
Open-Meteo-Vorhersage mit Klima-Fallback, dazu Gefahrenzonen und Verpflegungsplan.
Programmatisches SEO
79+ statisch generierte Rennseiten plus freie Rechner (VDOT, Pace, Hitze).
Code-Einblick
// Höhen-adjustiertes Pace je Steigungsgrad — rein deterministisch export function gradeAdjustedPace(flatSecPerKm: number, gradePct: number) { if (flatSecPerKm <= 0) throw new Error('pace must be positive') return flatSecPerKm * gradeAdjustmentFactor(gradePct) } // Strava-GAP-Grid: Pace je Steigung relativ zur Flachstrecke export function gapGrid(base: number, grades: number[]) { return grades.map((g) => { const pace = Math.round(gradeAdjustedPace(base, g)) return { gradePct: g, pace, deltaSec: pace - base } }) }
Tech-Stack
Ergebnis
Live unter trainingflow.eu — die erste Strategie ist gratis, danach Race-Pass oder Jahres-Abo.