Replacing scattered vendors with one trustworthy stack.
Engineering teams across the company were each integrating their own email, SMS, push, and in‑app providers — paying for overlapping vendors, writing the same retry and templating logic from scratch, and operating each integration independently. I designed and led a centralized notification platform: a multi‑tenant Go service with a typed template registry, Asynq‑backed queues, and a small Next.js console for operators.
The hard parts weren’t the channels — they were the boundaries. Per‑tenant rate limits, idempotency keys that survive provider retries, audit logs engineers can investigate, and a migration path that let teams move one event type at a time. We landed on a service that product and marketing teams could both trust, and the failover plus suppression handling improved delivery reliability by about 18%.