Race control
Race control (also called VCC — Venue Control Centre) is a web-based dashboard that provides a real-time overview of a race. It's designed for officials monitoring the race from a fixed location — typically a control room at the venue.
Race control is accessed through the web interface at app.raceranger.com.
Who can access it
Race control is available to officials whose role has the race view permission enabled. This typically includes:
- Head Referee
- Technical Delegate
- Chief Venue Control Centre / Assistant Venue Control Centre
- Chief Technology / Assistant Technology
- Organisation Admin
What you see
The race control dashboard shows a tabbed interface across the top — Team, Athletes, Race log, Penalties and Incidents, Race map, and Drafting map — with a live clock, the race name, and Active / Not active status indicator above it. The currently selected tab is highlighted with a teal underline.
Team
The default landing tab. Shows three stat cards at a glance — how many officials are in race mode, how many are actively tracking, and how many need attention (highlighted in amber when the count is non-zero). Below the cards, officials are grouped by role (LOC, Medical / CMO, Technical Delegate, Technical Official) with a tile for each person showing their current status indicator dots.

When a ready check is in progress for a race, a READY card appears alongside the others showing the count of officials who have confirmed. The card turns green once everyone is ready.
Athletes
A filterable roster of all athletes in the race. A stats bar across the top summarises the field — TOTAL athletes, ACTIVE (with any activity), PEN and INC counts, and OUT (out of race). Cancelled and declined penalties, and cancelled incidents, are withdrawn decisions, so they're left out of these counts and the per-athlete pills.
Three filter chips below the stats bar narrow the list to athletes With activity (any penalty, incident, or status change), Out of race (DNF, DSQ, eliminated, or withdrawn), or Imported only (synced from the start list rather than entered manually).

Each athlete row shows their bib number, name, a nationality flag and 2-letter code, and coloured status pills — DRAFT, PEN ×N, INC ×N, DNF, DSQ, LAP, and more. Tapping a row opens a detail panel with the athlete's identity block (source — imported vs manual — bib, nationality, category, and external / athlete IDs) followed by a full chronological timeline of their penalties and incidents; each timeline entry can be tapped to open the full review dialog.
A banner appears when no start list has been imported, as athletes only appear once a penalty or incident is filed against them.
Importing the start list
When the race is wired to a start-list program and your role can edit the event, a green IMPORT button sits in the stats bar. Tapping it pulls (or re-pulls) the start list from the linked program via the athlete-sync service and reports how many athletes were synced. Once a race has been synced at least once, a "Synced Nm ago" timestamp appears next to the button so you can tell how fresh the roster is. The live roster repopulates on its own as the sync completes.
Race log
A chronological record of every action in the race — penalty submissions, status changes, incident updates, weather updates, race start/stop transitions. Each entry shows who performed the action, when, and what changed (CREATE / UPDATE_STATUS_APPROVED / AUTO_WEATHER_LOGGED / etc.).
At the top the tab shows summary tiles: total log entries (last 15 minutes and last hour breakdowns), penalties to approve, and the latest weather reading (air temp, WBGT, wetsuit guidance).

Logging or AI-classifying from the Race log
The submit row at the top of the Race log tab lets a TO drop a plain log entry or hand a freeform description to the AI classifier.

- Log — writes the summary as a manual log entry. No classification, just an audit record.
- AI (visible when your role has
canUseAI) — calls theanalyzeAndCreateIncidentCloud Function, which uses Firebase Vertex AI to either create a penalty/incident from the description or prompt for a follow-up question if there isn't enough information.
Typing "Athlete 42 drafted behind 38 on the bike for about 30 seconds, no overtake attempt." and tapping AI creates a new penalty entry against athlete 42:

If the description is ambiguous the AI replies with a follow-up question dialog instead of creating the entry directly — answer the question and the AI either resolves the classification or asks again.
Penalties and Incidents
A live list updating in real time as officials on the course submit. The filter pills at the top (All / Penalties / Incidents) switch between the combined view, penalties-only, and incidents-only.
Each row shows the type badge (PEN / DRF / INC / DNF), athlete number, name, subcategory, status badge (Approved / Open / Closed / CRIT), and timestamp. Tap a row to open the full review dialog (not shown here).


Above the list, three category cards summarise the totals: a penalties-only card with drafting-vs-standard breakdown, an incidents card with open-vs-closed and critical count, and an activity card with recent-minute counters.
The two quick-filter chips at the top of the table — Critical only, To review only, Lapped, Eliminated — further narrow the list without affecting the All/Penalties/Incidents filter pill.
Race map
An interactive map showing:
- The course route (swim, bike, run) if a course map has been uploaded.
- Live position markers for officials currently sharing their location.
- Penalty and incident location pins, labelled with athlete number.
A right-hand panel lists the officials with their colour-coded markers on the map so a controller can see who is where at a glance.

Drafting map
On a race with drafting devices enabled, the Drafting map shows live telemetry for each athlete wearing a unit — their current draft duration (seconds inside the 12 m drafting box), status pill (Drafting / Clear / Penalised), and recent trend. This is the same data bike officials see on their tablets, but in a wider grid suitable for a control-room monitor.
When a race has no drafting devices configured (e.g. the demo Sprint Age Group race), the tab shows a "This race doesn't have RaceRanger drafting units" empty state.

Chat
Access to the event's chat channels directly from the dashboard, so you can coordinate without switching screens. The chat opens as a floating panel at the bottom-right of every tab (the small "Chat" button visible in the bottom-right corner of the screenshots above).
When to use it
Race control is most useful for:
- Venue control centre officials — monitoring the entire race from a fixed location, coordinating responses to incidents.
- Technical delegates — keeping an overview of the race while managing officials and handling escalations.
- Head referees — reviewing penalties and incidents as they come in, approving or declining from the dashboard.
Mobile vs web
The mobile app's race mode is designed for officials on the course — quick penalty submission, voice commands, location tracking. Race control on the web is designed for officials at a desk — broader overview, multiple data streams visible at once, larger screen real estate.
Both show the same underlying data in real time.