← all workSYSTEMS · DATA ENGINEERING

Race Telemetry

One night at UTA autocross, 18 sessions of raw CAN logs. I built the whole path: content-hash idempotent ingest with per-file error isolation, a 1 Hz continuous aggregate on a TimescaleDB hypertable, a star schema, typed FastAPI serving, and CI that runs against a real database.

Power BI season overview dashboard
⌐ what the aggregate caught — oil starvation

At 8k+ RPM under peak lateral G, minimum oil pressure fell to 0.00 bar187 s of oil dip across the night, and coolant kept climbing past 100 °C (112 s over the line). The 1 Hz aggregate made the starvation obvious session-over-session — before it turned into engine damage.

Oil pressure vs grip, coolant-over-time, and channel-health findings
Stack
Python · TimescaleDB · FastAPI · Power BI
Role
Designed & built the pipeline end to end
Result
Aggregate exposed oil starvation, cooling limits & dead channels
18 sessions
raw CAN logs, one night
1 queryable layer
decision-ready, CI-guarded
01 · home/02 · work/03 · contact