How to write a CLAUDE.md for your revenue team
A working CLAUDE.md template for GTM teams using Claude Code. Where to keep ICP definitions, voice rules, signal scoring, and the data sources your subagents are allowed to touch.
CLAUDE.md is the highest-yield file in a GTM Claude Code repo. It's the contract every subagent reads before running, the brand voice gate, the ICP definition, and the rubric every draft self-scores against. Most first-build failures we see trace back to a thin CLAUDE.md, so this post is a working template you can adapt.
- 01 Identity & audience ~150 WORDS
Who the team is, what you sell, who reads the output.
- 02 ICP definition ~300 WORDS
Companies, titles, signals, exclusions. Specific over abstract.
- 03 Voice rules & banned phrases ~200 WORDS
Tone, banned punctuation, banned phrases by name, required structures.
- 04 Signal scoring (STA) ~200 WORDS
Specific, Timely, Actionable. Score 0-3 each, 7+ to send.
- 05 Data contract ~150 WORDS
Allowed sources, valid fields, hallucination risks to avoid citing.
- 06 Escalation rules ~100 WORDS
When agent stops and asks for human review. Names, regulated topics, edge cases.
- 07 Few-shot examples ~250 WORDS
Five excellent messages annotated with trigger, score, outcome.
- 08 Audit & metric definitions ~100 WORDS
What to log per draft and per send. Optimization metric.
A 1,200-word CLAUDE.md is the leverage. Every subagent reads it before drafting. Working template with full per-section content.
The structure below comes from real revenue-team builds. Names changed, numbers anonymized, but the shape is what's shipping in production.
What CLAUDE.md is and isn't
CLAUDE.md is the rules layer. ICP definition, voice rules, banned phrases, signal scoring criteria, data contracts, escalation rules. It's the document every agent reads first.
CLAUDE.md is not the data layer. CRM exports, contact lists, signal sources, and reference data live in /data/ folders the agents read separately. Mixing the two turns CLAUDE.md into a maintenance nightmare and bloats the context window on every agent run.
CLAUDE.md is not the prompt for any specific subagent. Each subagent has its own prompt in /subagents/{name}/prompt.md that references back to CLAUDE.md sections. Keep the rules in one place; let the subagent prompts cite them.
The eight sections that matter
1. Identity and audience
Open with two paragraphs naming who the team is, what the company sells, and who's reading the output. The agent uses this to calibrate everything that follows.
Example:
We're the GTM engineering team at [Company]. We sell [product] to [buyer persona] at [company segment]. The recipients of our outbound are senior operators who get 200+ cold messages a month. They unsubscribe from anything that reads as automated. The bar for our messages is whether the recipient would forward this to their boss, peer, or team.
Avoid abstractions. "B2B SaaS" is too broad. "Series B-D vertical SaaS in healthcare, finance, or industrial" is usable.
2. ICP definition
Name companies, titles, signals, and exclusions specifically. Include both the inclusion criteria and the exclusion criteria. The exclusion list is what keeps the agent from drifting into lookalike territory that wastes sends.
Working format:
- Company segment. [Specific industry, size band, funding stage, geography]
- Buyer titles. [Primary and secondary, with seniority floor]
- Triggering signals. [Hiring patterns, funding, leadership changes, product launches, regulatory filings, that justify outbound]
- Required STA threshold. [Score threshold for a signal to qualify; usually 7/9]
- Exclusions. [Companies in active down-round talks, companies under headcount floor, lookalikes that almost qualify but shouldn't]
3. Voice rules and banned phrases
This section is the difference between AI-default prose and your team's voice. Be specific. Ban phrases by name. Show good and bad examples in quotes.
Working format:
- Tone. Direct, operator-level, no hedging. Contractions allowed. First person plural.
- Banned punctuation. Em dashes. Use periods, commas, or rewrite the sentence.
- Banned phrases. "Just checking in." "I hope this finds you well." "Quick question." "Not just X, it's Y." "Game-changer." "Robust." "Leverage" as a verb.
- Banned structures. Negative parallelism ("not X, but Y"). Three-fragment dramatic triads. Self-answered rhetorical questions.
- Required structures. First sentence is the trigger. Second connects trigger to prospect's likely problem. Third offers something concrete to do this week.
4. Signal scoring rubric (STA)
Spell out Specific, Timely, Actionable with examples. The scoring agent reads this every run.
- Specific. Names, numbers, dates. A specific permit, hire, raise, tech-stack change. Bad: "they're growing." Good: "they posted 4 senior React roles in the last 14 days."
- Timely. Last 30 days, ideally last 7. Older signals are stale and read as outdated research.
- Actionable. The recipient could act this week. Not "think about this next quarter." Something concrete and scoped.
Score each criterion 0-3. Pass threshold: 7/9. Below threshold, the scoring agent kills the signal before drafting.
5. Data contract
Name the data sources the agents are allowed to read and the fields that are valid for personalization. This prevents hallucination by constraining what the drafting agent can cite.
- CRM exports. Path, fields, refresh cadence. Read-only.
- Signal sources. Hiring (BuiltIn, LinkedIn jobs API), funding (Crunchbase), leadership (LinkedIn People API), tech stack (BuiltWith), reviews (G2, Capterra). Cite source URLs in dossiers.
- Contact data. Path, fields. Email and phone validated within last 60 days. Title fields cross-referenced against company website.
- Hallucination risks. LinkedIn titles that haven't been confirmed against the company website should not be cited. Salary data not from a verified source is banned. Quotes from real people are banned unless the URL is in the dossier.
6. Escalation rules
Conditions under which the agent stops and asks for human review.
- Three failed regenerations on the same prospect, skip and log.
- Signal references a person by name, require human approval.
- Signal touches a regulated topic (health PHI, finance MNPI, education FERPA), require human approval.
- First 50 sends per new ICP require human approval before send.
- Any send that would cite an unverified data point, regenerate without the citation.
7. Few-shot examples
The whole CLAUDE.md earns its keep in this section. Five excellent messages from your team's best outbound, with the trigger, the dossier, and the message annotated. The drafting agent pattern-matches voice from these examples.
Format each example as:
- Trigger summary (one sentence)
- STA score (with reasoning)
- Final message (verbatim)
- Outcome (forwarded/replied/booked)
Update this section monthly. Add new winners. Retire patterns that stopped working. The CLAUDE.md ages out fast if this section freezes.
8. Audit and metric definitions
Tell the agent what to log and what metric the system optimizes for.
- Every draft logs: prospect, signal, STA score, regeneration count, final score, send/skip decision.
- Every send logs: recipient, send time, message hash, audit trail.
- Optimization metric: forward rate. Reply rate is secondary. Open rate is not used for decisions.
What to leave out
Three things that don't belong in CLAUDE.md.
Real CRM data. Live in /data/ folders. CLAUDE.md is the contract; data is the input.
Subagent-specific instructions. Live in /subagents/{name}/prompt.md. CLAUDE.md is shared across agents.
Marketing fluff. No mission statements, no values riffs, no positioning theater. The agent doesn't need to know your brand purpose. It needs to know what to write and what not to write.
The maintenance loop
A frozen CLAUDE.md is a dead system. Tune weekly for the first month. Tune monthly after that.
The trigger to update is always a real outcome. A send that got forwarded, add the message to the few-shot section. A send that got a polite decline, refine the banned phrases. A signal that produced a great message, raise its weight in the scoring rubric. A signal that wasted sends, drop it from the qualifying list.
The CLAUDE.md is the team playbook the system runs against. Treat it like one.
Common mistakes in the first version
Three patterns we see in CLAUDE.md drafts that come across our desk for review.
Banned phrase lists too short. Five banned phrases is not enough. Most teams need 30-50 banned phrases and at least 5-10 banned sentence structures. The agent will pattern-match around any constraint that's looser than the prose it generates by default.
ICP defined by industry, not signal. "Mid-market SaaS" is not an ICP. "Series B-D vertical SaaS in healthcare or finance with a CRO change in the last 60 days" is. Define the trigger as part of the ICP. The signal scoring rubric inherits its thresholds from this definition.
Few-shot examples that don't include the trigger. The few-shot section often shows only the final message. Show the trigger and the dossier alongside it. The agent learns the mapping from signal to message, which is what produces winning prose.
Where this fits in the broader Claude Code GTM stack
CLAUDE.md is the front door. Every subagent reads it before running. The broader Claude Code for GTM guide covers the subagent architecture that reads this file. The TVA framework covers the scoring philosophy that drives the rubric. The AI SDR replacement service is the engagement we run if you want this built rather than DIY.
Get CLAUDE.md right and the agents stay on-brand. Get it wrong and no model upgrade will fix the output.
Questions.
Where does CLAUDE.md actually live in the repo?
At the repo root. Claude Code automatically reads any CLAUDE.md it finds at the root of the working directory. You can also keep a /context/CLAUDE.md and import it from the root, but the simplest pattern is one root file per repo. For revenue teams, that one file should be the entire brand and ICP contract.
How long should CLAUDE.md be?
800 to 1,500 words for a working revenue-team CLAUDE.md. Below 500 words, it's too thin to constrain output. Above 2,000, agents start dropping context in long tool runs. The sweet spot is 1,000 to 1,200 words with clear section headers so agents can reference specific blocks.
Should we put real data in CLAUDE.md?
No. Keep CLAUDE.md as the rules layer. Real data (CRM exports, signal sources, contact lists) lives in /data/ folders the agents read separately. CLAUDE.md is the contract; data is the input. Mixing them turns the file into a maintenance nightmare and bloats the context window on every agent run.
How often should we update CLAUDE.md?
Weekly for the first month after launch. Monthly after that. Every time a real send produces a forwardable result, update the few-shot examples. Every time a send produces a bad outcome, add a banned phrase or scoring rule. The CLAUDE.md is a living document; treat it like the team playbook it is.
Can we share CLAUDE.md across multiple subagents?
Yes, and you should. Every subagent reads the same root CLAUDE.md before running. Subagent-specific instructions go in /subagents/{name}/prompt.md and reference back to CLAUDE.md sections. This keeps the brand and ICP contract in one place and prevents drift across agents.
Want this built?
We deploy Claude Code subagents into your GTM stack. Fixed fee. You own everything.