Six integrated cases around Formula 1 data — a Rust telemetry historian, layered ETL, a RAG agent with SQL tool-calling, comparative dashboards, strategy ML and a Flutter app. The same patterns DeepCode applies in regulated industrial environments (AVEVA PI System, GxP), rebuilt in the open to demonstrate applied knowledge end to end.
Every component consumes or feeds another. Historical data flows through a layered ETL into DuckDB; telemetry flows through a purpose-built historian into Parquet; services expose both to humans, dashboards and mobile.
1 — solution architecture. Cyan: historical/statistics flow. Purple: telemetry flow (dashed: PIMS query API consumed directly by mobile).
Deliberately lean: everything is reproducible from a laptop, CI runs on GitHub Actions, and each deployable finds its natural (free-tier-friendly) home. The AI agent's inference is pluggable — a headless Claude backend by default, swappable for an internal API.
2 — build, CI and runtime topology. Everything reproducible locally; deploys per component.
Three core processes modeled in BPMN notation: circles are events, rectangles are tasks, diamonds are decision gateways.
Each case is a self-contained repository with its own README, tests and CI — and a deliberate demonstration of one discipline.
Layered ETL (raw → staging → marts) over the full history of Formula 1 (1950–today) via the Jolpica API. Idempotent, rate-limit-aware, with data-quality tests as first-class citizens: uniqueness, referential integrity, range checks.
A minimal PIMS — the historian pattern used in industry (AVEVA PI) — built from scratch: tag/time-series data model, swinging-door compression with measured compression ratio, partitioned Parquet storage, and an HTTP query API with downsampling and interpolation.
PI-Vision-style comparative panels: driver vs driver speed/throttle/brake traces by distance, lap-by-lap gaps, tyre-stint degradation and position evolution — consuming the PIMS query API.
A headless agent that answers F1 history questions. Factual questions are resolved by SQL tool-calling (exact numbers, never hallucinated); narrative questions by RAG over a licensed corpus. Ships with a golden Q&A eval set and automated scoring. Inference is pluggable (headless Claude by default, internal API adapter).
Tyre-degradation and pit-window models trained on the platform's own marts and telemetry — with honest validation and feature documentation.
Android/iOS client for the platform: chat with the history agent, browse seasons/drivers/results via the stats REST API, and view telemetry comparisons — offline-first with a local cache.
VER.speed): the unit of storage and query.The umbrella repository tracks the roadmap; each case graduates into its own repo with README, tests and CI as it ships.
github.com/rodrigolmanso/f1-portifolio