Data Analysis Profiles
A Data Analysis Profile is a named bundle of KPIs you author in JSON without writing a plugin. Each KPI is one expression in the KPI Expression Language.
Find the admin at Admin → Data Analysis Profiles. Route:
/admin/data-analysis-profiles. API:
/data-analysis-profiles.
What a profile contains
{
"name": "Standard lap KPIs",
"kpis": [
{ "name": "RPMRollingAvg5s", "expression": "RollingAvg(Channel(\"RPM\"), 5)" },
{ "name": "ThrottleGate95", "expression": "GateAbove(Channel(\"Throttle\"), 0.95)" },
{ "name": "BrakePumpCount", "expression": "EdgeCount(Channel(\"Brake\"), 0.5)" },
{ "name": "PeakSpeedKph", "expression": "Max(Channel(\"Speed\"))", "dimension": "speed" }
]
}
Each KPI carries:
name— the column / output keyexpression— KPI expression stringdimension(optional) — informs the renderer how to format the result
The admin
Master/detail layout:
- Left — profile list
- Right — KPI list editor; per-row name + expression + dimension picker, with a per-row Test button that pastes a sample buffer and previews the result
The Test button hits the same /data-analysis-profiles/:id/evaluate
endpoint that the Plugin Runner / lap pipeline uses.
Evaluating
POST /data-analysis-profiles/:id/evaluate
{ "samples": [ { "t": 0.0, "RPM": 8200, "Throttle": 0.96, "Brake": 0.05 }, ... ] }
Returns:
{
"items": [
{ "name": "RPMRollingAvg5s", "value": 8127.4 },
{ "name": "ThrottleGate95", "value": 0.62 },
{ "name": "BrakePumpCount", "value": 4 },
{ "name": "PeakSpeedKph", "error": "unknown channel: Speed" }
]
}
Per-KPI errors are isolated — one bad expression doesn't fail the batch.
What you can do today
- Author profiles with multiple KPIs
- Use the per-row Test button against a sample buffer
- Evaluate via
/data-analysis-profiles/:id/evaluate - Reference any of the KPI engine intrinsics
What's coming
- Auto-trigger — run a profile against every new lap (today: on-demand only)
- Per-session aggregation — surface KPI values across all laps of a session in a registry view
- Plugin-extension — let a plugin contribute additional KPI functions to a profile's expression scope