Every assessment in the Hub uses the same shape: raw inputs, calculated outputs, plus context and interpretation.
Every test you log in the Hub (FTP, CSS, sweat rate, body
comp, etc.) lives as an Assessment row. The shape is the same
across all types so the data is queryable and trend-comparable.
The variable bit (which fields exist) is driven by the
AssessmentType record, not by the Assessment itself.
time_400m, time_200m, power_3min, weight_before.css_pace, cp, w_prime, sweat_rate.The seeded AssessmentType for each test defines:
css, critical_power,
cda, sweat_rate, rsi).This means when you log a new assessment, the form is generated from the AssessmentType's expected_inputs schema. The calculator linked on the type runs against your raw inputs and writes the result back into the outputs field.
Logging an assessment does not automatically update the
athlete's threshold metrics (CSS, CP, FTP, etc.). Those come
from the linked calculators when run through the /calculators/
catalog, which writes a MetricHistory row tagged with source
assessment or calculator. The assessment record is the test
artefact (raw inputs + outputs + context); the MetricHistory
row is the canonical "current threshold".
The Hub ships about two dozen seeded AssessmentType records
across six domains (swim, bike, run, nutrition, mind,
transition). Some are fully populated with protocol steps and
input/output schemas; others (e.g. Ramp Test, Race Execution
Review) exist as placeholders without protocols filled in yet.
The dedicated assessment articles in this help center document
the populated ones.
Still stuck? Ask us a question and we'll write up an answer.
Ask a question