For Coaches Coaching workflows

How an Assessment is logged: the data model

Every assessment in the Hub uses the same shape: raw inputs, calculated outputs, plus context and interpretation.

What an Assessment record holds

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.

Fields on every Assessment

What AssessmentType adds

The seeded AssessmentType for each test defines:

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.

What an assessment does NOT update by itself

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".

Seeded assessment types

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.

Last updated May 12, 2026

Still stuck? Ask us a question and we'll write up an answer.

Ask a question