ProTriStats methodology
Corrections
Corrections are part of the product, not an embarrassment. Pro triathlon data is messy: penalties, revised results, missing splits, changed categories and inconsistent timing feeds are normal.
- Public pages should avoid leaking internal placeholders such as position 999.
- Data-quality issues should be tracked centrally so the public UI does not need to infer bad states ad hoc.
- Corrections should preserve source attribution and import history.
- Unresolved uncertainty should be visible in plain language.
Issues ProTriStats tracks
Important issue types include races without results, missing split rates, duplicate-looking race names, missing dates or locations, unresolved athletes, suspicious statuses, failed imports and split anomalies.
The internal data health page is where these issues should surface first. Public pages should then convert them into calm, specific copy such as "run split unavailable" or "ranking snapshot incomplete."
Statuses and special cases
Finished, DNF, DNS, DSQ and unknown should be normalized into a result_status field. Legacy placeholders like position 999 should be mapped before they reach result tables.
Shortened courses, penalties, category changes, weather-affected races and post-race appeals should be recorded in source notes or data-quality issues when known.
Correction workflow
A correction should identify the affected race, athlete or ranking row; record the source being used; update the normalized fields; and leave enough import-run or issue history to understand what changed.
When a public correction materially changes a result, the relevant race or ranking page should show a newer updated or verified timestamp.
- - Some historical sources may disappear or only exist as PDFs, screenshots or archived timing pages.
- - Unofficial start lists can change rapidly before race day.
- - A correction can be blocked until the official organizer publishes a revised result.
- - Use explicit status labels instead of placeholder positions.
- - Do not silently turn unknown splits into zeros.
- - Keep uncertainty visible without making the product feel broken.