EM DESIGN · CONSTRUÍDO EM ABERTO case de engenharia aplicada

F1 Data Platform: padrões industriais, dados públicos, construído do zero.

Seis cases integrados sobre dados da Fórmula 1 — um historian de telemetria em Rust, ETL em camadas, um agente RAG com tool-calling SQL, dashboards comparativos, ML de estratégia e um app Flutter. Os mesmos padrões que a DeepCode aplica em ambientes industriais regulados (AVEVA PI System, GxP), reconstruídos em aberto para demonstrar conhecimento aplicado de ponta a ponta.

Acompanhe no GitHub Ver a arquitetura

arquitetura da solução

Uma plataforma, seis cases

Cada componente consome ou alimenta outro. Os dados históricos passam por um ETL em camadas até o DuckDB; a telemetria passa por um historian construído sob medida até o Parquet; os serviços expõem ambos para pessoas, dashboards e mobile.

1 — arquitetura da solução. Ciano: fluxo histórico/estatísticas. Roxo: fluxo de telemetria (tracejado: Query API do PIMS consumida direto pelo mobile).

infraestrutura

Onde roda

Deliberadamente enxuta: tudo é reproduzível a partir de um laptop, o CI roda no GitHub Actions e cada componente implantável encontra sua casa natural (amigável ao free tier). A inferência do agente de IA é plugável — backend Claude headless por padrão, substituível por uma API interna.

2 — topologia de build, CI e execução. Tudo reproduzível localmente; deploy por componente.

processos de negócio

Como a plataforma se comporta (BPMN)

Três processos centrais modelados em notação BPMN: círculos são eventos, retângulos são tarefas, losangos são gateways de decisão.

P1Ingestão de dados históricos (agendada)

P2Resposta a perguntas (agente de IA)

P3Ingestão de telemetria com compressão swinging-door (PIMS)

áreas do projeto

Seis disciplinas, uma história

Cada case é um repositório autocontido com README, testes e CI próprios — e uma demonstração deliberada de uma disciplina.

Data Engineering 🎨 design

f1-data-platform · Python, DuckDB, Parquet

ETL em camadas (raw → staging → marts) sobre a história completa da Fórmula 1 (1950–hoje) via API Jolpica. Idempotente, respeitando rate limits, com testes de qualidade de dados como cidadãos de primeira classe: unicidade, integridade referencial, faixas de valores.

ETLDuckDBData QualityIdempotency

Séries Temporais Industriais 🎨 design

f1-pims · Rust, Arrow/Parquet, axum

Um PIMS minimalista — o padrão historian usado na indústria (AVEVA PI) — construído do zero: modelo de dados tag/série temporal, compressão swinging-door com taxa de compressão medida, armazenamento Parquet particionado e uma Query API HTTP com downsampling e interpolação.

RustHistorianSwinging DoorTime-Series

Dashboards 🎨 design

f1-telemetry-lab · Python, Streamlit, FastF1

Painéis comparativos no estilo PI Vision: traços de velocidade/acelerador/freio por distância piloto vs piloto, gaps volta a volta, degradação por stint de pneu e evolução de posições — consumindo a Query API do PIMS.

StreamlitTelemetryVisualization

IA Aplicada / RAG 🎨 design

f1-history-agent · Python, FastAPI

Um agente headless que responde perguntas da história da F1. Perguntas fatuais são resolvidas por tool-calling SQL (números exatos, nunca alucinados); narrativas, por RAG sobre um corpus licenciado. Acompanha um conjunto de avaliação (golden Q&A) com pontuação automatizada. Inferência plugável (Claude headless por padrão, adaptador de API interna).

RAGTool-callingEvalsFastAPI

Machine Learning 📋 fase 2

f1-strategy-ml · Python, scikit-learn

Modelos de degradação de pneu e janela de pit treinados nos marts e telemetria da própria plataforma — com validação honesta e documentação de features.

RegressionFeature Eng.Validation

Mobile 📋 fase 2

f1-mobile · Flutter/Dart

Cliente Android/iOS da plataforma: chat com o agente de história, navegação por temporadas/pilotos/resultados via API REST de estatísticas e comparações de telemetria — offline-first com cache local.

FlutterOffline-firstREST
glossário

Termos usados no projeto

PIMS / historian
Process Information Management System: software industrial que armazena dados de sensores com carimbo de tempo (tags) de forma eficiente e os serve para análise — ex.: AVEVA PI System.
tag
Uma série temporal nomeada em um historian (ex.: VER.speed): a unidade de armazenamento e consulta.
swinging-door compression
Algoritmo clássico de historian que descarta amostras reconstituíveis por interpolação dentro de uma banda de desvio — enorme economia de armazenamento com erro limitado.
downsampling / interpolation
Servir uma série em resolução mais grossa (média/mín/máx por janela) ou estimar valores entre pontos armazenados.
ETL (raw → staging → marts)
Pipeline em camadas: gravar os dados como chegam, conformar tipos e chaves, e publicar tabelas analíticas prontas para consumo.
DuckDB
Banco SQL analítico in-process — o armazenamento consultável da plataforma para os marts históricos.
Parquet
Formato de arquivo colunar com compressão; legível por DuckDB, pandas, Spark e o ecossistema Arrow.
RAG
Retrieval-Augmented Generation: recuperar documentos relevantes (via embeddings) e fundamentar neles a resposta do LLM.
tool-calling
Permitir que o LLM invoque funções tipadas (aqui: consultas SQL) para que respostas fatuais venham do banco, não da memória do modelo.
embeddings / vector store
Representações numéricas de texto que permitem busca semântica; armazenadas em um índice local leve.
eval (golden set)
Um conjunto fixo de pares pergunta/resposta-esperada pontuado automaticamente — teste de regressão para o comportamento da IA.
headless inference
Rodar o LLM atrás de uma API/CLI sem interface; aqui plugável entre um backend Claude local e uma API interna.
offline-first
Padrão mobile: o app funciona a partir de um cache local e sincroniza quando online.
BPMN
Business Process Model and Notation: notação padrão para processos — eventos (círculos), tarefas (retângulos), gateways (losangos).
acompanhe

Construído em aberto

O repositório guarda-chuva acompanha o roadmap; cada case ganha seu próprio repositório com README, testes e CI conforme é entregue.

github.com/rodrigolmanso/f1-portifolio