← Back to field notes

Our own system · in production

We built our own AI lead-gen engine: a 16,000-company cold base, qualified for about a cent each.

Cold outbound for our own agency had the same math every agency faces: a human needs 15-25 minutes per company to research, qualify and personalise, so nobody really does it, and generic blasts burn the domain instead. We built an engine that scrapes each company's site, scores it against our ICP with hard disqualifiers, writes an operational observation, and drafts a personalised 9-step multi-channel sequence, for the tiers we choose to spend on. One operator runs it from a control panel. Nothing sends without a human approving it.

This case is ours, no NDA, no anonymisation, nothing withheld. The engine runs in production for our own pipeline. On the audit call we'll open the actual control panel and run a company of your choice through it live.

≈1¢
QUALIFY / COMPANY
≈35¢
FULL SEQUENCE / LEAD
16k
COMPANY COLD BASE
3 wk
BUILD
Our own system · in production

The problem

Outbound quality and outbound volume are usually a trade, we wanted both.

Manual prospecting is 15-25 minutes per company: open the site, figure out what they do, decide if they fit, find the angle, write the email. Across a 16,000-company base that is roughly two person-years of work, so in practice it never happens.

The standard shortcut is merge-field blasts ('Hi {{first_name}}, love what {{company}} is doing'). Those burn sender domains and get the exact reply rate they deserve.

The approach

A seven-stage pipeline where the expensive model only ever sees the good leads.

Research: every domain gets scraped, free path first; anti-bot and JS-heavy sites fall back to a pay-per-success fetcher, so dead sites cost zero. A liveness gate skips unreachable companies before any model spend.

Qualify: a cheap model scores each company against our ICP with hard disqualifiers checked in order (wrong category, holding-company ownership, too big, too small), producing a 0-100 score, an A/B/C tier, a campaign route and the evidence behind each call.

Personalise: for the tiers we choose (that's a checkbox, not a code change), a mid-tier model writes an operational observation, what their current process looks like and where it leaks, and the premium model drafts a 9-step LinkedIn + email + call sequence that quotes it. Proof points come only from a tagged knowledge base of real cases.

The spend control is the point: qualifying a company costs about a cent, so we can afford to look at all sixteen thousand. The expensive copy model only ever runs on the few hundred that earn it.

What was messy

Where the first versions failed, building it honest.

Dead and parked domains poisoned early runs, the qualifier would hallucinate a company from a placeholder page. We added a pre-flight liveness gate: unreachable site plus no enrichment metadata means the company is skipped before any LLM spend.

Anti-bot walls (Cloudflare-class) blanked out a chunk of the base. A rendering fallback that bills only on success fixed coverage without unpredictable cost, a failed fetch costs nothing.

The sequence model kept drifting from the configured cadence, inventing step 10 or merging two emails. We stopped trusting the model with structure: steps map onto the configured plan by key, so the cadence is enforced by code, and the model only writes the words.

The outcome

Prospecting economics that make personalised outbound rational.

  • Research + qualify, per company15-25 min manual → under 1 minautomated
  • Cost to qualify a companySDR time → ≈1¢ in tokens~99% cheaper
  • Personalised 9-step sequence2-3 h manual → ≈35¢ draftreview-only
  • Sends without human approval0by design

How we measured it

Every number above is visible in the tool itself.

Cost per company: token usage is logged per run and per stage; the control panel shows ≈$ per run next to each entry. Qualify averages ~5k cheap-model tokens (≈1¢); a full qualified lead, research, qualify, audit, 9-step sequence on the premium model, lands around 30-40¢.

Pipeline integrity: every stage writes an audit log line, ran, skipped (with the reason), or failed, so a run over thousands of companies is fully traceable after the fact.

Time per company: the pipeline processes a company in well under a minute against 15-25 minutes of equivalent manual research. We treat reply-rate claims as not yet earned, the engine is new; ask us on the call how it's converting.

What we did not automate

Nothing reaches a human inbox without a human decision.

Every sequence is a draft until an operator approves it. Push-to-sending-tool is a manual button, per batch, after review.

Every stage that costs money, rendering fallback, contact discovery, review scraping, news intel, ships toggled OFF and is enabled per run from the panel.

Disqualification reasons are kept, not just the score, so a human can audit why the engine said no and overrule it.

What's next

The same engine, white-labeled for your agency, or your clients.

Everything segment-specific: ICP, disqualifiers, scoring, hypotheses, message cadence, tone, is config, not code. Pointing the engine at a different vertical is a settings change with named presets.

For agencies, that means two offers: we run it for your own new business, or we build it into your stack as a service you sell to clients.

YOUR LEAD-GEN WORKFLOW

Want this pointed at your ICP, or productised for your clients?

20-min call. We open our control panel, run a company of your choice through the live pipeline, and you decide whether it's worth building yours.

Replies within one working day · EU, UK & US time zones