PylonworksTell us what's eating your time
All posts

How I Automated Client Outreach Without Sending One Cold Email

Jordan Ellis6 min read

The pipeline that drafts and queues about 20 personalized outreach touches a day for roughly $0.40 in Claude inference, why I never let the model press send, the Haiku scoring pass that cut drafting cost 60%, and the send limits that keep you out of spam.

I run about 20 outreach touches a day for roughly $0.40 in Claude inference, and I have not hand-written a cold email in four months. The model never sends anything on its own. It researches, scores, drafts, and queues. A one-tap approval and a warmed sending domain do the actual sending.

What is AI outreach automation, exactly?

AI outreach automation is a pipeline where a model does the research, scoring, and drafting of outreach messages while a human or a deterministic rule controls the send button. The model is the writer and the analyst. A person or a rule owns the send.

My pipeline has four stages:

  1. Discovery pulls candidates from a source list (a LinkedIn connections export, a scraped directory, an Apollo pull).
  2. Scoring runs each candidate through a cheap model that decides if they fit the ideal customer profile.
  3. Drafting writes one personalized message per qualified lead, grounded in fields from the lead record.
  4. Gated send queues the draft. Nothing leaves until it clears approval and a rate limit.

The whole thing is bounded. Each stage is a job that does one thing and exits. No long-running agent deciding on its own to email 400 people at 2am.

How much does it cost to draft outreach with Claude?

Cheap, if you split the work across models. Scoring is high-volume and low-stakes, so it runs on Claude 3.5 Haiku at $0.80 per million input tokens and $4 per million output. Drafting needs more judgment, so it runs on Claude Sonnet 4 at $3 in and $15 out.

Here is the per-touch math:

Stage Model Tokens (in/out) Cost
Score one lead Haiku 3.5 1,500 / 200 $0.002
Draft one message Sonnet 4 2,000 / 300 $0.011
Per qualified touch combined 3,500 / 500 $0.013

Twenty sends a day is about $0.26 in drafting. The scoring pass runs over far more candidates than I send, since most get rejected, so the real daily total lands near $0.40. For the record, drafting this post cost about $0.17.

The lesson that took me a month: do not draft with Sonnet until Haiku has already thrown the lead out. Scoring first cut my drafting spend by about 60%, because the expensive model never sees a lead that was going to fail anyway.

Why I never let the model press send

Two reasons, and both have cost me before.

First is compliance. Cold email in the US is governed by CAN-SPAM: a real physical address, a working unsubscribe, no deceptive subject lines. Manufactured personas and planted reviews fall under FTC rules that run up to about $51,000 per violation. A model that sends autonomously can put you on the wrong side of that for a week before you notice.

Second is deliverability. The fastest way to burn a sending domain is to blast 200 cold emails on day one from a domain with no warmup history. Once you land in spam, you stay there. The gate is where a human catches the message that reads like a robot wrote it, because sometimes a robot did.

The model invented a product launch the prospect never had, then congratulated them on it. The approval gate caught it before it sent. Now every personalization line has to cite a real field from the lead record or it gets dropped. Ungrounded flattery is worse than no personalization.

The scoring pass: kill bad leads before you spend tokens

The scoring model has one job: reject anyone who is not a fit. For me that means anyone technical enough to build the thing themselves. A developer, an AI engineer, a CS student. They are not buying a website from me.

The disqualifier reads the whole headline, not the job title alone. "Founder" passes. "Founder and full-stack engineer" does not. This one rule, run on Haiku for a fraction of a cent per lead, is the difference between a list worth drafting for and a list that wastes Sonnet tokens.

The drafting pass, with the actual prompt

Personalization is where automation usually falls apart. The fix is to forbid the model from inventing anything. Every variable in the template maps to a real field. If the field is empty, the line is cut.

Write one outreach message to {{first_name}} at {{company}}.

Rules:
- Under 4 sentences.
- Reference exactly one specific fact from: {{headline}}, {{recent_post}}.
- If both fields are empty, write a generic message with no fake specifics.
- Never open with "Saw your work" or "I came across your profile".
- No "I'd love to connect". No compliments you cannot source.
- Plain declarative sentences. No em dashes.

Offer: a $1,499 website build, delivered in two weeks.

The {{recent_post}} and {{headline}} fields come straight from the lead record. The model fills the deterministic slots and resolves the descriptive ones. When both source fields are blank, it writes a clean generic message instead of hallucinating a hook. That single instruction killed most of the embarrassing sends.

What about send limits and warmup?

This is the part the demos skip. The model can draft 500 messages in a minute. You cannot send 500 messages in a minute without getting flagged.

Channel Safe daily volume Hard cap
LinkedIn invites 15 to 20 ~100 per week
LinkedIn 1st-degree DMs 50 to 80 no fixed limit
Cold email (warmed domain) 20 to 40 depends on warmup age
Cold email (cold domain) 0 warm it first

A new sending domain needs two to four weeks of warmup before it carries real volume. Start at 10 to 20 a day and ramp. The drafting queue can hold a backlog all it wants. The send rate is what keeps you out of spam.

When does outreach automation actually pay off?

Not at five messages a day. At that volume, writing them yourself is faster than building the pipeline. The math flips around 15 to 20 touches a day across two channels, where the scoring and drafting work compounds and the gate is the only manual step left. I spend about ten minutes a day approving a queue that would have taken two hours to research and write by hand.


How many outreach messages a day is safe to automate?

Drafting has no real ceiling. Sending does. Stay under 100 LinkedIn invites a week and 50 to 80 first-degree DMs a day. For cold email, ramp a warmed domain from 10 up to 40 a day over a few weeks. The model fills the queue; the rate limit drains it.

Can the AI send the emails itself?

It can, and you should not let it. Keep a human or a deterministic rule on the send. That gate is where you catch hallucinated personalization and CAN-SPAM mistakes before they cost you a domain or a fine.

What is the cheapest model for lead scoring?

Claude 3.5 Haiku at $0.80 per million input tokens. Scoring is a reject-or-keep decision that does not need Sonnet. Run the cheap model first so the expensive one only ever sees qualified leads. That ordering cut my drafting cost by roughly 60%.

The one change to make today: put a scoring pass in front of your drafting pass, and never let the same job that writes a message also send it.


Tired of re-keying the same data between tools? Pylonworks builds custom automation and internal tools for businesses without a developer, on a fixed quote you approve up front. Tell us what's eating your time

Back to all posts