LeadHaste
IntermediateNo variables to fill — paste & go

Write personalized first lines for an entire prospect list

Processes a pasted prospect list and returns a spreadsheet-ready table of first lines, each under 22 words and built from that row's data. Weak rows get flagged instead of padded with filler, so you know exactly which prospects need more research before they enter your sequence.

The prompt
You are a personalization-at-scale specialist who has written first lines for campaigns running through Clay, Smartlead, and Instantly. You know the trap of scaled personalization: lines that technically reference the prospect but read mass-produced — 'Loved your recent post about leadership!' repeated 400 times. Your standard is that every line must pass the 'only them' test: it should make sense for this prospect and be wrong for the next row in the list.

I'm going to paste a list of prospects with whatever data I have per row — name, title, company, and a research snippet. For each row, write ONE first line:

- Under 22 words, so it fits cleanly as a merge field.
- Built from that row's specific data, connecting it to a business problem — no standalone compliments, no 'I came across your company'.
- Consistent in voice across the list but never repeating a sentence structure more than twice in a row.
- Flag any row where the data is too weak for a genuine line — output FLAG plus what data would fix it, instead of writing something generic.

Output as a two-column table I can paste into a spreadsheet: prospect identifier, first line.

Before you write anything, interview me. Ask me these questions ONE AT A TIME, waiting for my answer each time:
1. What does your company sell, and what outcome do customers get?
2. Who is on this list (roles, industries, company sizes)?
3. What problem should these lines gesture toward?
4. Paste the list — one prospect per line, with whatever data you have.

Once you have my answers, produce the table. Process up to 25 rows per pass; if my list is longer, tell me to paste the next batch when the first is done.

How to use it

  1. 1

    Copy the prompt into Claude, ChatGPT, or any LLM — Claude or Gemini handle long lists best.

  2. 2

    Answer the interview, then paste up to 25 rows with the richest snippet you have per prospect.

  3. 3

    Review the table and fix or re-research every FLAG row before importing.

  4. 4

    Paste the column into your Clay table or sequencer as your first-line merge field, then send the next batch.

Best practices

  • Enrich rows in Clay first — a research snippet per row is what separates this from mail merge.

  • Spot-check five random lines against their source data before importing; one hallucinated detail can burn a domain's worth of goodwill.

  • Keep batches at 25 or fewer rows — quality degrades when the model rushes through 200 at once.

  • Treat FLAG rows as a research to-do list, not an annoyance. Those flags are protecting your reply rate.

Example: what this looks like in practice

A founder running outbound for a 12-person compliance automation startup exports 60 fintech prospects from Clay, each row carrying a scraped snippet — a funding note, a job posting, or a recent post. He runs three batches of 20 through the prompt. It returns 51 usable lines and flags 9 rows where the only data was a company name. He re-enriches the flagged rows, imports the column into Smartlead as his first-line field, and the campaign pulls a 6.1% reply rate — roughly double his previous templated send.

Best fit

Roles
SDR / BDRFounder / CEORevOps
Company size
Solo founderStartup (1–10)SMB (11–50)Mid-market (51–500)
Audience
B2B
Industries
Any industry
Works with
Claude, ChatGPT, Gemini
Difficulty
Intermediate

This prompt is one gear in a bigger machine. We orchestrate 20+ tools into outbound systems our clients own — and guarantee the results.

Apply for a Pilot Spot →
Prompt FAQ

Frequently asked questions

Yes, if every line is built from row-level data and weak rows get flagged instead of faked. The failure mode of scaled personalization is forcing a line from thin data — that's how you get 'Loved your post!' 400 times. This prompt refuses to write when the data can't support it, which is what keeps the output honest.