Verification is the whole job
A press list lives or dies on one line most builders skip: verify each name against their own site or a recent article before it goes on the list. That line does the real work, separating a list you can use from a scraped directory of stale bylines and dead inboxes.
That means the agent doesn’t take a name from a roundup or an aggregator and call it done. It goes to the person’s own page or their most recent piece, confirms they still write there, confirms the piece is theirs and not a syndication, and finds a contact route that’s public record, not guessed from a common email pattern. That’s slower than pulling a list from search results. It’s the difference between a list that gets read and one that bounces.
Dropping people it can’t verify
Some names won’t clear that bar. The right move is to drop them, with a reason, rather than include them at lower confidence and hope it doesn’t matter. A byline with no outlet affiliation that can be confirmed, a contact route that’s a general inbox already stated to be over capacity, or a “story” that turns out to be a syndicated repost of someone else’s piece: each is a reason to drop.
This shows up later, not on the spreadsheet. A press list padded with a few unverifiable rows to hit a round number of 25 looks the same as a fully verified one until someone pitches a person who never wrote what the list says they wrote. “22 verified, 3 dropped, here’s why” is a more useful number than a clean 25 that isn’t quite true.
Tone memory, so it doesn’t have to be re-explained
Outreach only works in a voice that’s yours: short, specific, no hype, one clear ask. Telling an agent that once, as a standing memory rather than a per-task instruction, means every pitch starts from the same voice instead of drifting pitch to pitch. It also means a rule like “never more than 120 words” or “never pitch the same person twice within 60 days” gets applied automatically, not just when you happen to remember to say it.
That memory earns its keep because outreach is repetitive: you’ll ask for a list like this more than once, and re-explaining your tone and the no-repeat rule each time is the overhead memory should remove.
Using your own key for the drafts
For research and page-checking, a fast, inexpensive model does the job. For the drafts themselves, the ones that will carry your name and your voice, it’s worth using a model you’ve chosen and a key you’ve added yourself, rather than a default. That’s more than a preference: it means the model drafting in your voice is the one you already trust for that kind of writing, and the usage is visible against your own account rather than folded into a shared rate.
“Use my Claude key for the drafts” is a plain instruction that does two things at once: it picks the model for that one part of the job, and it makes clear whose account is paying for it. Both should show up in the receipt as well as the instruction you sent.
Switching models mid-review, without losing context
Review rarely ends at “approve everything as drafted.” A common ask partway through is “redo the podcast-host drafts on a different model, shorter.” Done well, that switch keeps everything the agent already knows, who the person is, what piece they wrote, your tone rules, and reapplies it under the new model for that subset alone. What it shouldn’t do is treat the request as a fresh task: re-researching people already verified, or losing the 60-day rule because it’s now a different model’s “turn.”
That’s what model independence looks like in review: switching mid-review is a normal edit, and the receipt shows exactly which drafts moved to which model and why.
One run, worked through
25 targets found, a verified list, 11 pitches sent by mid-morning
Illustrative: this shows how the flow works, not a captured screenshot of a live task. Rows are described generically; no real journalist is named.
Subject: Overnight: press and podcast list. Find 25 journalists, newsletter writers and podcast hosts who covered personal AI agents, Meta Muse, Grok Bot or AI assistants in the last 90 days. For each, verify on their own site or recent article: name, outlet, the specific piece, and the best public contact route. Put it in a spreadsheet. Then draft a tailored pitch for each that references their piece. Use my Claude key for the drafts. Hold everything for my review in the morning; send nothing.
25 targets, 22 verified, 3 dropped, 25 drafts waiting
Found 25 candidates who covered personal AI agents, Meta Muse, Grok Bot or AI assistants in the last 90 days. 22 verified against their own site or byline: for example, a reporter at a national tech outlet who covered the Meta Muse launch on 8 September; a newsletter writer who ran a piece comparing always-on AI agents in mid-September; a podcast host whose recent episode covered agent security concerns. 3 dropped: one had no outlet affiliation that could be verified, one had no public contact route beyond a general inbox already at capacity per their bio, one credited byline turned out to be a syndication, not the original piece. All 25 have a tailored draft waiting, written in your tone and referencing their specific piece.
Send the 11 approved pitches (8 as drafted, 3 edited)?
Each pitch, the piece it references, and the verified contact route. Podcast-host drafts were redone on GPT, shorter, at your request.
Nothing has been sent yet.
Decision: Approved 8 as drafted, edited 3 before approving, rejected 14. 11 sent starting at 08:30, spaced through the morning rather than all at once.
Operator replies by email with the plan and an estimate. Nothing will be sent without your approval.
Research across recent coverage of personal AI agents and the named competitors, 83 pages visited, checking each candidate on their own site or byline page.
25 candidates found, 22 verified with a name, outlet, specific piece and public contact route. 3 dropped, with reasons, for lack of a verifiable outlet or contact route.
Spreadsheet written: name, outlet, piece (linked), contact route, why relevant, verified (y/n).
25 tailored pitches drafted, each referencing the specific piece, in your tone from memory.
Brief sent: 25 targets, 22 verified, 3 dropped (reasons attached), 25 drafts waiting.
You ask it to redo the podcast-host drafts on GPT, shorter. It switches model for those 6 drafts, keeping the same context and tone; the other 19 stay on Claude.
Approval card sent for the reviewed batch: 8 approved as drafted, 3 edited then approved, 14 rejected. Nothing sent yet.
11 approved pitches sent, spaced through the morning.
- 9 recorded
- 83 pages visited; 25 candidates found, 22 verified, 3 dropped with reasons.
- Research and verification (overnight): Gemini Flash (default key)
- Initial 25 drafts: Claude (your Claude key)
- Podcast-host drafts, redone shorter: GPT (default key)
- Nothing sent overnight. 11 pitches sent from 08:30, spaced through the morning; the other 14 held back.
- 14 drafts (not approved) and the 3 dropped candidates, none of them pitched.
That’s an example run, illustrative rather than a captured screenshot; it names no real journalist. Each row is described the way a receipt would, by role and outlet, not by name. A real captured run, once we have one, replaces it here without changing anything else on the page.
Approving 11 of 25
Verification narrows 25 candidates to 22 you can stand behind. Review narrows further, and it should: a verified contact isn’t the same as a pitch worth sending. In the run above, 8 drafts go out as written, 3 get edited first, and the other 14 are rejected outright, not because the research was wrong, but because not every verified, relevant person is a pitch worth making that week. Only the 11 you approved go out, spaced through the morning rather than all at once.
That’s a lower number than 25, and it should be: the job is to get you to a real decision on each row quickly, not to maximize how many messages leave your account.
The 60-day no-repeat rule
Part of tone memory worth calling out on its own: never pitch the same person twice within 60 days. It’s an easy rule to state and an easy one to forget by hand, especially across several lists built weeks apart. Held as memory rather than a per-list instruction, it applies automatically the next time a list touches an outlet or a name already pitched recently, either dropping that person from the new list or flagging that they were pitched before, so you decide instead of double-pitching by accident.
What an agent should never do in outreach
A few rules are worth stating plainly, because a small mistake here is visible to someone outside your workspace:
- Never send a pitch without your approval, no matter how confident the draft is.
- Never invent a contact route it couldn’t verify, even a plausible-looking guess.
- Never pitch someone twice inside the no-repeat window you’ve set.
- Never claim a connection to a piece that turned out to be a syndication or a repost.
None of these are exotic; they’re the same discipline you’d want from a person doing this work by hand, applied consistently to every row instead of the ones you happened to double-check.
The honest limit
A verified press list is a starting point, not a finished relationship. The agent can confirm someone covered the right topic and find a way to reach them; it can’t judge whether your pitch will land with that person this week, or read a reply and know when to follow up. That part stays yours, which is why nothing sends until you’ve looked at it.
Setting it up
- Define what counts as a relevant piece and how far back it should look, for example the last 90 days.
- State your tone rules once, as memory: word limit, no hype, one clear ask, and the no-repeat window.
- Add your own key for the model that should draft in your voice.
- Hold everything for review; approve, edit or reject row by row, and let sends space out rather than fire all at once.
See approvals for exactly what waits for your review, and bring your own key for how your own model access fits into a task like this.