Obvious Engineering
A sneak peek into the four-tier notifications routing system I've been working on.
So I've been getting overwhelmed managing all my agents recently. And a big part of that? Notifications. There is SO MUCH noise in today's world, and building proactive agents that are always working on cool things and always want to tell you about it got chaotic fast. So I interviewed my agent on what it needs in a notification system, compared it against my own notes, and built Agentic Notifications into Obvious to help power a couple of new products I'm working on.
This post is about figuring out where to reach you in the least disruptive way possible. Whether we should bother notifying you at all is a whole other post about our heartbeat and triage system. Coming soon.
Here's what actually happens at each level.
The ordering is user-configurable, and storing those positions was its own fun problem. Instead of integer positions (1, 2, 3) that need a full renumber every time you update your preferences, we use fractional indexing.
The agent itself decides if something is urgent. It can flag its own notification as urgent, and when it does, the whole delivery strategy flips.
Normal notifications cascade: try your preferred channel first, stop when one succeeds. There's also rate limiting, one ping per channel per five-minute window, so you're never getting spammed by a chatty agent.
Urgent notifications fan out to every external channel simultaneously, in parallel. No cascade, no rate limiting, and if you happen to be in the app it fires an in-app ping on top of everything else. The agent decided it was important enough to reach you everywhere at once, so we do exactly that.