AI Physical Fitness Monitoring via Sensor Data

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Physical Fitness Monitoring via Sensor Data
Medium
~2-4 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

AI-based fitness monitoring system based on sensor data

Wearable devices—Whoops, Oura Ring, Garmin, Apple Watch—continuously collect biometric data. An AI system transforms this stream of raw data into actionable insights: assessing training readiness, recovery, and long-term progress.

Data from wearable devices

Cardiovascular metrics:

  • HR (Heart Rate): resting, maximum, load zones
  • HRV (Heart Rate Variability): RMSSD, SDNN - a key indicator of the autonomic nervous system
  • SpO2 (blood oxygen saturation): 95-100% normal

Activity and movement:

  • Steps, calories, active minutes
  • Gyroscope + accelerometer: movement type (walking, running, cycling)
  • GPS track (during training)

Dream:

  • Stages: REM, Deep, Light sleep
  • Total duration
  • Sleep efficiency (time asleep / time in bed)
  • Sleep consistency (regularity of sleep/wake-up time)

Skin temperature:

  • Deviation from personal baseline: indicator of illness (increase), ovulation (women)

Recovery Score model

def calculate_recovery_score(hrv_today, hrv_baseline,
                              sleep_quality, sleep_duration,
                              resting_hr, resting_hr_baseline):
    """
    Composite recovery score: 0-100
    """
    # HRV score: нормализованное отклонение от персонального baseline
    hrv_score = min(1.0, hrv_today / hrv_baseline)

    # Sleep score: качество и продолжительность
    sleep_score = (sleep_quality * 0.5 + min(1.0, sleep_duration / 8.0) * 0.5)

    # HR score: тахикардия покоя = снижение восстановления
    hr_score = max(0, 1.0 - (resting_hr - resting_hr_baseline) / resting_hr_baseline)

    # Взвешенный composite
    recovery = hrv_score * 0.5 + sleep_score * 0.35 + hr_score * 0.15
    return recovery * 100

The Whoop system uses a similar methodology. Recovery < 33% = red (light activity), 34-66% = yellow (moderate), 67%+ = green (intense training).

Personal physiological basis

Individual baseline vs. population norms: The key principle is comparison with one's own baseline, not with the population "norm":

class PersonalBaseline:
    def __init__(self, lookback_days=30, percentile=50):
        self.lookback = lookback_days
        self.percentile = percentile

    def fit(self, history):
        self.hrv_baseline = np.percentile(history['hrv'], self.percentile)
        self.hr_baseline = np.percentile(history['resting_hr'], self.percentile)
        self.sleep_baseline = np.percentile(history['sleep_hours'], self.percentile)
        return self

    def deviation(self, today):
        return {
            'hrv_dev': (today['hrv'] - self.hrv_baseline) / self.hrv_baseline,
            'hr_dev': (today['resting_hr'] - self.hr_baseline) / self.hr_baseline,
            'sleep_dev': (today['sleep_hours'] - self.sleep_baseline) / self.sleep_baseline
        }

Sports results forecast

Fitness-Fatigue model (Banister):

Performance(t) = Fitness(t) - Fatigue(t)
Fitness(t) = Σ TSS(i) × exp(-(t-i)/τ_fitness), τ=45 дней
Fatigue(t) = Σ TSS(i) × exp(-(t-i)/τ_fatigue), τ=15 дней

ML enhancement: τ_fitness and τ_fatigue are personal parameters estimated from data using nonlinear optimization (scipy.optimize) based on training history and test results.

Peak performance timing: If there's a competition, we plan tapering (load reduction) so that fatigue is reduced while fitness is maintained. The model selects the optimal schedule.

Early Illness Detection

Sick day prediction:

def illness_risk_score(temp_deviation, hrv_drop, hr_elevation, symptom_report):
    """
    Повышение температуры кожи + падение HRV + тахикардия покоя
    = ранний признак инфекционного заболевания
    """
    if temp_deviation > 0.5 and hrv_drop < -0.2 and hr_elevation > 5:
        return 0.8  # высокий риск
    return 0.1

Research (Garmin/Stanford COVID study, 2020) shows that wearables detected COVID 0-2 days before symptom onset in 63% of participants through changes in HRV and RHR.

Long-term progress

VO2max estimation:

  • From HR and running speed data: Firstbeat methodology
  • Validity: ±3-5 ml/(kg min) vs. laboratory test

Training Load Progression: Visualization of training load dynamics for weeks 12-52. Periodization: are the planned accumulation and deloading phases visible?

Adaptation tracking: With the same workload, a decrease in HR = adaptation (increased fitness). The trend of resting HR and HRV over the course of a season is an objective marker of physiological progress.

Integration and API

Device APIs:

  • Garmin Health API, Garmin Connect API
  • Whoop Developer API
  • Apple HealthKit (iOS)
  • Google Health Connect (Android)
  • Polar API, Suunto API

Aggregation platforms: Terra API, Wearipedia – unified access to data from different devices.

Personal dashboard: web + mobile app. Daily recommendations, weekly summary, long-term trends.

Timeframe: Integration with 2-3 device APIs + recovery score + dashboard — 6-8 weeks. Personalized fitness-fatigue model + illness detection + trend analytics — 3-4 months.