Enrich the prospect
Generate the asset
Draft the message
Queue for review
Classify and route replies
Context & problem
Cold outreach gets ignored because it looks like cold outreach. A generic template competes with hundreds of identical messages in the same inbox on the same morning, and the prospect has learned to delete all of them in one sweep.
The usual fix is manual personalization, which works right up until it caps your volume at whatever a rep can research and write before lunch. You are forced to choose between relevance and reach. The sales team at a Berlin AdTech company needed a system that did not make them pick.
So this was built for their outbound motion — a system shaped around how that team actually sells, not a mass tool. It is the same pattern I run on my own outbound, and the one I would deploy for an agency or a DTC brand that wants outreach that feels one-to-one at a volume no rep could hit by hand.
How it works
The diagram above shows the flow; here is what each step does. Deterministic stays deterministic, and an agent only shows up where judgement, language, or synthesis is actually needed.
- 01Deterministic
Enrich the prospect
For each prospect the system pulls company data and brand assets — logo, primary colour, hero image — from defined sources. Structured collection, no guessing.
- 02Agent
Generate the asset
It builds a personalized visual mockup or a short video preview using those assets, so the prospect sees their own brand in the message. Generative work that used to need a designer per prospect.
- 03Agent
Draft the message
The outreach copy is drafted per prospect, tuned to their product and the angle the mockup implies. Language work, done against a fixed template so it stays on-brand.
- 04Deterministic
Queue for review
Every message and asset lands in a review queue rather than sending itself. A human approves before anything leaves.
- 05Agent
Classify and route replies
Replies are classified by intent — interested, maybe, hard no — and the matching follow-up cadence fires, with CRM stage transitions handled automatically. The classification is judgement; the routing that follows is rules.
Checkpoints & logging
The checkpoint sits before send, deliberately. Outbound under someone's brand is close to irreversible — a bad message cannot be recalled — so every message waits in a review queue until it is approved. The system does the work up to the point of sending, and a person owns the send.
Each prospect's enrichment, generated asset, draft, and reply classification are logged, so a wrong-looking message can be traced back to the data that produced it. When enrichment comes back thin — no usable logo, no brand colour — the prospect is held back rather than sent a broken mockup.
Stack — and why
n8n is the backbone because outbound has a lot of moving parts — enrichment, generation, sending, reply handling — and I need to see each step when a message looks off. Asset and copy generation use OpenAI models where the output has to be produced fresh per prospect, and reply-intent classification runs the same way. Sending, sequencing, and CRM updates stay deterministic so the cadence is predictable and auditable.
Results
It shipped for a Berlin AdTech company's sales team, and reply rates are measured per cohort rather than quoted as a single headline number I cannot verify for your inbox. The follow-up sequences run without manual touch once a message is approved.
The real result is that personalization stops being the bottleneck: every prospect can get a one-to-one asset without a rep building it by hand, and the operator still signs off on everything that goes out.
Want outbound that feels one-to-one at scale?
This is the kind of system I build as a fixed-scope sprint. If you already know your outbound motion, we scope the sprint; if you are not sure it is the right first move, start with an Audit.