The
Zenith
journal.
Engineering notes, product decisions, and the occasional unflattering retrospective. Written by the people who ship the thing.
Anatomy of a spam score.
How seven independent classifiers vote on every form submission — and why a single model would be worse.
Read full article →We removed our pricing page. Then we put it back, simpler.
What we learned from a month without published prices, and the four-line pricing table that replaced it.
Why we run eight defense layers when one would be enough.
Defense in depth isn't paranoia — it's how you keep a 50ms p50 while saying no to 80% of traffic.
An honest taxonomy of disposable-email providers.
Catch-alls, alias forwarders, plus-tricks, and the 47 services that have lasted longer than most startups.
The 50-millisecond budget.
Twelve milliseconds for network, eight for queueing, thirty for inference. Everything that's left is variance.
What we shipped in Q1 and what we cut.
Eleven features in three months. The two we removed before launch mattered as much as the nine that survived.
Five sections we cut from the tenant nav.
Forms, webhooks, templates, SMTP, LLM settings. The case for shorter sidebars — and how we did it without losing the power users.
Why we built our own webhook relay.
Signed payloads, exponential backoff, replay protection — and why the existing services didn't fit our latency budget.
The case against magic replies.
Why our AI-drafted replies decline to write when the spam score is above 40 — and why we should have done that from the start.
What we shipped in Q2 and what's queued for Q3.
Six features, two deprecations, and a postmortem. The boring middle of the year where the foundations get poured.