Generate a cold email first line from scraped research data
The workhorse of AI-personalized outbound: converts whatever research your enrichment waterfall produced into one 12–22-word observation-led first line per row. The swap-test rule and fact-invention ban are what separate lines that read researched from the AI slop prospects now delete on sight.
You are a first-line writer for cold email campaigns run at scale through Clay and sequencers like Smartlead and Instantly. You have written tens of thousands of first lines and you know exactly why most AI first lines fail: they compliment instead of observe, they restate the company's tagline back at them, and they read identically across a thousand rows. Work from the research data provided to you — typically one or more of: scraped website text, a news snippet, hiring data, a LinkedIn summary, or review excerpts, plus the prospect's first name and role. Write ONE first line following these rules: - 12 to 22 words. It must end mid-thought, so the next sentence (the pitch, written separately) can connect to it. - Lead with the most specific, least obvious fact in the provided data. Specific numbers and named things beat descriptions. - State an observation or implication, never a compliment. Banned: 'impressive', 'love what you're doing', 'came across', 'I noticed', 'congrats', 'caught my eye'. - No greeting, no 'Hi', no prospect name in the line — the sequencer handles salutations. - It must be a line only this company could receive. If a competitor's name could be swapped in, it fails. OUTPUT CONTRACT — follow exactly: - Return ONLY the first line as plain text. No preamble, no quotation marks, no alternatives, no explanation. - If the provided data is empty, contradictory, or contains nothing specific enough to clear the rules above, return exactly: NOT_FOUND - Never invent facts not present in the provided data. Never combine facts from different fields into a claim the data does not support.
How to use it
- 1
Copy the prompt into Claude, ChatGPT, or any LLM — or into a Clay AI column.
- 2
In Clay, map your research columns as the inputs the prompt references — scraped site text, news one-liners, hiring JSON — plus first name and title; more sources per row produce better lines.
- 3
Read 25 outputs in a row before launching: if any two feel interchangeable, add the repeated construction to the banned list and re-run.
- 4
Route NOT_FOUND rows to a segment-level generic line, and QA the rest with the batch-audit prompt in this category before sending.
Best practices
Feed it the OUTPUTS of other prompts in this category (hiring signals, news, case-study data) rather than raw HTML — pre-structured input halves the garbage rate.
The mid-thought ending is load-bearing: write your email template's second sentence to complete the first line's thought, or the seam shows.
Regenerate per campaign rather than reusing lines across angles — a line written to set up a hiring pitch reads wrong ahead of a tooling pitch.
Example: what this looks like in practice
An outbound team running Smartlead for a payroll client enriches 6,000 rows with website scrapes and hiring data, then runs this prompt with both columns mapped. Typical output: 'Opening a third Austin location while payroll still runs from the College Station office puts a lot on one coordinator.' 4,900 rows clear; 1,100 return NOT_FOUND and get the segment fallback. During the 25-row read-through they catch the model overusing 'while X, Y' constructions, add it to the ban list, and rerun. The campaign replies at 4.7%, and the client's only complaint is that sales can't keep up with the meetings.
Best fit
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 → →Frequently asked questions
Ban the tells explicitly ('I noticed', 'impressive', 'came across'), force a word window, require the line to lead with the most specific fact available, and apply the swap test — if a competitor's name could replace the prospect's, reject the line. Then read 25 outputs in sequence before launch; sameness across rows is the tell no single-row review catches.
More personalization at scale (clay & claygents) prompts
Turn a Claygent website scrape into a personalized one-liner
Produces a sub-25-word, website-specific opening line for every row in a Clay table — no human in the loop. The output contract forces plain text only and a NOT_FOUND fallback, so unreachable sites and thin homepages return a filterable sentinel instead of a hallucinated compliment that ends up in a prospect's inbox.
Analyze a pricing page for sales-relevant intelligence
Extracts a structured pricing profile from any pricing page: model, tier count, exact displayed prices, free-offer type, and a one-line read on their sales motion. At scale it segments prospect lists by how companies charge — which predicts budget, buying process, and which of your angles will land.
Audit a batch of AI first lines before the campaign sends
Catches the failure modes that only show up across a batch — recycled constructions, swap-test failures, unverifiable claims — before prospects see them. You get a grade, pattern counts, individually flagged lines, and three paste-ready fixes for the generating prompt, turning QA from a vibe check into a repeatable gate.