---
title: "Race Control: We put a live grand prix inside WhatsApp"
description: "Race Control is F1inTO's WhatsApp race-day concierge: tickets, draw entries and live timing, fed by a timing stream that changes many times a second."
canonical: https://www.culturecartel.ca/work/race-control
language: en-CA
publisher: Culture Cartel
---

F1inTO

# Race Control

We put a live grand prix inside WhatsApp.

- **Client:** F1inTO
- **Format:** Digital
- **Industry:** [Events and motorsport](https://www.culturecartel.ca/industries/events-and-entertainment-marketing)
- **Location:** Toronto, Canada
- **Year:** 2026

Illustrative Feed lines follow the real timing format with made-up values, and the messages are made up. The rate is what we measured in a recorded race: about twelve updates a second.

- **Timing updates a second, measured in a race:** ~12
- **From the track to the database:** 1.5s
- **Live pipe on its first race weekend, zero errors:** 23h
- **People in the closed test:** 10

Services

- AI concierge
- WhatsApp Business
- Live data integration
- Systems engineering
- Guardrails and testing

Practice

- [AI](https://www.culturecartel.ca/services#ai)
- [Design & Digital](https://www.culturecartel.ca/services#digital)
- [Experiences](https://www.culturecartel.ca/live)

Live links

- [f1into.ca](https://f1into.ca)

[Start a project like this](https://www.culturecartel.ca/start?service=ai&ref=race-control)

## The brief

F1inTO fans already use the race-day app to enter the draw and play along in the room. The open question was the rest of the race day: the hour before doors, the laps when you are at the bar, the week until the next one. We wanted the room’s concierge to live in the app everyone already has open. That app is WhatsApp.

## The build

Race Control is a WhatsApp number fans can talk to. A fan taps one button in the race-day app, WhatsApp opens with a code already typed, and they hit send. That message links their phone to their fan profile, with no form, and it counts as consent because they sent it.

From there it answers like someone who knows the race and knows you. Tickets for the next race day. How many draw entries you have. The live order and gaps while the cars are out. Your driver’s team radio, as it happens.

Under it is a live data pipe. F1’s timing feed changes more than three times a second; in our recording of the Dutch Grand Prix it averaged about twelve updates a second across thirteen feeds. One always-on process holds that stream open, merges every change into a single state and writes it to the database every 1.5 seconds. Everything Race Control says is read from that state.

## The hard part

Moving data fast was the easy half. Saying only what the data supports was the hard half. On its first test weekend the pipe ran for 23 hours without an error, and the test showed us exactly where a conversation could get ahead of the data. So we built a truth layer: one answer to “what is happening right now”, decided by the session status and never by a lap counter or a clear track.

Facts like the leader, the lap or a flag are now answered by code in microseconds, before any model is involved. Anything conversational goes through a gate that blocks a number the feed does not support. Stale data is treated as absent, never as current. And the recording of that race, red flag and all, replays as a test before every change.

## Where it stands

Race Control has run as a controlled test, not a public launch: a closed group of ten on a test allowlist for the Dutch Grand Prix weekend, then small groups at the races that followed. Consent, an opt-out that is honoured on the spot, a monthly spend cap and alarms that page a person were there from the first message.

Race Control on WhatsApp

## The race, in your chat.

Fans message Race Control like they would message a friend at the track. It knows the race as it happens, and it knows them: their entries, their team, their driver.

1. 01 Tickets The next race day, one tap from the chat.
2. 02 Draw entries How many you have today, and how to earn more.
3. 03 The tower Live order and gaps while the cars are out.
4. 04 Team radio Your driver and his engineer, as it happens.

The tower in this phone runs live so you can see the feed underneath it. In WhatsApp, every answer is read from that same state at the moment you ask.

**Race Control** online

Illustrative conversation. Made-up messages, no real fans.

Race day

Morning. What time is lights out?

8:41

Lights out at **9:00**. You are checked in, and you have **6 entries** in today’s draw.

8:41

Tap below for the race, or just ask.

8:41

Race day menu

Race update right now

9:24

LIVE LAP **23** /57 GREEN

1. 1 NOR Interval
2. 2 PIA +0.842
3. 3 RUS +1.370
4. 4 VER +2.105
5. 5 LEC +0.611
6. 6 ANT +3.420

Interval to car ahead **0** updates

9:24

Team radio · car 81 to his engineer

0:09

9:26

wait is that a red flag??

9:31

Yes. Red flag on lap 24 and the race is suspended. Timing feed as of **9:31:08**.

9:31

Need tickets for the next one

10:52

**F1inTO race day tickets** The next race, one tap

Here you go. Same room, next race.

10:52

Illustrative Made-up messages. No real fans, numbers or chats.

How it is built

## From the track to your phone in seconds.

Six parts and one rule: the worst thing the system can do is say something the data does not support. Scroll to build it.

1. 01 The feed F1’s live timing arrives over a websocket: thirteen feeds, from the timing tower to race control messages and team radio. In our recording of a race it changed about twelve times a second.
2. 02 The always-on host One small process on a home connection, because F1 turns cloud servers away. It merges every change into one state, writes it to the database every 1.5 seconds and records every frame for replay.
3. 03 The database and the alarms Supabase holds the race state, the fans, their entries and their consent. A watchdog checks the feed every minute of a session, and a 7am canary reports on race mornings.
4. 04 The truth layer One function answers what is happening right now. Session status decides, never a lap counter or a clear track, and stale data counts as absent, never as current.
5. 05 WhatsApp and the model Facts like the leader, the lap or a flag are answered by code in microseconds. Conversation goes to the model with the live state attached, and a gate blocks any number the feed does not support.
6. 06 The fan Tap once in the app, send the code WhatsApp has typed, and your phone is linked. No form. Tickets, entries, the tower and your driver’s radio arrive on the phone you already hold.
7. 07 Guardrails, everywhere One door for every message checks consent, the 24 hour window, the spend cap and the test allowlist. Opt-outs are honoured on the spot, and radio and boards stop at the flag.

The truth layer, replaying a real race

## Fast is easy. True is the job.

The Dutch Grand Prix, as the feed told it. The pipe never missed a beat that weekend. The hard part was meaning: a lap counter that ticks before the start, a track that reads clear while the race is still stopped. This is how the truth layer reads the same signals now.

Race Control says **Finished** Toronto *11:15*

1. 08:06 Feed LapCount reads 1. SessionStatus is still Inactive. We say Scheduled. A lap counter is not a race.
2. 09:03 Feed SessionStatus: Started. We say Running.
3. 09:05 Feed SessionStatus: Aborted. Race control: RED FLAG. We say Suspended. The red flag stays on the record.
4. 09:23 Feed TrackStatus: AllClear. We say Still suspended. A clear track is not a restart.
5. 09:33 Feed SessionStatus: Started. We say Running again.
6. 11:08 Feed SessionStatus: Finished. We say Finished. Radio and boards stop at the flag.

- **people:** **10** A closed test group on the Dutch Grand Prix weekend, behind a test allowlist.
- **zero errors:** **23h** The live pipe’s first race weekend, start to finish.
- **recorded race:** **1** Red flag, restart and chequered flag, now replayed as a test.
- **guesses:** **0** Stale or missing data is said out loud, never filled in.

Run as a controlled test, not a public launch: a closed group on a test allowlist for the Dutch Grand Prix weekend, then small groups at the races after. Every fan-facing switch stays with a person.

What this could do for your business

## Same engine. Your live data.

Swap the timing feed for any number that moves: sales, stock, trucks, turnstiles, booth scans. Keep the host, the truth layer, the guardrails and the chat. These are concepts to show the shape, not client work.

- 01 Sales floor Concept Deals closed today **37** Where are we against target? At 84% with three hours left. The east team just passed the west.
- 02 Logistics Concept Deliveries on time **96.2** % Is the Mississauga drop on time? Eleven minutes late, traffic on the 401. The new ETA is 2:40.
- 03 Inventory Concept Units live across stores **18,240** Size 10 in black, anywhere near Yonge? Two at Queen West, one at the Eaton Centre. Want one held?
- 04 Stadium Concept Fans through the gates **31,480** Shortest food line near section 112? Concourse B, about three minutes. Gate C is fastest out after the game.
- 05 Trade show Concept Booth scans today **412** Who should I meet in the next hour? Three people who scanned your booth are in Hall 2 now. Want an introduction?
- 06 Yours Point it at your live data. If the number matters to someone in the moment, it can live in their chat, with the same guardrails. [Talk to us](https://www.culturecartel.ca/start?service=ai&ref=race-control)

Illustrative concepts. Made-up numbers and messages, no client data.

Where this is going

## From one community to a platform.

We are planning the multi-tenant version now: one engine for motorsport teams, tracks and series, each with its own fans, branding and data, a wallet pass as the credential and a back end that shows sponsors exactly who their activation reached. It is in planning, not live. The engine underneath is the one on this page.

We build this for you

## Live data, in the chat your people already use.

- **The integration.** Your feed, API or database, held open and merged into one state.
- **The truth layer.** One answer to what is happening, so nothing contradicts the data.
- **The channel.** WhatsApp with consent, opt-out, spend caps and a test mode built in.
- **The console.** Live chats, a composer that previews before it sends, and alarms that page a person.
- **The proof.** Real days recorded and replayed as tests before every change.

[Start a project](https://www.culturecartel.ca/start?service=ai&ref=race-control) [See the CMO Council Circle build](https://www.culturecartel.ca/work/cmo-council-na-circle)

F1inTO is an independent fan community run by Culture Cartel Live. It is not affiliated with Formula 1 or the FIA. Timing data shown is illustrative.

## Start a project like this.

AI built into your marketing: found by AI search, made faster, run smarter. Tell us where you are and where you need to be.

[Start a Project](https://www.culturecartel.ca/start?service=ai&ref=race-control) [Ask about this project](https://www.culturecartel.ca/lens?mode=ask&ref=race-control)

Related work

- [F1inTO](https://www.culturecartel.ca/work/f1into): We took F1inTO over and built it into the biggest race day in Toronto. · Live / Events and motorsport / Toronto / 2026

- [CMO Council Circle](https://www.culturecartel.ca/work/cmo-council-na-circle): We turned an advisory board into a private network on WhatsApp. · Digital / Professional networks / North America / 2026

[Next project Sidebar A tavern that times dinner to the show and brings you back. Keep scrolling](https://www.culturecartel.ca/work/sidebar)

---

Culture Cartel, 8 The Esplanade, Toronto, ON M5E 0A6. info@culturecartel.ca, +1 647 459 2154. Start a project: https://www.culturecartel.ca/start
