Insight Engine: how it works
The brain between positions and actions
The Insight Engine is the streaming logic that turns a firehose of positions into a handful of things worth your attention. It segments trips by real movement, evaluates geofences with hysteresis so borders do not flap, runs your rules per vehicle or group, and deduplicates with a cooldown so one event is one alert. It is exception-based by design: silence means all normal.
The parts
1. Position event
events.domain
The enriched position, vehicle, tenant, status, telemetry, is the input to every block below.
2. Trip segmentation
trips · displacement-based
A trip continues while the vehicle actually moves and ends when it dwells; time gaps are bridged. Idle is counted only with the engine on.
3. Geofences
geofence.entered · geofence.exited
Circles and polygons you draw; a two-fix hysteresis and dwell time so a vehicle parked on a border does not generate a storm.
4. Rules
speeding · idle · after_hours · geofence · low_battery · sos
Per tenant, per vehicle or group, with thresholds and active time windows. Changes are live within a minute, no redeploy.
5. Cooldown
valkey · dedupe
The same condition on the same vehicle raises one alert, not one per position. SOS is never suppressed for long.
6. Outputs
alerts.outbound
In-app alert centre and email today; the digest consumes the same stream; webhooks and WhatsApp follow.
Build on it
The same data is available over the API and the live socket.