The Challenge
Build a monitoring and incident platform a small engineering team would actually pay for: the uptime checks of a status-page vendor, the paging of an on-call tool, and the coordination of an incident channel, in one product, with billing and a multi-tenant admin console from day one.
What I Built
Monitoring. HTTP monitors with configurable timeouts and expected status codes. API-test monitors add assertions on response time, headers, and JSON paths, so a check can fail on a slow or wrong answer rather than only on a dead one.
Routing and escalation. Alerts route to email, SMS, Slack, and generic webhooks, with every delivery recorded in a ledger. Multi-level escalation policies with per-level delays and channel sets, and on-call schedules with rosters, are modeled as first-class data alongside them.
Incidents with an AI war room. A declared incident gets a coordination space where an assistant can suggest next steps, analyze what the monitors saw, and summarize the thread on demand. A post-mortem wizard drafts the write-up from the incident timeline and the actions taken, so it happens while the details are still fresh.
Status pages. Public, per-tenant status pages with subscriber notifications, so customers hear about an outage from the team rather than from Twitter.
Team, billing, admin. Invitation-based team management, Stripe subscriptions with webhook-driven entitlement and a customer portal, and an operator console covering tenants, support requests, and an audit log.
Technical Highlights
- Multi-tenant Postgres schema with row-level isolation across 36 migrations
- 16 serverless edge functions covering checks, notifications, billing, and the AI assistant
- Assertion-based API checks (status, latency, header, JSON path) on top of binary uptime monitors
- Escalation policies and on-call schedules as first-class data, not notification settings
- Claude-backed incident assistant and post-mortem generation
- Email, SMS, Slack, and webhook delivery behind one notification interface with a delivery ledger