Check Outreach
Fact-check a drafted outreach email, or a folder of them, against the research files it was written from and write an annotated report with a claims table, without editing the draft.
/check-outreach[draft path or pasted email] [research path]A slash command that runs the outreach-claim-checker procedure on a draft file, a folder of drafts, or a pasted email. It marks every factual and personalization claim sourced, unsourced, contradicted, or stale against the research files you point it at, writes an annotated report next to the drafts, and never edits the draft itself.
Install to ~/.claude/commands/check-outreach.md
npx agentscamp add commands/check-outreachRun the outreach-claim-checker procedure over drafts on disk and get a report you can hand back to whoever wrote them. Every claim about the prospect is traced to a line in the research, or it is not claimed. The command reads and writes a report; it never edits a draft, so it is safe to point at a folder someone else owns.
Scope
Interpret $ARGUMENTS in this order:
- One path to a file — that is the draft. Look for research beside it (see Step 1).
- One path to a directory —
Glob*.md,*.txt, and*.emlinside it; every match is a draft, checked as one batch. - Two paths — the first is the draft or draft folder, the second is the research file or folder.
- Pasted text with no path — treat the pasted block as a single draft and ask, once, for the research it came from. If the answer is "none", proceed: the result will be an all-unsourced HOLD, which is the correct finding.
- Empty — ask "Which draft should I check, and where is the research?" and stop. Do not pick a file from the project.
If Read fails on a path, report it and continue with the rest. Never substitute a similarly named file.
NOTE
This command checks claims against files you supply. It does not browse and it must not fill a gap from the model's own memory — an unsupported claim is unsourced even when it happens to be true. It also does not judge the writing: tone, structure, and subject lines are out of scope.
Step 1 — Assemble the inputs
Number the drafts D1, D2, ... in the order globbed. For research, use the second path if given; otherwise Glob beside the drafts for research*, notes*, *-research.md, sources*, and account-*.md. Read each match, number them S1, S2, ..., and record what each is and its date — from frontmatter, a dated heading, or the filename. Print the input list before checking anything, so the reader can see what the verdicts are based on.
Step 2 — Extract the claims
For each draft, list every checkable assertion, quoted verbatim, and type it: company fact, person fact, technographic, event, relationship, own-product, or inference. Pleasantries, questions, opinions, and calls to action are not claims. An inference is recorded but only inherits the status of the fact under it.
Step 3 — Confirm the entity
Before checking any fact, confirm each source is about the company and person the draft names — matching domain, not just a matching name. An entity mismatch invalidates every claim drawn from that source; record it once, then re-check the draft against what remains.
Step 4 — Mark every claim
First rule that matches wins:
- Contradicted — a source says otherwise, or two sources disagree with no clear newer authority.
- Sourced — a specific line in a specific source states it; record
S<n>and quote the line. - Stale — sourced, but the source is older than 12 months for funding, headcount, revenue or ownership; 6 months for a title or a tech stack; 90 days for anything the draft calls recent.
- Unsourced — everything else.
Step 5 — Produce the corrected draft
Cut unsourced specifics rather than softening them. Narrow a claim only where a source supports the weaker version. Add the hedge the source supports to a stale claim, or cut it. Repair the seams so the email still reads as one message, and say when a draft has nothing personalized left.
Step 6 — Verdict and report
Per draft: HOLD for any contradicted claim, any unsourced relationship claim, or any unsourced person fact; FIX if unsourced or stale claims remain; SEND if every remaining claim is sourced and fresh.
Write the report to outreach-check-<YYYY-MM-DD>.md in the drafts' directory (or the working directory for pasted text), containing: the input list, the claims table, the corrected drafts with cuts marked, the verdicts, the lookups that would close the remaining gaps, and the batch summary — claim count, share sourced, dominant failure type, and any source that produced more than one contradiction. Print the verdict line and the batch summary in the reply; leave the detail in the file.
Output
A written report plus a short reply: one verdict line per draft and the batch summary. If a single source is behind most of the failures, say which and how old it is — that is usually one broken research step, not a batch of careless writing.
Deliverability is the other half of the send: cold-email-deliverability-auditor audits the domain, list, and message that carry these drafts. The workflow that produces the drafts and the research together is Research prospects with Claude; /audit-crm is the companion command for the data underneath. The whole set is in Claude skills for sales, and Claude for sales teams covers where it fits.
Filed under
Related
- Claude Skills for Sales: The Set Worth InstallingThe Claude skills a sales team should install: Anthropic's nine official ones, plus four of ours that verify and audit what the official set writes.
- How to Research a Prospect with Claude (and Verify It Before You Send)A step-by-step prospect research workflow in Claude: run account-research standalone, add an enrichment connector, draft the email, then verify every claim.
- Outreach Claim CheckerCheck every factual and personalization claim in a drafted outreach email, or a batch of them, against the research the draft was written from: funding rounds, job titles and recent moves, tech stack, headcount, product launches and press, and named mutual connections. Each claim is marked sourced with the line that supports it, unsourced, contradicted, or stale, then unsupported specifics are cut or narrowed to what the research actually says, and every email leaves with a send, fix, or hold verdict. A source is never invented and never inferred. Use when outreach was personalized from AI or analyst research and nobody has verified the details before it reaches a prospect.
- Audit CRMAudit a CRM CSV export for duplicates, past close dates, stale deals, missing required fields, single-threaded deals, owner gaps and format drift, and write a ranked fix list with the record IDs.
- Claude for Sales Teams: The Surface MapWhich Claude surface a sales team should actually open: Anthropic's free sales plugin, claude.ai Projects, Cowork, Claude Code, and MCP connectors.
- Sales EngineerUse this agent to review the technical asks a prospect has put in front of a deal — security questionnaires, integration and API requirements, SSO and provisioning, SLA and uptime demands, data residency and retention terms, custom feature requests — and separate what the product does today from what needs engineering, with evidence for each verdict from the product's own docs and code. It writes the answer language a rep can safely send, and flags the commitments nobody should make without Engineering, Security, Legal, or Finance signing off. Examples — 'they want SSO, SCIM and EU data residency, what can we say yes to', 'review this integration requirements doc before Thursday's technical call', 'they are asking for a 99.99% SLA and two-hour breach notification, tell me what we cannot commit to'.