ICP Firmographics Skill
Generate comprehensive, actionable Ideal Customer Profile firmographics documents from source materials like GTM strategy decks, knowledge bases, founder notes, and past conversation context.
When to Use
- User wants to create an ICP or buyer persona document
- User has strategy materials (decks, notes, knowledge bases) and wants a BD/sales-ready deliverable
- User asks for a "customer profile", "firmographics", "qualification criteria", or "who should we sell to" document
- User wants to hand off targeting criteria to a BD, GTM, or sales team
Voice and Tone
When Drafting ICP Content
The ICP document is read daily by BD and sales people. Write accordingly:
- Direct and actionable. "[Persona] hires us as a last-mile pinch-hitter" beats "[Persona] may be interested in consulting engagements."
- Use persona names. "Listen for [Persona]'s fear of conflicting metrics" is stickier than "The VP of Growth persona is concerned about attribution."
- Frame fears as listening cues. BD needs to recognize these in real conversations. Write fears as things prospects actually say or signal, not academic descriptions.
- Frame entry points as actions. "Win with a Quick Audit Sprint" is better than "Consider offering an audit."
- The Quick Reference must scan in 10 seconds. A BD person glancing at a LinkedIn profile should be able to check Yes/No signals instantly.
When Communicating with the User During Workflow
- Be transparent. Clearly distinguish what came from sources vs. what you inferred.
- Surface conflicts immediately. Don't bury misalignments — lead with them.
- Ask focused questions. One or two at a time, not a questionnaire dump.
- If you have enough to draft, draft. Don't over-interview. You can refine iteratively.
- Acknowledge the user's expertise. They know their business better than any document does. Your job is to organize and pressure-test, not to teach them their own ICP.
Workflow Overview
The skill follows a 4-phase workflow:
- GATHER — Collect and synthesize all source materials
- CROSS-REFERENCE — Identify gaps and misalignments between sources
- DRAFT — Produce a structured text draft for user review
- FORMAT — Generate a polished .docx deliverable
Read references/AGENTS.md for the detailed agent behavior instructions.
Read references/MEMORY.md for the knowledge structure and what to extract from sources.
Phase 1: GATHER
Collect all available source materials. These may include:
- Uploaded files (PDFs, PPTX, DOCX, TXT, MD)
- Pasted text in the conversation
- Past conversation context
- Linked or referenced documents
Extract from each source:
- Company identity (name, leader, mission, differentiators)
- Target firmographics (company size, revenue, headcount, stage, geography)
- Technographics (stack preferences, tools, platforms, disqualifiers)
- Buyer personas (names/archetypes, roles, motivations, fears, channels, entry points)
- Service offerings (door openers, strategic plays, what to avoid)
- Sales process notes (pricing model, discovery process, positioning rules)
- Trigger events (what causes urgency to buy)
- Qualification criteria
- Disqualification signals
See references/MEMORY.md for the full extraction schema.
Phase 2: CROSS-REFERENCE
If multiple source documents are provided, cross-reference them for misalignments. This is critical — source materials often contradict each other on specifics like:
- Company size ranges (e.g., "80-800" vs "100-1,000")
- Revenue thresholds (e.g., "$10M ARR" vs "$10M ARR OR venture-funded")
- Persona channels (generic vs persona-specific)
- Persona fears/motivations (surface-level vs nuanced)
- Missing dimensions (analytics maturity, pricing model, emotional triggers)
Produce a misalignment report as text in the conversation before drafting. Format as:
## Key Misalignments
**1. [Attribute] — [Nature of conflict]**
- Source A said: [X]
- Source B said: [Y]
- **Resolution:** [Which to use and why]
**2. ...
Ask the user to confirm resolutions before proceeding to draft.
Phase 3: DRAFT
Produce a structured text draft in the conversation following the 10-section structure defined in references/MEMORY.md:
- The One Thing to Remember (universal anxiety / emotional core)
- Company Firmographics
- Technographics
- Buyer Personas (per-persona tables with: cares about, fears, success factor, primary channel, how we win, what they need to see, proof metrics)
- Emotional vs. Logical Buying Triggers
- Trigger Events
- Service Offerings (effort/value matrix: door openers, strategic, nice-to-have, not worth it)
- Qualification Checklist (scored pass/fail threshold)
- When to Avoid / De-Prioritize (hard disqualifiers, soft disqualifiers, pricing disqualifiers, the "Goldilocks" weakness)
- Quick Reference (Yes signals / No signals for prospecting)
Also include if available:
- Sales Process Notes for BD
- The founder/leader positioning rule (if applicable)
Present the full draft as text and ask for user review before formatting.
Phase 4: FORMAT
Once the user approves the draft (or requests formatting directly), generate a .docx file.
Use the formatting template defined in templates/docx-structure.md for the visual design system:
- Navy + coral color palette
- Georgia headers, Calibri body
- Alternating row shading on tables
- Persona cards with role badges (Economic Buyer / Co-Sponsor)
- Callout boxes for key quotes and warnings
- Accent-bordered list items for disqualifiers
- Side-by-side Yes/No signals table
- Header with company name, footer with "Confidential" + page numbers
Note: If a docx skill is available in your environment, use it for document
generation and validation. Otherwise, use the docx npm package directly
(npm install docx).
Formatting Standards
Text Draft (Phase 3)
- Use markdown headers for the 10 sections
- Use tables (not bullet lists) for structured data like personas, firmographics, technographics
- Use blockquotes for the universal anxiety callout
- Keep body paragraphs to 2-3 sentences max
- Use bold for field labels in inline descriptions
Word Document (Phase 4)
Color Palette
| Role |
Color |
Hex |
| Primary (headers, accents) |
Navy |
1E2761 |
| Accent (callouts, warnings) |
Coral |
E85D5D |
| Body text |
Dark charcoal |
333333 |
| Muted text |
Gray |
666666 |
| Table header background |
Navy |
1E2761 |
| Table alternating row |
Light blue-gray |
F0F3F8 |
| Positive accent (green) |
Forest green |
2D8A4E |
| Negative accent (red) |
Red |
C0392B |
| Warning accent (amber) |
Amber |
E8A838 |
Typography
| Element |
Font |
Size |
Style |
| Document title |
Georgia |
52pt (26 half-pt) |
Bold, Navy |
| Section headers (H1) |
Georgia |
36pt (18 half-pt) |
Bold, Navy |
| Sub-headers (H2) |
Georgia |
28pt (14 half-pt) |
Bold, Dark |
| Body text |
Calibri |
22pt (11 half-pt) |
Regular, Charcoal |
| Table header text |
Calibri |
20pt (10 half-pt) |
Bold, White |
| Table body text |
Calibri |
20pt (10 half-pt) |
Regular, Charcoal |
| Callout quotes |
Georgia |
24pt (12 half-pt) |
Italic, Coral |
| Caption/muted text |
Calibri |
16-18pt |
Regular, Gray |
Note: docx-js uses half-points (size: 22 = 11pt). The sizes above are in half-points.
Page Setup
- US Letter: 12240 x 15840 DXA
- 1-inch margins all sides (1440 DXA)
- Content width: 9360 DXA
- Header: Company name (left) + document subtitle (right)
- Footer: "Confidential" (left) + page number (right)
- Footer has a top border line for separation
Table Design
- Full-width tables (9360 DXA)
- Always set both
columnWidths on table AND width on each cell
- Always use
WidthType.DXA (never percentage — breaks in Google Docs)
- Header row: Navy background, white bold text
- Body rows: alternating
F0F3F8 / no shading
- Cell margins:
{ top: 80, bottom: 80, left: 120, right: 120 }
- Border: 1pt, color
D0D5DD
- Use
ShadingType.CLEAR (never SOLID)
Special Components
Callout Box (for key quotes and warnings):
- Left border: 12pt, Coral
- Other borders: 1pt, Coral
- Background:
FFF5F5
- Text: Georgia, italic, Coral
Persona Card Header:
- Two-cell table row
- Left cell: Navy background, persona name in Georgia bold white
- Right cell: Coral background, role badge ("ECONOMIC BUYER" / "CO-SPONSOR") in Calibri bold white, centered
Accent List Items (for disqualifiers):
- Left border: 8pt, color varies (Red for hard, Amber for soft)
- Bottom border: 1pt light gray
- No top/right borders
- Left margin: 200 DXA for indent effect
Yes/No Signals (Quick Reference):
- Two-column table
- Left cell: Green-tinted background (
F0F8F4), green header
- Right cell: Red-tinted background (
FFF5F5), red header
- Items as separate paragraphs (not bullets)
Page Breaks
Place page breaks:
- After the cover/title section + "One Thing to Remember"
- After Company Firmographics
- After Technographics
- Between persona pairs (after 2nd persona, before 3rd)
- After all personas
- After Trigger Events
- After Service Offerings
- After Qualification Checklist
- After When to Avoid section
Principle: Each major section should start on a fresh page. Tables should not be split across page breaks if avoidable.
Edge Cases
- Single source only: Skip the cross-reference phase, but flag any internal inconsistencies.
- No uploaded files / conversation only: Gather from conversation context and memory. Ask clarifying questions to fill gaps.
- User wants text only, no .docx: Stop after Phase 3 and skip Phase 4.
- User wants to update an existing ICP: Treat the existing document as Source A, new information as Source B, and run the full cross-reference phase.
- Missing personas: If the source material doesn't define named buyer personas, prompt the user: "I don't see defined buyer personas. Would you like me to infer them from the target roles mentioned, or should we define them together?"
- Missing pricing/billing model: Always ask — this is a common gap and a qualification signal.
Quality Checklist
Content Quality
Format Quality
Handoff Quality
Anti-Patterns to Avoid
- Generic personas. "VP of Marketing wants better ROI" is useless. Specific: "[Persona] fears conflicting metrics and hires us as a last-mile pinch-hitter."
- Uniform acquisition channels. If every persona's channel is "referrals and LinkedIn", you haven't extracted enough. Push for specifics.
- Missing emotional layer. Logical triggers (tooling, implementation) are necessary but insufficient. BD needs to know what opens the door emotionally.
- Academic tone. "The consideration phase may benefit from..." — nobody reads this. Write: "[Persona] won't buy until she sees social proof from clients who look like her."
- Undifferentiated services. If door openers and strategic offerings blur together, the BD team won't know where to start. Enforce the timeline/budget separation.
- Weak disqualifiers. "Not a great fit" is weak. "Business system re-engineering — becomes a 'solving for the unknown' trap" gives the BD team a reason they can articulate.
Dependencies
docx npm package (npm install docx)
- LibreOffice + Poppler (for PDF conversion and visual QA — optional)
1---2name: icp-firmographics3description: Generate detailed, board-ready Ideal Customer Profile (ICP) firmographics documents for consulting firms and B2B service businesses. Use this skill whenever the user asks to create an ICP, buyer persona document, firmographics profile, GTM targeting doc, or any go-to-market customer profiling deliverable. Also trigger when the user mentions 'ideal customer', 'buyer persona', 'target customer profile', 'who we sell to', 'qualification criteria', or wants to create a hand-off document for a BD/GTM/sales team. Works with uploaded strategy decks, knowledge base docs, or raw notes as source material. Produces a formatted Word document (.docx) as the primary deliverable.4---56# ICP Firmographics Skill78Generate comprehensive, actionable Ideal Customer Profile firmographics documents from source materials like GTM strategy decks, knowledge bases, founder notes, and past conversation context.910## When to Use1112- User wants to create an ICP or buyer persona document13- User has strategy materials (decks, notes, knowledge bases) and wants a BD/sales-ready deliverable14- User asks for a "customer profile", "firmographics", "qualification criteria", or "who should we sell to" document15- User wants to hand off targeting criteria to a BD, GTM, or sales team1617## Voice and Tone1819### When Drafting ICP Content2021The ICP document is read daily by BD and sales people. Write accordingly:2223- **Direct and actionable.** "[Persona] hires us as a last-mile pinch-hitter" beats "[Persona] may be interested in consulting engagements."24- **Use persona names.** "Listen for [Persona]'s fear of conflicting metrics" is stickier than "The VP of Growth persona is concerned about attribution."25- **Frame fears as listening cues.** BD needs to recognize these in real conversations. Write fears as things prospects actually say or signal, not academic descriptions.26- **Frame entry points as actions.** "Win with a Quick Audit Sprint" is better than "Consider offering an audit."27- **The Quick Reference must scan in 10 seconds.** A BD person glancing at a LinkedIn profile should be able to check Yes/No signals instantly.2829### When Communicating with the User During Workflow3031- **Be transparent.** Clearly distinguish what came from sources vs. what you inferred.32- **Surface conflicts immediately.** Don't bury misalignments — lead with them.33- **Ask focused questions.** One or two at a time, not a questionnaire dump.34- **If you have enough to draft, draft.** Don't over-interview. You can refine iteratively.35- **Acknowledge the user's expertise.** They know their business better than any document does. Your job is to organize and pressure-test, not to teach them their own ICP.3637## Workflow Overview3839The skill follows a 4-phase workflow:40411. **GATHER** — Collect and synthesize all source materials422. **CROSS-REFERENCE** — Identify gaps and misalignments between sources433. **DRAFT** — Produce a structured text draft for user review444. **FORMAT** — Generate a polished .docx deliverable4546Read `references/AGENTS.md` for the detailed agent behavior instructions.47Read `references/MEMORY.md` for the knowledge structure and what to extract from sources.4849## Phase 1: GATHER5051Collect all available source materials. These may include:5253- Uploaded files (PDFs, PPTX, DOCX, TXT, MD)54- Pasted text in the conversation55- Past conversation context56- Linked or referenced documents5758**Extract from each source:**59- Company identity (name, leader, mission, differentiators)60- Target firmographics (company size, revenue, headcount, stage, geography)61- Technographics (stack preferences, tools, platforms, disqualifiers)62- Buyer personas (names/archetypes, roles, motivations, fears, channels, entry points)63- Service offerings (door openers, strategic plays, what to avoid)64- Sales process notes (pricing model, discovery process, positioning rules)65- Trigger events (what causes urgency to buy)66- Qualification criteria67- Disqualification signals6869See `references/MEMORY.md` for the full extraction schema.7071## Phase 2: CROSS-REFERENCE7273If multiple source documents are provided, cross-reference them for misalignments. This is critical — source materials often contradict each other on specifics like:7475- Company size ranges (e.g., "80-800" vs "100-1,000")76- Revenue thresholds (e.g., "$10M ARR" vs "$10M ARR OR venture-funded")77- Persona channels (generic vs persona-specific)78- Persona fears/motivations (surface-level vs nuanced)79- Missing dimensions (analytics maturity, pricing model, emotional triggers)8081**Produce a misalignment report** as text in the conversation before drafting. Format as:8283```84## Key Misalignments8586**1. [Attribute] — [Nature of conflict]**87- Source A said: [X]88- Source B said: [Y]89- **Resolution:** [Which to use and why]9091**2. ...92```9394Ask the user to confirm resolutions before proceeding to draft.9596## Phase 3: DRAFT9798Produce a structured text draft in the conversation following the **10-section structure** defined in `references/MEMORY.md`:991001. The One Thing to Remember (universal anxiety / emotional core)1012. Company Firmographics1023. Technographics1034. Buyer Personas (per-persona tables with: cares about, fears, success factor, primary channel, how we win, what they need to see, proof metrics)1045. Emotional vs. Logical Buying Triggers1056. Trigger Events1067. Service Offerings (effort/value matrix: door openers, strategic, nice-to-have, not worth it)1078. Qualification Checklist (scored pass/fail threshold)1089. When to Avoid / De-Prioritize (hard disqualifiers, soft disqualifiers, pricing disqualifiers, the "Goldilocks" weakness)10910. Quick Reference (Yes signals / No signals for prospecting)110111Also include if available:112- Sales Process Notes for BD113- The founder/leader positioning rule (if applicable)114115Present the full draft as text and ask for user review before formatting.116117## Phase 4: FORMAT118119Once the user approves the draft (or requests formatting directly), generate a .docx file.120121Use the formatting template defined in `templates/docx-structure.md` for the visual design system:122- Navy + coral color palette123- Georgia headers, Calibri body124- Alternating row shading on tables125- Persona cards with role badges (Economic Buyer / Co-Sponsor)126- Callout boxes for key quotes and warnings127- Accent-bordered list items for disqualifiers128- Side-by-side Yes/No signals table129- Header with company name, footer with "Confidential" + page numbers130131> **Note:** If a `docx` skill is available in your environment, use it for document132> generation and validation. Otherwise, use the `docx` npm package directly133> (`npm install docx`).134135## Formatting Standards136137### Text Draft (Phase 3)138139- Use markdown headers for the 10 sections140- Use tables (not bullet lists) for structured data like personas, firmographics, technographics141- Use blockquotes for the universal anxiety callout142- Keep body paragraphs to 2-3 sentences max143- Use bold for field labels in inline descriptions144145### Word Document (Phase 4)146147#### Color Palette148149| Role | Color | Hex |150|------|-------|-----|151| Primary (headers, accents) | Navy | `1E2761` |152| Accent (callouts, warnings) | Coral | `E85D5D` |153| Body text | Dark charcoal | `333333` |154| Muted text | Gray | `666666` |155| Table header background | Navy | `1E2761` |156| Table alternating row | Light blue-gray | `F0F3F8` |157| Positive accent (green) | Forest green | `2D8A4E` |158| Negative accent (red) | Red | `C0392B` |159| Warning accent (amber) | Amber | `E8A838` |160161#### Typography162163| Element | Font | Size | Style |164|---------|------|------|-------|165| Document title | Georgia | 52pt (26 half-pt) | Bold, Navy |166| Section headers (H1) | Georgia | 36pt (18 half-pt) | Bold, Navy |167| Sub-headers (H2) | Georgia | 28pt (14 half-pt) | Bold, Dark |168| Body text | Calibri | 22pt (11 half-pt) | Regular, Charcoal |169| Table header text | Calibri | 20pt (10 half-pt) | Bold, White |170| Table body text | Calibri | 20pt (10 half-pt) | Regular, Charcoal |171| Callout quotes | Georgia | 24pt (12 half-pt) | Italic, Coral |172| Caption/muted text | Calibri | 16-18pt | Regular, Gray |173174Note: docx-js uses half-points (size: 22 = 11pt). The sizes above are in half-points.175176#### Page Setup177178- US Letter: 12240 x 15840 DXA179- 1-inch margins all sides (1440 DXA)180- Content width: 9360 DXA181- Header: Company name (left) + document subtitle (right)182- Footer: "Confidential" (left) + page number (right)183- Footer has a top border line for separation184185#### Table Design186187- Full-width tables (9360 DXA)188- Always set both `columnWidths` on table AND `width` on each cell189- Always use `WidthType.DXA` (never percentage — breaks in Google Docs)190- Header row: Navy background, white bold text191- Body rows: alternating `F0F3F8` / no shading192- Cell margins: `{ top: 80, bottom: 80, left: 120, right: 120 }`193- Border: 1pt, color `D0D5DD`194- Use `ShadingType.CLEAR` (never SOLID)195196#### Special Components197198**Callout Box (for key quotes and warnings):**199- Left border: 12pt, Coral200- Other borders: 1pt, Coral201- Background: `FFF5F5`202- Text: Georgia, italic, Coral203204**Persona Card Header:**205- Two-cell table row206- Left cell: Navy background, persona name in Georgia bold white207- Right cell: Coral background, role badge ("ECONOMIC BUYER" / "CO-SPONSOR") in Calibri bold white, centered208209**Accent List Items (for disqualifiers):**210- Left border: 8pt, color varies (Red for hard, Amber for soft)211- Bottom border: 1pt light gray212- No top/right borders213- Left margin: 200 DXA for indent effect214215**Yes/No Signals (Quick Reference):**216- Two-column table217- Left cell: Green-tinted background (`F0F8F4`), green header218- Right cell: Red-tinted background (`FFF5F5`), red header219- Items as separate paragraphs (not bullets)220221#### Page Breaks222223Place page breaks:224- After the cover/title section + "One Thing to Remember"225- After Company Firmographics226- After Technographics227- Between persona pairs (after 2nd persona, before 3rd)228- After all personas229- After Trigger Events230- After Service Offerings231- After Qualification Checklist232- After When to Avoid section233234Principle: Each major section should start on a fresh page. Tables should not be split across page breaks if avoidable.235236## Edge Cases237238- **Single source only:** Skip the cross-reference phase, but flag any internal inconsistencies.239- **No uploaded files / conversation only:** Gather from conversation context and memory. Ask clarifying questions to fill gaps.240- **User wants text only, no .docx:** Stop after Phase 3 and skip Phase 4.241- **User wants to update an existing ICP:** Treat the existing document as Source A, new information as Source B, and run the full cross-reference phase.242- **Missing personas:** If the source material doesn't define named buyer personas, prompt the user: "I don't see defined buyer personas. Would you like me to infer them from the target roles mentioned, or should we define them together?"243- **Missing pricing/billing model:** Always ask — this is a common gap and a qualification signal.244245## Quality Checklist246247### Content Quality248249- [ ] Universal anxiety is present and compelling (not generic)250- [ ] Every persona has all required fields populated251- [ ] Persona acquisition channels are persona-SPECIFIC (not "referrals and LinkedIn" for everyone)252- [ ] Persona fears reflect actual consultant-hiring anxieties, not generic business fears253- [ ] Service tiers have pricing ranges where available254- [ ] Qualification checklist has exactly 5 questions with a clear threshold255- [ ] "When to avoid" covers hard, soft, AND pricing disqualifiers256- [ ] Quick Reference is scannable in 10 seconds257- [ ] No placeholder text remains ("[TBD]", "[MISSING]", etc.)258- [ ] Analytics maturity is explicitly stated259- [ ] Pricing model rejection is addressed if applicable260261### Format Quality262263- [ ] Visual QA on cover page — title renders correctly264- [ ] Visual QA on persona page — role badges display265- [ ] Visual QA on quick reference — Yes/No columns balanced266- [ ] Tables don't overflow page width267- [ ] Headers and footers on all pages268- [ ] Page breaks at logical boundaries269- [ ] No orphaned section headers (header at bottom of page, content on next)270271### Handoff Quality272273- [ ] Document is self-contained (BD team member can use it without any other context)274- [ ] Persona names are used consistently throughout275- [ ] "How we win" items are specific enough to execute276- [ ] Proof metrics are measurable (not vague)277- [ ] Yes/No signals are concrete enough to check against a LinkedIn profile or company page278279## Anti-Patterns to Avoid280281- **Generic personas.** "VP of Marketing wants better ROI" is useless. Specific: "[Persona] fears conflicting metrics and hires us as a last-mile pinch-hitter."282- **Uniform acquisition channels.** If every persona's channel is "referrals and LinkedIn", you haven't extracted enough. Push for specifics.283- **Missing emotional layer.** Logical triggers (tooling, implementation) are necessary but insufficient. BD needs to know what opens the door emotionally.284- **Academic tone.** "The consideration phase may benefit from..." — nobody reads this. Write: "[Persona] won't buy until she sees social proof from clients who look like her."285- **Undifferentiated services.** If door openers and strategic offerings blur together, the BD team won't know where to start. Enforce the timeline/budget separation.286- **Weak disqualifiers.** "Not a great fit" is weak. "Business system re-engineering — becomes a 'solving for the unknown' trap" gives the BD team a reason they can articulate.287288## Dependencies289290- `docx` npm package (`npm install docx`)291- LibreOffice + Poppler (for PDF conversion and visual QA — optional)