I took my cold email back

September 25, 2026 (16d ago)

Since Wednesday I run my own cold email again. Not by writing the mails myself. An AI writes every one of them for one specific person, I read them on a single page, and every note I leave becomes a rule that all later mails follow.

For most of the past year someone else ran it for me through Instantly. Good operator, honest numbers, template campaigns with a name and a company filled in. Around 8,500 mails went out. Thirty-five people replied. The last campaign, for Proviand, reached 1,602 shop owners and got six replies, all of them a no. That is not a bad operator. That is what a template gets you in 2026.

My own attempts were not better. Forty-nine hand-researched mails, one reply, and it came from a helpdesk robot.

So the bet is simple. A true observation about someone’s own shop, written for them, reads differently from a template. I don’t know yet if that bet pays. The whole point of this week was to build the thing that finds out.

My new colleague, as imagined by an AI. In practice it does the typing and I do the coffee.

What the AI actually writes

It starts from a fact. For a Dutch shop that sells cleaning products: 198 products, 1,200 variants, from wash strips to dishwasher strips. That line opens the mail. Then one question about how they buy from their suppliers, one plain line saying what Proviand does, and the link to a clickable demo. Under 80 words. Two short follow-ups a few days later, in the same thread, each with one new thing in it.

What makes it work is not the model. It is the feedback. I read the mails on a review page and click approve, needs changes, or don’t send. A note like “round that number, nobody writes 1,965 of 7,467” gets applied to every waiting mail and written into a rules file. There are about forty rules in there now. Never a comma before “and”. Say what Proviand does in one line, on its own line. When you quote a review someone wrote a year ago, say it was a year ago. The AI reads that file before it writes anything, and a mechanical check refuses a mail that breaks the rules it can check.

I give a correction once. That was the deal I made with myself, because the version where I repeat myself is the version where I stop reading.

Two lanes

The first lane is slow on purpose. Five people a day, found by the AI reading their site, their reviews, their pricing page, and quoting what it found. I approve each one.

The second lane is where the volume is. StoreCensus gives me Shopify shops by country, revenue band, product count and installed apps. It also gives me the owner’s name and email for most of them, at about three cents a contact. The AI writes from those facts instead of a site visit. I approve a sample of ten per batch and the rest go out on the rules the sample passed. One “needs changes” on a sample card holds the whole batch.

Both lanes end up in Instantly, which sends from fifteen warmed mailboxes and stops the follow-ups the moment someone answers. Instantly is good at mailboxes and bad at knowing who anyone is, so it gets one lead at a time with the words already attached.

One question per campaign

The thing I want out of this is not replies. It is knowing why.

So every Instantly campaign answers one question. Dutch shops versus British shops, same mail. Inside each campaign, three versions of the second paragraph, sent to the same people from the same mailboxes: one asks whether they buy from several vendors, one says Proviand tells you when to order based on your suppliers’ delivery times, one says it shows which products sit still and which are about to run out. A campaign gets read at 200 people. Below a certain reply rate it dies, above another it gets more people, and above three percent bounces it pauses whatever the replies say.

Two campaigns are never an A/B test. Different people, different mailbox luck. I had to write that down for myself because it is so tempting.

Triggers

The part I like most went live last night. Every morning the system asks StoreCensus what changed in the last month and writes mails where the observation is the event itself. A shop that removed an inventory app. A shop that added fifty products. A shop whose traffic jumped while sitting in exactly the revenue band where stockouts start to cost money.

The first one is tiny. Inventory apps live inside the Shopify admin, where a crawler cannot see them, so across the Netherlands, the UK and the US it finds about eight shops per quarter that dropped one. Each of those is worth more than a hundred from a list. I wanted a fourth trigger, shops that just installed a point of sale, and had to drop it. The POS app is not in the index I use. There is no shame in a signal that cannot be measured, only in pretending it can.

Jev, and why not yet

Somewhere in the middle of this I spent a day on Jev. It is a model from TypeSafe that does not write anything. You give it a text and a question, and it returns a decision with a probability. Is the second paragraph a question the reader can answer, yes or no, 0.91. Is this reply out of office, interested, or wrong person. It answers in about a tenth of a second and costs almost nothing.

That is a genuinely new kind of tool, and I could see four places for it: sorting replies, checking every mail against my forty rules before I ever see it, throwing out shops that turn out to be dropshippers or competitors before anyone spends a cent on them, and later, once there are a few hundred replies, finding which properties of a mail predict a reply.

I decided not to use it. Not now. The problem I have is zero positive replies, and the questions that follow from that are arithmetic: how many people before a campaign is dead, is the bounce rate hurting the mailboxes, does the Dutch segment differ from the British one. A confidence interval answers those. Jev cannot count, and it is English first, and half my mails are Dutch. Adding a vendor to judge mails that nobody is answering is building the second floor before the first one has a roof.

I asked five separate AI agents to argue it out, with different jobs and no knowledge of each other. They agreed on that much and then disagreed about which use should come first, which told me the answer was “none yet” more clearly than any single opinion would have. Jev gets another look when the volume lane runs flat out and my own review time becomes the bottleneck, or when replies reach twenty a month and it becomes worth knowing why people say no.

What I don’t have yet

A Dutch sole trader may not be cold emailed. A company may. The database has a column for the legal form and nothing fills it yet, so on Dutch cards I still judge that by eye from the company name. German shops get no mail at all, whatever the list says.

And the number that matters is still zero. The first batches left this morning. In three weeks I will know whether a mail written for one person outperforms a template, or whether I have built a very tidy way of being ignored.

The projects this is about

Get whatever I write next by email

A launch, a lesson, a poster, something I broke. No schedule, no spam.

© 2026 Philip Wallage.RSS