ARKONE
Twelve upright marks on a dark ground, one for each stage of the engine, with mark 6 lit in amber and the book title beneath.

How do you actually write one message per person, so that sending on a schedule happens by itself?

September 8, 2026 · 6 min read

S
Sobin George Thomas

By the thirtieth message the hook is the company tagline. One generator, one verifier and one sweep, and the run passes only when both counts read nought.

Five facts, five minutes, one email. Read the site, find a line only this company could earn, write the message around it. Then the next one. For a forty-person agency that is a whole day of writing, and nobody checks the drafts before they go.


By hand today

“Take 5 minutes to find 5 facts to write an email in 5 minutes”

Lavender, on building a cold email personalisation process

That is the method as taught, and it is fair. Read the company site, find something real, write a short message around it, and move to the next name. The hire who does it is asked for twenty-five to thirty messages a day.

The trouble is volume. By the twentieth message the “fact” is the company tagline, and by the thirtieth the message is the template with a name dropped in. Nobody reads the drafts before they go, so the ones with a stray dash, a missing name or a word that gives the machine away go out with the rest.


What it costs you each week

About 25 hours a week to write the thirty messages a day one advert asks of a single hire, at ten minutes each. Or none, and every message reads as if the same machine wrote it.

Source: modelled. Thirty messages a day from the advert, at ten minutes each, five days

No sourced hour count exists for this stage, so the figure is a model with its assumption shown. Swap in your own list and your own pace. The tools that write personalised rows at scale do not publish what a row costs, and the reader on the receiving end has already named the result: an inbox nobody reads.


The build

Open Codex. One hook, then the verifier. The hook is one line from the company site that a stranger could not have written. The template carries the rest. Every draft goes through a verifier and a sweep. The run passes when both counts read nought.

Open Codex in the engine folder, where emails.csv and holding.csv from the last chapter sit, and templates.md, your message steps with a gap where the hook goes. Then say what you want:

Read emails.csv, holding.csv and templates.md. For every person, write one
hook: a single line about their company, drawn from its own website, that a
stranger could not have written. Fill the templates with the hook and the
name. Then run a verifier over every draft and fail any that carries an
apostrophe, a dash, a contraction, more than one question, a link, an
unfilled field, or a word on the never-use list in market.yml. Then sweep
every draft for the words a machine reaches for and list each hit with its
line. Write drafts.csv with one row per person per step, and print two
lines at the end: violations with its count, and tells with its count.

What comes back is a generator, a verifier and a sweep, and a run over the list. drafts.csv holds every message, one row per person per step, with the hook in its own column. The last two lines of the run are the gate. If either count is above nought, the fix goes into templates.md or into the hook column, never into a row of the output, and the run goes again. When both read nought, load the drafts into the CRM as unsent steps on each person.

The sweep will flag words it should not; a landscaping firm gets to say landscape. Each hit comes with its line so a person can allow one and fix the rest.

The pattern is ArkOne’s own outreach lane, plans/linkedin-outreach-templates/UPDATE-OUTREACH-RUNBOOK.md. One generator holds the templates, the per-company hooks and the verifier, and every copy change happens there (line 22). The verifier enforces the copy laws: no apostrophes, no dashes, no contractions, one question per message, a list of words never used, no exclusivity claims (lines 37 to 39). A separate sweep runs the no-ai-tells word banks over every message (lines 53 to 55). The pass condition is one line, “Verifier 0 violations · no-ai-tells sweep 0 tells” (line 120), and it was last met over five hundred messages (line 114).


What it feeds

Sending on a schedule. The next stage sends each draft from your own accounts, at a pace the accounts can stand. The number to read: violations nought and tells nought over the whole set. On our own run, five hundred messages.

The next stage takes the drafts and sends them, from your own mailbox and your own LinkedIn account, on a ramp the accounts can survive. It can plan that because the drafts are finished, checked, and sitting on each person in order.

The number that proves this stage worked is a pair of counts over the whole set, not a sample: violations nought, tells nought. On ArkOne’s run that pair held over five hundred messages. A run that passes on a sample and fails on the set has not passed.


What stays with a person

The line only you could write. The hook is a fact the tool found. Whether it is the fact that matters to this owner is a judgement. And the words you never use. A person writes that list, and the verifier keeps it.

“because it’s trivial to send AI personalized emails at massive scale, your email inbox will become entirely useless” (themanmaran, Hacker News). That is your reader, and they are right about the scale. What keeps a message out of that pile is the hook, and the hook is a judgement dressed as a fact. The tool finds three true things about a company. A person knows which one the owner would stop on.

The never-use list is the other thing that stays. The words your company does not say, the claims it does not make. A person writes that list once. The verifier holds it to every draft after.


The tools you already pay for

Nothing new to buy.

CRM holds every draft as an unsent step on the person, in send order, so a copy change before the first send still reaches everyone.

Templates live in one file. Every change to the copy happens there, and the drafts are rebuilt from it.

Browser is driven by the tool, which reads the company site for the one line the hook needs.


One message per person, with a line only their company could earn, and a check that reads nought twice. Then the sending can be scheduled.

Ask: If you read ten of your outbound drafts in a row, could you tell which company each was written for?

The message here is chapter 6 of twelve, after getting their email without guessing and before sending without getting banned. The book, Building a real outbound engine with Claude Code and Codex, end to end, runs the whole engine in order, one chapter per stage. A free starter edition for firms under fifty people is coming through the 100k programme.

准备好开始对话了吗?

了解 ArkOne 如何构建治理体系与项目架构,实现可量化的 AI 回报。

预约探索性沟通