Monday, February 2, 2026
From raw signals to decisions: our data model


When we started, a "signal" could be almost anything. That flexibility felt like a feature. It was a liability. The more shapes a signal could take, the less any downstream system could assume — and the more glue code everyone wrote.
A signal is four things
We collapsed the model down to four required parts:
- Source — where it came from.
- Subject — what it's about.
- Time — when it happened.
- Payload — the typed body.
Everything else is optional metadata. That's it.
Why opinionated wins
A small model is one every team can reason about without a meeting. Correlation
becomes a join on and instead of a bespoke parser per source.
New integrations describe themselves in terms of the same four fields, so the
platform understands them on arrival.
Constraints aren't the opposite of flexibility. They're what makes flexibility composable.
The lesson generalizes: when a model can represent anything, it guarantees nothing. Pick the smallest shape that covers your real cases, and let the edges stay optional.