Inspiration
At the 2024 São Paulo Grand Prix, Williams crashed three times on one rainy Sunday. One car couldn't start the race, the team scored no points, and the repairs came to nearly $4 million. That season their team principal, James Vowles, said crash damage had squeezed the cost cap so hard they would "take a little bit away from next year's cost cap."
A crash takes seconds. Its cost usually reaches finance weeks later, as invoices. Until then the engineers, logistics and finance each keep their own version of the same crash, and the team keeps ordering parts and planning development on numbers that are already wrong. Microsoft's work bringing Azure and AI into how an F1 team runs pushed us to ask what that would look like for the team's finance.
Finance teams run on modules: cash flows, accruals, prepayments, reporting. We built the one for hardware assets. Anneal keeps a Formula 1 team's books in step with the car.
How we built it
Every part of the car has a condition, a remaining life, a spare count and a cost cap status, and every lap, kerb strike and crash changes them.
- Reading the race: OpenF1 (timing, telemetry, race control) and Jolpica (results), with FIA documents captured with Apify. Anneal saw each Williams crash in the car data 9 to 26 seconds before the red flag. Jev (TypeSafe System One) classifies each impact and the parts it likely hit, with confidence gates.
- The response plan: within seconds the agent drafts the team's reaction (spares reserved, factory work orders, freight against the next race's deadline, and the accounting entries), each checked against the team's own history. Claude writes the repair plans, applies edits the Chief of Staff writes in plain words, and drafts each role's brief.
- The books: once the Chief of Staff approves a plan, every line the team has a precedent for posts on its own, whatever the amount. A line with no close precedent in the team's history waits for the Head of Cost Cap. Each entry counts against the cap on the day the part is fitted. The cap excludes depreciation, so wear moves the forecast, never the books.
- SpacetimeDB as the backend: the rules live inside the database. Every decision that moves money or speaks for a person goes through one gate. The caller comes from the connection's identity, and exactly one audit row lands in the same transaction, refusals included. The accounting gateway posts only what the database authorized. Every role's view (Garage, Strategy, Accounting, CFO) subscribes to the same rows, so a crash updates every screen at once.
- The season: after every change, a Monte Carlo model re-runs the rest of the season 10,000 times under the FIA Financial Regulations, in about 80 ms. On São Paulo 2024, the chance of holding P8 fell from 72% to 54% when Albon withdrew, and to 0% by the flag.
- Microsoft: a Business Central connector, Teams and Outlook approvals and an Azure OpenAI auditor (ready to switch on with a tenant's credentials), plus Azure Container Apps templates with Key Vault.
- Frontend: React and Vite with a view for each role, and a three.js pitch page.
On the replay: 2,549 events at about 1 ms each, 22 parts tracked, 18 replacements booked, and the weekend sealed at $3.77M against the "nearly $4M" reported weeks later. A backtest on Williams' 2024 races, learning only from earlier races, got 96% of events right.
Challenges we ran into
- Seeing a crash before race control says anything, from telemetry alone, without naming a driver until a source confirms it.
- Making speed safe: precedent-based posting, with no amount thresholds, that still never lets an agent approve its own work.
- Being honest about uncertainty: every money figure is a band with its evidence, and the press-reported cost is the answer key.
What we learned
Most of what happens after a crash is routine: the same parts, booked the same way. Once a team approves the plan, the routine can run itself. The hard part is the new case, and that is exactly where a person should be.
Next, we want Anneal to learn a team's real repair processes from its own work orders and damage reports (in our simulation of 20 teams, repair-hour error falls from 23% to 11%), run on live timing instead of replays, and switch on Teams and Business Central for a real tenant.
Log in or sign up for Devpost to join the conversation.