Mailroom

Product Design + Automation

Description

Mailroom is the outreach system we run PAAK on. Overnight it finds companies, finds the person worth writing to, checks they are real, drafts each email against our own writing doctrine, and has a board waiting by the time the laptop opens. Nothing sends until a human taps approve.

Client

PAAK — internal

Year

2026

Services

Product Design + Automation

The Mailroom review board: the day's drafted emails on the left, the selected draft open on the right
The Mailroom analytics view: what has sent, what replied, and what bounced
The Mailroom queue at phone width, each row showing its status

Numbers

320QUALIFIED LEADS

In the pipeline after one bug fix re-read every stuck company's live site — up from 133, without sourcing a single new lead.

3TOUCHES PER LEAD

First email, then day four and day ten. A reply kills the rest of the sequence automatically — nobody gets chased after they answer.

9 / 9TESTS PASSING

Including regression tests written the day a classification bug was found, so the same failure cannot come back quietly.

0SENT WITHOUT APPROVAL

Every email waits on the board for a human tap. The automation writes and queues; it never decides to send.

The problem

The tools that do this cost real money every month, and they all want you to write one template and blast it. That is the opposite of what actually works — and it is the one part of outreach that should never be automated, because a stranger can tell instantly when a message was not written to them.

So the question was not "how do we send more", it was "how do we remove every job around the writing". Finding companies, finding the buyer, checking the address is real, tracking who replied, knowing whose follow-up is due today — all of it is mechanical, all of it is boring, and all of it is what actually stops the sending from happening.

What we did

01

IT RUNS WHILE THE LAPTOP IS SHUT

A chain wakes at 5:15am, sources, enriches, verifies and drafts, and the approval board is open on screen by 6:20. The schedule runs on launchd, not cron — cron silently drops any job it missed while a Mac was asleep, which is exactly how this ran for weeks doing nothing at all.

02

THE DRAFTING READS THE REAL SITE

Each email is written against the company's own live site, not the row in the database — because the row is often wrong. The drafter refuses to write at all when it finds a genuine mismatch, and writes the reason down instead: in-house team, prices below our floor, a competitor rather than a buyer.

03

A BOARD THAT CANNOT SEND AN EMPTY EMAIL

The board groups rows by what you have to DO — review, approved, skipped — rather than by internal status. A skipped row shows the refusal reason in place of the email and has no approve button at all. Before that fix you could approve a blank email into a stranger's inbox.

04

IT FAILS LOUDLY, NOT QUIETLY

The bugs that hurt here were all the same shape: a question that failed getting recorded as a factual no. A DNS lookup that timed out read as "no mail server" and killed 53 good leads. An empty crawl read as "doesn't sell websites" and stranded 123 more. Both now record "unknown" and say so.

Figures from the live pipeline as at 13 August 2026. Built in Python with a local approval board; scheduled through launchd. Sending is capped, paced, gated on the recipient's own working hours, and paused automatically on bounces.

More work

The Bravo Tomorrow homepage: “A good website. Sorted.” over a carousel of concepts
Bravo TomorrowBranding + Web Development
The K Golf homepage: an eleven-bay indoor golf venue in Wairau Valley
K GolfWeb Development + Booking System
The Roof Estimator: tracing a roofline corner by corner on the satellite map
Roof EstimatorProduct Design + Web Development