live data product · race intelligence
F1 Bulletin
A race-weekend intelligence product that connects timing data, news, circuit context and probabilistic predictions — and scores its own forecasts after every race.
What it answers
Who has genuine race pace rather than one quick lap, how much should current form matter at this particular circuit, and when the prediction was wrong, how wrong was it? Those answers normally live across timing data, standings, race reports and circuit guides; this product connects them so each signal adds context to the others.
What it runs on
Public Formula 1 session data through FastF1 — laps, stints, telemetry and qualifying — plus calendar and standings feeds, circuit context, motorsport news sources, and generated prediction artifacts. GitHub Actions orchestrates ingestion, intelligence refreshes, session loading, prediction generation and post-race scoring on a schedule.
How it is built
- FastF1 feeds a Python ETL for race sessions and replay data; heavy processing stays in Python and SQL.
- The prediction workflow anchors on historical priors when season evidence is thin, then shifts weight to recent form as races complete.
- Monte Carlo simulation produces win, podium and finishing-position probabilities rather than a flat P1–P20 list, so two drivers at similar predicted positions can carry very different risk.
- News becomes intelligence through local embeddings from a compact ONNX model, semantic clustering, sentiment, momentum and regulatory-risk signals — incremental by design, skipping unchanged articles and bounding vector retention.
- Neon Postgres holds compact, app-ready tables; the Next.js product reads those directly instead of recomputing models on request.
What makes it different
- The prediction stays accountable after the chequered flag. Position error, podium hits, winner accuracy and probability quality remain visible, so a forecast is evaluated rather than presented as unsupported certainty.
- Circuit context changes how form should be read. Street circuits, high-degradation races, power-sensitive layouts and low-overtaking tracks reward different strengths, so the same form means different things week to week.
- The architecture keeps the expensive work offline. Ingestion, modeling and enrichment run on scheduled GitHub Actions, leaving the public app fast because it only reads prepared data.
- The news layer is engineered for cost and drift, not just capability: unchanged articles are skipped, vectors expire on a bounded schedule, and storage growth is guarded.
Scope and limits
- Predictions are probabilistic and are scored openly against results — including when they miss.
- The intelligence layer runs on the Neon-native path in public; Snowflake remains an optional enrichment route rather than a requirement.
- Coverage depends on public session and news sources rather than proprietary team telemetry.
F1 Bulletin is an independent fan project. It is not affiliated with, endorsed by, or associated with Formula 1, Formula One Management, the FIA, or any Formula 1 team. Names and marks belong to their respective owners.