Brand Voice
Extracts the agency's brand voice from existing content samples, codifies it into a reusable voice guide, and generates config updates for agency.config.json. The output ensures consistent tone across all outreach channels: cold emails, LinkedIn messages, Instagram DMs, proposals, and website copy.
Prerequisites
agency.config.json in the project root
- 3-5 samples of existing content from the user (emails, posts, proposals, website copy)
- Optional: examples of competitor messaging to differentiate against
Phase 0: Read Current Config
- Read
agency.config.json from the project root.
- Extract
outreach.tone -- the current tone setting (e.g., "professional-friendly").
- Extract
outreach.banned_phrases -- phrases already flagged as off-limits.
- Extract
agency_name and services[].name for context.
- Present current settings:
CURRENT VOICE CONFIG:
Tone: [tone value]
Banned phrases: [list]
Ready to analyze your content samples to build a complete voice guide.
Phase 1: Gather Samples
Ask the user for 3-5 pieces of existing content. Prioritize content that performed well:
I need 3-5 samples of your best content. Prioritize:
1. A cold email that got a reply (paste the full email)
2. A LinkedIn post that got good engagement (paste the text)
3. A proposal intro or cover letter (paste the opening section)
4. Website copy (paste homepage or about page text)
5. An Instagram caption or DM that worked (paste the text)
The more variety, the better. Paste them in any order.
For each sample, tag:
- Channel (email, LinkedIn, Instagram, proposal, website)
- Performance (got reply, got engagement, closed deal, unknown)
- Audience (cold prospect, warm lead, existing client)
Phase 2: Analyze Patterns
Across all samples, analyze:
Sentence structure:
- Average sentence length (count words per sentence)
- Short (< 10 words), medium (10-20), long (> 20) ratio
- Use of fragments vs complete sentences
- Paragraph length (sentences per paragraph)
Vocabulary level:
- Casual markers: contractions, slang, first names, exclamation marks
- Professional markers: industry jargon, formal transitions, title usage
- Technical markers: specific tool/platform names, metrics, technical terms
- Grade level estimate (Flesch-Kincaid approximation)
Humor and personality:
- None: strictly business, no personality markers
- Subtle: occasional wit, light observations
- Frequent: jokes, self-deprecation, playful language
- Note specific examples found
Pronoun analysis:
- I/me count (personal, founder-led voice)
- We/us count (team/agency voice)
- You/your count (prospect-focused)
- Calculate ratio: "you" should ideally be > 50% of pronoun usage in outreach
Power words inventory:
- List every strong/emotional word used across samples
- Categorize: urgency, exclusivity, trust, results, growth, pain
Emotional register:
- Empathetic (acknowledging pain) vs authoritative (stating expertise)
- Optimistic vs realistic
- Urgent vs patient
Opening patterns:
- How does each sample start? (question, statement, compliment, data point, story)
- Which openings correlate with performance?
CTA patterns:
- How does each sample end? (direct ask, soft suggestion, open question)
- Which CTAs correlate with performance?
Phase 3: Generate Voice Guide
BRAND VOICE GUIDE: [Agency Name]
===
VOICE IN 3 WORDS: [word], [word], [word]
Example: "Direct, Helpful, Expert" or "Warm, Data-Driven, Bold"
---
WE ARE:
1. [attribute] -- [one-sentence example of how this shows up in writing]
2. [attribute] -- [example]
3. [attribute] -- [example]
4. [attribute] -- [example]
5. [attribute] -- [example]
WE ARE NOT:
1. [anti-attribute] -- [what to avoid]
2. [anti-attribute] -- [what to avoid]
3. [anti-attribute] -- [what to avoid]
4. [anti-attribute] -- [what to avoid]
5. [anti-attribute] -- [what to avoid]
---
TONE SPECTRUM:
Formal ---|---[X]------- Casual
Serious --|------[X]---- Playful
Technical -|--[X]-------- Simple
Reserved --|-------[X]--- Bold
Corporate -|--------[X]-- Personal
(X marks where the agency falls on each spectrum)
---
VOCABULARY:
ALWAYS USE:
- [word/phrase] -- [why it fits the voice]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
NEVER USE:
- [word/phrase] -- [why it clashes]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
- [word/phrase] -- [why]
(Include existing banned_phrases + newly identified ones)
---
SENTENCE PATTERNS:
Structure rules:
- [rule derived from analysis, e.g., "Lead with value, not credentials"]
- [rule, e.g., "Max 2 sentences before a line break in emails"]
- [rule, e.g., "Use questions to open, not statements"]
- [rule, e.g., "One idea per paragraph"]
Opening formulas (by performance):
1. [pattern] -- used in [sample], got [result]
2. [pattern] -- used in [sample], got [result]
CTA formulas (by performance):
1. [pattern] -- used in [sample], got [result]
2. [pattern] -- used in [sample], got [result]
---
BY CHANNEL:
Email:
- Tone adjustment: [how voice shifts for cold email]
- Max length: [words]
- Structure: [e.g., "hook -> pain -> proof -> CTA"]
- Signature style: [formal/casual]
LinkedIn:
- Tone adjustment: [how voice shifts for LinkedIn]
- Post format: [short-form, carousel narration, long-form]
- Connection note style: [approach]
- Comment style: [approach]
Instagram:
- Tone adjustment: [how voice shifts for IG]
- Caption style: [length, emoji usage, hashtag approach]
- DM style: [casual vs professional]
Proposals:
- Tone adjustment: [how voice shifts for proposals]
- Formality level: [higher/same/lower than email]
- Structure markers: [headers, bullets, data presentation]
Phase 4: Generate Config Updates
Produce updated config values for agency.config.json:
{
"outreach": {
"tone": "[2-3 word tone description derived from analysis]",
"banned_phrases": [
"existing_banned_1",
"existing_banned_2",
"newly_identified_1",
"newly_identified_2",
"newly_identified_3"
],
"voice_attributes": [
"attribute_1",
"attribute_2",
"attribute_3"
],
"preferred_words": [
"word_1",
"word_2",
"word_3"
],
"sentence_max_length": 20,
"paragraph_max_sentences": 2,
"pronoun_target": {
"you_ratio": 0.5,
"we_ratio": 0.3,
"i_ratio": 0.2
}
}
}
Present the diff between current and proposed config.
Phase 5: Output
Return the complete brand voice package:
- Voice Guide -- the full guide from Phase 3, formatted as a standalone document
- Config updates -- JSON block ready to merge into
agency.config.json
- Quick reference card -- a 5-line cheat sheet for daily use:
VOICE CHEAT SHEET: [Agency Name]
Voice: [3 words]
Open with: [formula]
Close with: [formula]
Always: [top rule]
Never: [top anti-rule]
- Channel-specific templates -- one sentence starter per channel showing the voice in action
- Recommended next steps:
- Update
message-generator templates to reflect voice guide
- Review existing email sequences for voice consistency
- Re-run
brand-voice quarterly or after significant pivot
If the user confirms, write the config updates directly into agency.config.json.
Example Usage
Trigger phrases:
- "Define our brand voice"
- "Analyze our messaging tone"
- "Build a voice guide"
- "Make our outreach sound consistent"
- "What does our brand sound like?"
User: Define our brand voice
Assistant: [asks for content samples, analyzes patterns, builds voice guide, generates config updates]
User: Our cold emails sound too formal compared to our LinkedIn posts. Fix the voice.
Assistant: [analyzes both channels, identifies inconsistencies, updates voice guide with channel-specific adjustments]
1---2name: brand-voice3description: Extract and codify brand voice from existing content for consistent messaging4---56# Brand Voice78Extracts the agency's brand voice from existing content samples, codifies it into a reusable voice guide, and generates config updates for `agency.config.json`. The output ensures consistent tone across all outreach channels: cold emails, LinkedIn messages, Instagram DMs, proposals, and website copy.910## Prerequisites1112- `agency.config.json` in the project root13- 3-5 samples of existing content from the user (emails, posts, proposals, website copy)14- Optional: examples of competitor messaging to differentiate against1516## Phase 0: Read Current Config17181. Read `agency.config.json` from the project root.192. Extract `outreach.tone` -- the current tone setting (e.g., "professional-friendly").203. Extract `outreach.banned_phrases` -- phrases already flagged as off-limits.214. Extract `agency_name` and `services[].name` for context.225. Present current settings:23 ```24 CURRENT VOICE CONFIG:25 Tone: [tone value]26 Banned phrases: [list]2728 Ready to analyze your content samples to build a complete voice guide.29 ```3031## Phase 1: Gather Samples3233Ask the user for 3-5 pieces of existing content. Prioritize content that performed well:3435```36I need 3-5 samples of your best content. Prioritize:37381. A cold email that got a reply (paste the full email)392. A LinkedIn post that got good engagement (paste the text)403. A proposal intro or cover letter (paste the opening section)414. Website copy (paste homepage or about page text)425. An Instagram caption or DM that worked (paste the text)4344The more variety, the better. Paste them in any order.45```4647For each sample, tag:48- Channel (email, LinkedIn, Instagram, proposal, website)49- Performance (got reply, got engagement, closed deal, unknown)50- Audience (cold prospect, warm lead, existing client)5152## Phase 2: Analyze Patterns5354Across all samples, analyze:5556**Sentence structure:**57- Average sentence length (count words per sentence)58- Short (< 10 words), medium (10-20), long (> 20) ratio59- Use of fragments vs complete sentences60- Paragraph length (sentences per paragraph)6162**Vocabulary level:**63- Casual markers: contractions, slang, first names, exclamation marks64- Professional markers: industry jargon, formal transitions, title usage65- Technical markers: specific tool/platform names, metrics, technical terms66- Grade level estimate (Flesch-Kincaid approximation)6768**Humor and personality:**69- None: strictly business, no personality markers70- Subtle: occasional wit, light observations71- Frequent: jokes, self-deprecation, playful language72- Note specific examples found7374**Pronoun analysis:**75- I/me count (personal, founder-led voice)76- We/us count (team/agency voice)77- You/your count (prospect-focused)78- Calculate ratio: "you" should ideally be > 50% of pronoun usage in outreach7980**Power words inventory:**81- List every strong/emotional word used across samples82- Categorize: urgency, exclusivity, trust, results, growth, pain8384**Emotional register:**85- Empathetic (acknowledging pain) vs authoritative (stating expertise)86- Optimistic vs realistic87- Urgent vs patient8889**Opening patterns:**90- How does each sample start? (question, statement, compliment, data point, story)91- Which openings correlate with performance?9293**CTA patterns:**94- How does each sample end? (direct ask, soft suggestion, open question)95- Which CTAs correlate with performance?9697## Phase 3: Generate Voice Guide9899```100BRAND VOICE GUIDE: [Agency Name]101===102103VOICE IN 3 WORDS: [word], [word], [word]104Example: "Direct, Helpful, Expert" or "Warm, Data-Driven, Bold"105106---107108WE ARE:1091. [attribute] -- [one-sentence example of how this shows up in writing]1102. [attribute] -- [example]1113. [attribute] -- [example]1124. [attribute] -- [example]1135. [attribute] -- [example]114115WE ARE NOT:1161. [anti-attribute] -- [what to avoid]1172. [anti-attribute] -- [what to avoid]1183. [anti-attribute] -- [what to avoid]1194. [anti-attribute] -- [what to avoid]1205. [anti-attribute] -- [what to avoid]121122---123124TONE SPECTRUM:125126Formal ---|---[X]------- Casual127Serious --|------[X]---- Playful128Technical -|--[X]-------- Simple129Reserved --|-------[X]--- Bold130Corporate -|--------[X]-- Personal131132(X marks where the agency falls on each spectrum)133134---135136VOCABULARY:137138ALWAYS USE:139- [word/phrase] -- [why it fits the voice]140- [word/phrase] -- [why]141- [word/phrase] -- [why]142- [word/phrase] -- [why]143- [word/phrase] -- [why]144145NEVER USE:146- [word/phrase] -- [why it clashes]147- [word/phrase] -- [why]148- [word/phrase] -- [why]149- [word/phrase] -- [why]150- [word/phrase] -- [why]151(Include existing banned_phrases + newly identified ones)152153---154155SENTENCE PATTERNS:156157Structure rules:158- [rule derived from analysis, e.g., "Lead with value, not credentials"]159- [rule, e.g., "Max 2 sentences before a line break in emails"]160- [rule, e.g., "Use questions to open, not statements"]161- [rule, e.g., "One idea per paragraph"]162163Opening formulas (by performance):1641. [pattern] -- used in [sample], got [result]1652. [pattern] -- used in [sample], got [result]166167CTA formulas (by performance):1681. [pattern] -- used in [sample], got [result]1692. [pattern] -- used in [sample], got [result]170171---172173BY CHANNEL:174175Email:176- Tone adjustment: [how voice shifts for cold email]177- Max length: [words]178- Structure: [e.g., "hook -> pain -> proof -> CTA"]179- Signature style: [formal/casual]180181LinkedIn:182- Tone adjustment: [how voice shifts for LinkedIn]183- Post format: [short-form, carousel narration, long-form]184- Connection note style: [approach]185- Comment style: [approach]186187Instagram:188- Tone adjustment: [how voice shifts for IG]189- Caption style: [length, emoji usage, hashtag approach]190- DM style: [casual vs professional]191192Proposals:193- Tone adjustment: [how voice shifts for proposals]194- Formality level: [higher/same/lower than email]195- Structure markers: [headers, bullets, data presentation]196```197198## Phase 4: Generate Config Updates199200Produce updated config values for `agency.config.json`:201202```json203{204 "outreach": {205 "tone": "[2-3 word tone description derived from analysis]",206 "banned_phrases": [207 "existing_banned_1",208 "existing_banned_2",209 "newly_identified_1",210 "newly_identified_2",211 "newly_identified_3"212 ],213 "voice_attributes": [214 "attribute_1",215 "attribute_2",216 "attribute_3"217 ],218 "preferred_words": [219 "word_1",220 "word_2",221 "word_3"222 ],223 "sentence_max_length": 20,224 "paragraph_max_sentences": 2,225 "pronoun_target": {226 "you_ratio": 0.5,227 "we_ratio": 0.3,228 "i_ratio": 0.2229 }230 }231}232```233234Present the diff between current and proposed config.235236## Phase 5: Output237238Return the complete brand voice package:2392401. **Voice Guide** -- the full guide from Phase 3, formatted as a standalone document2412. **Config updates** -- JSON block ready to merge into `agency.config.json`2423. **Quick reference card** -- a 5-line cheat sheet for daily use:243 ```244 VOICE CHEAT SHEET: [Agency Name]245 Voice: [3 words]246 Open with: [formula]247 Close with: [formula]248 Always: [top rule]249 Never: [top anti-rule]250 ```2514. **Channel-specific templates** -- one sentence starter per channel showing the voice in action2525. **Recommended next steps**:253 - Update `message-generator` templates to reflect voice guide254 - Review existing email sequences for voice consistency255 - Re-run `brand-voice` quarterly or after significant pivot256257If the user confirms, write the config updates directly into `agency.config.json`.258259## Example Usage260261Trigger phrases:262- "Define our brand voice"263- "Analyze our messaging tone"264- "Build a voice guide"265- "Make our outreach sound consistent"266- "What does our brand sound like?"267268```269User: Define our brand voice270Assistant: [asks for content samples, analyzes patterns, builds voice guide, generates config updates]271```272273```274User: Our cold emails sound too formal compared to our LinkedIn posts. Fix the voice.275Assistant: [analyzes both channels, identifies inconsistencies, updates voice guide with channel-specific adjustments]276```