Skip to content

🏃 Half-Marathon Time Predictor

AI Project · ML Inference Web Application


Half-Marathon Time Predictor is an AI-powered web application for estimating half-marathon finish time using data available before race day (pre-race inference).

The project demonstrates a production-grade machine learning pipeline, from data validation and model versioning to real-time inference in a cloud-deployed Streamlit application. The models were trained based on data from the Wrocław Half Marathon in 2023 and 2024.

▶️ Live Demo


🔹 Key Features

  • Pre-race time prediction (no data leakage)
  • Two complementary ML models:
  • 5K-based baseline model
  • 5K + 10K enhanced model
  • Automatic model selection based on available input data
  • Free-text input with LLM-based data extraction
  • Regex fallback when LLM is unavailable
  • Strict schema validation (Pandera)
  • Realistic pace visualization (km-by-km)

🔹 Use Cases

  • race time estimation before competition
  • training goal setting
  • performance benchmarking
  • ML system design reference (pre-race inference)

🧠 Models (Overview)

PRE_RACE_5K - Inputs: sex, age, 5 km time
- Designed for minimal input scenarios
- MAE ≈ 5 minutes on 2024 test data

PRE_RACE_10K - Inputs: sex, age, 5 km time, 10 km time
- More accurate pacing representation
- Lower prediction error than 5K-only model

The application automatically selects the optimal model based on provided data.


🧠 Architecture (Overview)

  • Frontend / UI: Streamlit
  • ML Layer: PyCaret (scikit-learn)
  • Input Validation: Pandera + JSON schema
  • LLM Extraction: OpenAI API (optional)
  • Monitoring: Langfuse (optional)
  • Model Distribution: GitHub Releases
  • Deployment: Streamlit Community Cloud

The architecture emphasizes data correctness, versioned inference, and safe handling of partially specified user input.


▶️ Live Demo


Application screen


Tech stack:
Python · Streamlit · PyCaret · scikit-learn · Pandera · OpenAI API · Langfuse · GitHub Releases

Half-Marathon Time Predictor to aplikacja oparta o AI, służąca do szacowania czasu ukończenia półmaratonu na podstawie danych dostępnych przed startem biegu (pre-race inference).

Projekt prezentuje produkcyjny pipeline ML, obejmujący walidację danych, wersjonowanie modeli oraz inferencję w aplikacji webowej. Modele zostały wytrenowane w oparciu o dane z Półmaratonu Wrocławskiego z lat 2023 i 2024.

▶️ Demo aplikacji


🔹 Funkcjonalność

  • Predykcja czasu biegu przed startem (bez data leakage)
  • Dwa modele predykcyjne:
  • model bazowy (5 km)
  • model rozszerzony (5 km + 10 km)
  • Automatyczny wybór modelu
  • Jedno pole tekstowe jako wejście
  • Ekstrakcja danych przez LLM
  • Regex fallback przy braku LLM
  • Walidacja danych przez Pandera
  • Realistyczna wizualizacja tempa km-po-km

🔹 Zastosowania

  • estymacja wyniku przed zawodami
  • planowanie celów treningowych
  • porównanie formy biegowej
  • przykład architektury ML pre-race

🧠 Modele (skrót)

PRE_RACE_5K - Dane wejściowe: płeć, wiek, czas 5 km
- Minimalne wymagania wejściowe
- MAE ≈ 5 minut (test 2024)

PRE_RACE_10K - Dane wejściowe: płeć, wiek, czas 5 km, czas 10 km
- Lepsze odwzorowanie tempa zawodnika
- Niższy błąd predykcji niż wariant 5 km

Aplikacja automatycznie dobiera model na podstawie dostępnych danych.


🧠 Architektura (skrót)

  • Frontend / UI: Streamlit
  • Warstwa ML: PyCaret (scikit-learn)
  • Walidacja danych: Pandera + schema JSON
  • Ekstrakcja danych: OpenAI API (opcjonalnie)
  • Monitoring: Langfuse (opcjonalnie)
  • Dystrybucja modeli: GitHub Releases
  • Wdrożenie: Streamlit Community Cloud

Architektura została zaprojektowana z naciskiem na spójność danych, bezpieczną inferencję i łatwe wersjonowanie modeli.


▶️ Demo aplikacji


Application screen


Stack technologiczny:
Python · Streamlit · PyCaret · scikit-learn · Pandera · OpenAI API · Langfuse · GitHub Releases