Methods

How VitalForg produces each result

Every flag in VitalForg is labelled with the method that produced it. This page sets out each method, its inputs and its limitations.

VitalForg uses four kinds of method: calculations, fixed rules, statistical comparisons with each athlete’s own baseline, and one machine-learning model. None of them predicts injuries or gives medical advice. Flags highlight changes for qualified staff to review, and staff decide what, if anything, to do.

Calculated

Session load

Formula
duration (minutes) × session RPE (CR-10)
Unit
arbitrary units (AU)
Inputs
session duration and RPE from imported records

Limitations. Depends on athletes reporting RPE consistently. It measures internal load only.

Rule-based

Rapid increase in training load

Flag when
acute:chronic workload ratio (ACWR) above 1.5 and weekly load at least 30% higher than the previous week
Inputs
daily session load

Limitations. A high ratio can be planned, for example a return from a lay-off. ACWR is not a validated injury predictor.

Statistical

HRV below personal baseline

Flag when
7-day mean ln(RMSSD) more than 1 SD below the athlete’s previous 28 days
Needs
at least 4 valid days in the week and 14 in the baseline
Inputs
morning HRV readings

Limitations. HRV is affected by sleep, illness, travel, alcohol, measurement timing and posture. It is not a clinical assessment.

Rule-based

Lower jump height than recent tests

Flag when
latest countermovement jump more than 5% below the mean of the previous up to 4 tests (needs at least 3)
Inputs
jump test results

Limitations. Single tests are sensitive to warm-up, footwear and motivation. Confirm with a repeat test.

Data quality

Incomplete morning sensor data

Flag when
fewer than half of the days in a week have a valid HRV reading
Inputs
morning HRV readings

Limitations. Missing readings are excluded from calculations, so comparisons for that athlete are less reliable until coverage improves.

Machine learning

Unusual morning pattern

What it does
Detects unusual recovery patterns across HRV, resting heart rate, sleep and soreness.
Model
Isolation forest (unsupervised anomaly detection), version unusual-morning 1.1: 100 trees, 256-row samples, fixed seed so the same records always give the same result.
Inputs
For each morning, how far each athlete’s 3-day average of ln(HRV), resting heart rate, sleep and soreness sits from their own previous 28 days.
Training
Trained in the browser on the open workspace’s own records only. Nothing is shared between customers or sent to another service.
Flag when
At least 2 mornings in a week score among the most unusual 2% of all mornings in that workspace.
Staff feedback
Staff can rate each flag as Useful or Not useful. Once 10 of the model’s flags in a workspace have been rated, the alert level adjusts: the top 1% if fewer than half were useful, the top 3% if at least 80% were useful, otherwise the standard 2%. The model card in the app shows the ratings and the level in use. Ratings stay in that workspace.
When it does not run
It needs at least 300 complete mornings with 4 weeks of history. Below that, the model is not trained, the app says so, and the other checks still run.
Baseline
Compared with the single-metric HRV rule above.
Evaluation
On a synthetic test dataset with 40 planted combined changes, the model flagged 27 (68%) and the HRV rule 4 (10%). It flagged 8 of 1,260 athlete-weeks with no planted change. These results come from synthetic data and do not show accuracy on real athletes.

Limitations. The model finds combinations that are rare for a workspace; it does not know why. Rare is not the same as harmful: travel, a new sensor or a change of routine can cause it. It has not been validated on real athletes, and it is not a diagnosis or an injury prediction.

Explanations

Why this was flagged

Every flag explains why it was raised. VitalForg writes the explanation from the values shown beside it: for the machine-learning model, the markers that were furthest from the athlete’s own normal and how far; for rules and baseline comparisons, the observed value, the baseline and the threshold. The explanation adds no information beyond those values, and it is not a diagnosis.