/octave:brief - Account Dossier & Call Prep Builder
Build beautiful, self-contained HTML account briefs powered by your Octave GTM intelligence. Designed to sit on your second monitor during a call or to review before a meeting. Unlike plain-text research, briefs render as scannable, styled reference documents with sticky navigation, collapsible sections, and print-friendly layout — grounded in real enrichment data, playbook strategy, proof points, and conversation intel.
This is an internal document for the sales team, not customer-facing collateral.
Key differentiators:
- vs
/octave:research — research outputs plain text; brief renders it as a styled, scannable HTML document
- vs
/octave:one-pager — one-pager is customer-facing; brief is internal prep
- vs
/octave:deck — deck is a slide presentation; brief is a scrollable reference document
Usage
/octave:brief <target> [--for <occasion>] [--style <preset>]
Examples
/octave:brief acme.com # Full account dossier
/octave:brief jane@acme.com --for discovery # Discovery call prep
/octave:brief acme.com --for demo # Demo prep brief
/octave:brief acme.com --for qbr # QBR prep brief
/octave:brief jane@acme.com --for follow-up # Follow-up with prior call context
/octave:brief acme.com --for executive # Executive meeting prep
/octave:brief "meeting with VP Sales at Acme" # Context-based brief
/octave:brief acme.com --style paper-minimal # Specific style preset
Occasions
| Occasion |
Output Focus |
discovery |
Company snapshot, ICP fit, discovery questions, playbook strategy, qualification checklist |
demo |
Stakeholder cards, value props, proof points, competitive landmines, demo flow |
follow-up |
Recent signals from calls, deal timeline, open items, next steps |
qbr |
Deal timeline, recent signals, proof points, value delivered, renewal/expansion angles |
executive |
Concise company snapshot, key stakeholders, strategic value props, board-level talking points |
deal-review |
Full pipeline context, stage history, competitive landscape, risk assessment |
general |
Comprehensive account dossier with all sections (default) |
Instructions
When the user runs /octave:brief:
Step 1: Understand the Context
Identify the target:
- Email address -> Person-targeted brief (enrich person + company)
- Domain -> Company-targeted brief (enrich company + find key contacts)
- LinkedIn URL -> Person-targeted brief
- Meeting description -> Extract company/people from context
Detect or ask occasion:
If --for not specified, infer from context or ask:
What are you preparing for?
1. Discovery call — First conversation, qualifying the opportunity
2. Demo — Showing the product, proving value
3. Follow-up — Continuing a conversation, advancing the deal
4. QBR — Quarterly business review with existing customer
5. Executive meeting — High-level strategic conversation
6. Deal review — Internal review of opportunity status
7. General dossier — Comprehensive account reference
Your choice:
Each occasion changes which sections are emphasized and which are de-emphasized or omitted. See the section emphasis table in Step 4.
Step 2: Octave Context Gathering
Based on the target and occasion, use Octave MCP tools to build a complete intelligence picture. Tell the user what you're researching and why.
Call as many tools as needed to build a thorough brief. The best briefs layer multiple sources — company enrichment + person enrichment + playbook messaging + proof points + conversation intel all combine to create a document grounded in real data. Don't stop at one tool when several would give you a stronger brief.
Not every tool applies to every brief. Use your judgment about which are relevant to this specific situation. The tables below show what's available — pick the combination that gives you the richest context for the occasion and target.
List vs Search — when to use which:
| Tool |
Purpose |
Use when... |
list_all_entities({ entityType }) |
Fetch all entities of a type (minimal fields) |
You want a quick inventory — "show me all our competitors" |
list_entities({ entityType }) |
Fetch entities with full data (paginated) |
You need the actual content — "get full proof point details" |
get_entity({ oId }) |
Deep dive on one specific entity |
You found something relevant and need the complete picture |
search_knowledge_base({ query }) |
Semantic search across library + resources |
You have a concept or question — "how do we position for healthcare?" |
list_resources() / search_resources({ query }) |
Uploaded docs, URLs, Google Drive files |
You need reference material, uploaded assets, or source docs |
Rule of thumb: Use list_* when you know what type of thing you want. Use search_* when you know what topic you're looking for.
Follow-up briefs — ground them in what actually happened:
If this brief follows a previous interaction with the account (follow-up, QBR, deal review), pull findings and events to anchor the brief in real data rather than generic positioning:
list_findings({ query: "<company or contact>", startDate: "<relevant period>" }) — surfaces what was actually said in calls: objections raised, features requested, pain points confirmed, competitor mentions
list_events({ filters: { accounts: ["<account_oId>"] } }) — deal stage changes, meetings held, emails sent — shows the journey so far
get_event_detail({ eventOId }) — deep dive on specific events (e.g., the discovery call, the demo) to pull exact context
This turns a generic "here's what we know" brief into "here's what happened and what to do about it" — much more useful walking into the next conversation.
For Person-Targeted Briefs
Start with person and company enrichment, then pull positioning context:
| What you need |
Tool |
When to use |
| Person deep-dive |
enrich_person({ person: { email, firstName, lastName, companyDomain } }) |
Always for person-targeted briefs — gives background, role, priorities |
| Company profile |
enrich_company({ companyDomain }) |
Always — gives industry, size, tech stack, signals |
| ICP fit (person) |
qualify_person({ person: { ... } }) |
When you need persona match and fit assessment |
| ICP fit (company) |
qualify_company({ companyDomain }) |
When you need segment match and ICP scoring |
| Additional contacts |
find_person({ searchMode: "people", companyDomain, fuzzyTitles }) |
When you want to map the broader buying committee |
| Matching playbook |
get_playbook({ oId, includeValueProps: true }) |
After identifying relevant playbook — full strategy + value props |
| Playbook search |
search_knowledge_base({ query: "<industry> <persona>", entityTypes: ["playbook"] }) |
When you need the best-fit playbook by concept |
| Proof points |
list_entities({ entityType: "proof_point" }) |
Fetch all proof points with full data — metrics, quotes, logos |
| References |
list_entities({ entityType: "reference" }) |
Customer references with full details |
| Competitive context |
search_knowledge_base({ query: "<signals>", entityTypes: ["competitor"] }) |
When competitor is mentioned or likely in the deal |
| Recent intel |
list_findings({ query: "<company or person>", startDate: "<90 days ago>" }) |
Conversation-based insights from past interactions |
| Deal history |
list_events({ filters: { accounts: ["<account_oId>"] } }) |
Timeline of deal events |
| Synthesized prep |
generate_call_prep({ companyDomain }) |
Quick comprehensive brief to use as a starting point |
For Company-Targeted Briefs
Start with company enrichment and contact discovery:
| What you need |
Tool |
When to use |
| Company profile |
enrich_company({ companyDomain }) |
Always — gives industry, size, tech stack, funding, signals |
| ICP fit scoring |
qualify_company({ companyDomain }) |
Always — segment match, fit score, fit reasons |
| Key contacts |
find_person({ searchMode: "people", companyDomain, fuzzyTitles }) |
Find stakeholders to populate the Stakeholders section |
| Enrich contacts |
enrich_person({ person: { ... } }) |
Deep dive on each key contact found |
| All playbooks |
list_all_entities({ entityType: "playbook" }) |
Quick scan to find the right strategic approach |
| Playbook details |
get_playbook({ oId, includeValueProps: true }) |
Full content + value props for the matching playbook |
| Value props |
list_value_props({ playbookOId }) |
Fetch value props for the recommended playbook |
| All competitors |
list_all_entities({ entityType: "competitor" }) |
Quick scan of competitive landscape |
| Competitor details |
get_entity({ oId }) |
Deep dive on a specific relevant competitor |
| Proof points |
list_entities({ entityType: "proof_point" }) |
Full proof points for the evidence section |
| References |
list_entities({ entityType: "reference" }) |
Customer references for social proof |
| Topic search |
search_knowledge_base({ query: "<industry> <use case>", entityTypes: ["proof_point", "reference"] }) |
Find proof points relevant to their specific situation |
| Recent intel |
list_findings({ query: "<company>", startDate: "<90 days ago>" }) |
Conversation signals from calls and meetings |
| Deal events |
list_events({ filters: { accounts: ["<account_oId>"] } }) |
Full deal history and timeline |
| Event details |
get_event_detail({ eventOId }) |
Deep dive on specific past interactions |
| Uploaded resources |
search_resources({ query: "<company or industry>" }) |
Relevant uploaded docs and assets |
Output of this step: Present a content outline to the user for approval before generating:
BRIEF OUTLINE: [Company/Person] — [Occasion]
=============================================
Target: [Company name / Person name at Company]
Occasion: [Discovery / Demo / Follow-up / QBR / Executive / General]
Style: [Will be selected in Step 3]
---
SECTIONS TO INCLUDE
-------------------
1. Header — "Account Brief: [Company]" + date + occasion badge
2. Company Snapshot — industry, size, HQ, funding, tech stack, signals
3. ICP Fit — fit score, matched segment, key fit reasons
4. Key Stakeholders — [N] contacts with persona matches
5. Recommended Playbook — [Playbook name], strategic angle
6. Talking Points — [occasion-specific: questions / demo flow / next steps]
7. Value Props — [N] value props tailored to this account
8. Competitive Landscape — [Competitor names if detected]
9. Proof Points — [N] relevant case studies and metrics
10. Recent Signals — [N] findings from conversations
11. Deal Timeline — [if existing deal]
12. Quick Reference — cheat sheet with key facts
Octave Sources Used:
• Company enrichment: [Company] — [key insights]
• Person enrichment: [Person] — [persona match]
• Playbook: [Playbook name] — [strategic angle]
• Proof points: [N] references pulled
• Findings: [N] recent signals
• Competitive: [If applicable]
---
Does this look good? I can:
1. Proceed to style selection and generation
2. Add or remove sections
3. Go deeper on any area
4. Change the occasion / emphasis
Wait for user approval before proceeding.
Step 3: Style Selection
The brief uses the same CSS variable / style preset system as /octave:deck. Full preset definitions are in the deck skill's STYLE_PRESETS.md.
Briefs default to readability-optimized presets. If --style was not provided, ask:
Pick a style for your brief:
1. midnight-pro — Dark navy, white text, blue accents (default for briefs)
2. paper-minimal — Off-white, black type, editorial simplicity
3. executive-dark — Charcoal + gold, premium boardroom aesthetic
4. soft-light — Warm white + sage green, calm and approachable
5. swiss-modern — White + red accent, Bauhaus minimal
6. Use my brand — Extract from website or provide colors
7. Match my deck — Use the same style as an existing /octave:deck
Your choice (or press Enter for midnight-pro):
| Occasion |
Recommended Default |
| Discovery |
midnight-pro |
| Demo |
midnight-pro |
| Follow-up |
paper-minimal |
| QBR |
executive-dark |
| Executive |
executive-dark |
| Deal review |
paper-minimal |
| General |
midnight-pro |
If the user selects "Use my brand," follow the brand discovery flow from the deck skill (website extraction via browser-use or WebFetch, manual fallback). If they select "Match my deck," ask for the deck file path and extract its CSS variables.
Step 4: Generate HTML
Build a single self-contained HTML file. The brief is a scrollable reference document — not a slide deck. Natural page scroll, sticky sidebar navigation, collapsible sections, and a print-friendly layout.
Output Directory
.octave-briefs/
└── <kebab-case-name>-<YYYY-MM-DD>/
└── <name>.html
Example: /octave:brief acme.com --for discovery -> .octave-briefs/acme-discovery-2026-02-11/acme-discovery.html
The .octave-briefs/ directory should be in .gitignore.
Document Sections (Full Dossier)
Not all sections appear in every brief. The occasion determines emphasis:
| Occasion |
Emphasized Sections |
De-emphasized / Omitted |
| Discovery |
Company Snapshot, ICP Fit, Talking Points (questions), Playbook, Qualification |
Deal Timeline, Competitive |
| Demo |
Stakeholders, Value Props, Proof Points, Competitive, Demo Flow |
ICP Fit detail |
| Follow-up |
Recent Signals, Deal Timeline, Talking Points (next steps), Open Items |
Company Snapshot (condensed) |
| QBR |
Deal Timeline, Recent Signals, Proof Points, Value Delivered |
ICP Fit, Playbook |
| Executive |
Company Snapshot (concise), Key Stakeholders, Value Props, Strategic Angles |
Technical details, granular signals |
| Deal Review |
Deal Timeline, Competitive, Risk Assessment, Stakeholder Map, Next Steps |
Company Snapshot (condensed) |
| General |
All sections at equal weight |
None |
Section definitions:
- Header — "Account Brief: [Company]" + generation date + occasion badge (pill label like "Discovery Prep" or "QBR Brief")
- Company Snapshot — Company name, logo (if available), industry, employee count, HQ location, funding stage, tech stack highlights, recent news/signals. Card-based layout.
- ICP Fit — Fit score with a visual progress bar, matched segment name, 3-5 key fit reasons as checkmarks, any red flags as warnings.
- Key Stakeholders — Cards for each person: name, title, LinkedIn URL, matched persona, inferred priorities, communication style notes. Highlight the primary contact.
- Recommended Playbook — Playbook name, strategic angle, key themes to drive. Brief summary of the recommended approach.
- Talking Points — Occasion-specific content:
- Discovery: open-ended questions organized by category (rapport, pain exploration, qualification, future state)
- Demo: recommended flow, features to highlight, proof points to weave in
- Follow-up: recap of what was discussed, open items, proposed next steps
- QBR: value delivered, metrics to highlight, expansion opportunities
- Executive: strategic themes, board-level talking points, concise value narrative
- Value Props to Lead With — 3-4 value props tailored to this account, each with a headline, supporting evidence, and a "say this" phrasing.
- Competitive Landscape — If competitors detected: comparison table with key differentiators, landmine questions to ask, traps to avoid. Omit if no competitive signals.
- Proof Points to Reference — Relevant case studies with metric highlights, customer quotes, and logo. Organized by relevance to this account's industry/size/use case.
- Recent Signals — From findings: what was said in calls, objections raised, features requested, sentiment indicators. Each signal has a date and source. Omit if no findings data.
- Deal Timeline — If existing deal: visual stage history (horizontal timeline or vertical step list), key events, current stage, days in stage, next milestone. Omit for new prospects.
- Quick Reference — Sticky sidebar or footer cheat sheet: key facts at a glance, do's and don'ts for this conversation, one-line reminders. Always visible while scrolling.
HTML Architecture
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Account Brief: [Company] — [Occasion]</title>
<!-- Google Fonts (preconnect + stylesheet) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=[fonts]&display=swap" rel="stylesheet">
<style>
/* === CSS Variables (from chosen preset) === */
:root { ... }
/* === Reset & Base === */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
background: var(--bg);
color: var(--text-primary);
font-family: var(--font-body);
line-height: 1.6;
}
/* === Layout === */
.brief-container {
max-width: 900px;
margin: 0 auto;
padding: 2rem clamp(1rem, 4vw, 3rem);
}
/* === Sidebar Navigation (sticky) === */
.brief-nav {
position: fixed;
top: 50%;
right: clamp(0.5rem, 2vw, 2rem);
transform: translateY(-50%);
display: flex;
flex-direction: column;
gap: 0.5rem;
z-index: 100;
}
.brief-nav a {
display: block;
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--text-muted);
transition: all 0.3s ease;
}
.brief-nav a.active {
background: var(--brand-primary);
transform: scale(1.4);
}
/* === Section Styles === */
.brief-section {
margin-bottom: 2.5rem;
padding-bottom: 2rem;
border-bottom: 1px solid var(--border);
}
/* === Collapsible Sections (details/summary) === */
details.brief-section {
border-bottom: 1px solid var(--border);
margin-bottom: 2.5rem;
padding-bottom: 1rem;
}
details.brief-section summary {
cursor: pointer;
font-family: var(--font-display);
font-size: clamp(1.1rem, 2vw, 1.4rem);
font-weight: 600;
color: var(--text-primary);
padding: 0.75rem 0;
list-style: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
details.brief-section summary::before {
content: "\25B6";
font-size: 0.7em;
color: var(--brand-primary);
transition: transform 0.2s ease;
}
details.brief-section[open] summary::before {
transform: rotate(90deg);
}
/* === Cards === */
.card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: clamp(1rem, 2vw, 1.5rem);
}
.card:hover {
background: var(--bg-card-hover);
}
/* === Stakeholder Cards === */
.stakeholder-card {
display: flex;
gap: 1rem;
align-items: flex-start;
}
.stakeholder-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
background: var(--brand-primary);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 700;
flex-shrink: 0;
}
/* === Fit Score Bar === */
.fit-bar {
height: 8px;
border-radius: 4px;
background: var(--bg-elevated);
overflow: hidden;
margin: 0.5rem 0;
}
.fit-bar-fill {
height: 100%;
border-radius: 4px;
background: var(--success);
transition: width 0.8s ease;
}
/* === Occasion Badge === */
.occasion-badge {
display: inline-block;
padding: 0.25rem 0.75rem;
border-radius: var(--radius-pill);
background: var(--brand-primary);
color: white;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* === Timeline === */
.timeline {
position: relative;
padding-left: 2rem;
}
.timeline::before {
content: "";
position: absolute;
left: 0.5rem;
top: 0;
bottom: 0;
width: 2px;
background: var(--border-strong);
}
.timeline-event {
position: relative;
margin-bottom: 1.5rem;
padding-left: 1rem;
}
.timeline-event::before {
content: "";
position: absolute;
left: -1.75rem;
top: 0.5rem;
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--brand-primary);
}
/* === Grid Utilities === */
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(0.75rem, 1.5vw, 1.25rem); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(0.75rem, 1.5vw, 1.25rem); }
/* === Typography === */
.section-title {
font-family: var(--font-display);
font-size: clamp(1.1rem, 2vw, 1.4rem);
font-weight: 600;
margin-bottom: 1rem;
}
.body-text { font-size: clamp(0.85rem, 1.2vw, 1rem); }
.text-secondary { color: var(--text-secondary); }
.text-muted { color: var(--text-muted); }
/* === Quick Reference Sidebar === */
@media (min-width: 1200px) {
.brief-layout {
display: grid;
grid-template-columns: 1fr 280px;
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
}
.quick-ref {
position: sticky;
top: 2rem;
align-self: start;
max-height: calc(100vh - 4rem);
overflow-y: auto;
}
}
@media (max-width: 1199px) {
.quick-ref {
margin-top: 2rem;
border-top: 2px solid var(--border-strong);
padding-top: 2rem;
}
}
/* === Print Styles === */
@media print {
.brief-nav { display: none; }
.brief-container { max-width: 100%; padding: 1rem; }
details.brief-section { open; }
details.brief-section[open] { break-inside: avoid; }
.card { break-inside: avoid; }
body { color: #111; background: white; }
.occasion-badge { border: 1px solid #111; background: transparent; color: #111; }
}
/* === Responsive === */
@media (max-width: 768px) {
.grid-2, .grid-3 { grid-template-columns: 1fr; }
.brief-nav { display: none; }
}
/* === prefers-reduced-motion === */
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; animation: none !important; }
}
</style>
</head>
<body>
<!-- Sidebar Navigation Dots -->
<nav class="brief-nav" id="brief-nav">
<!-- Generated by JS: one dot per section -->
</nav>
<!-- Main Brief -->
<div class="brief-layout">
<main class="brief-container">
<!-- Header -->
<header class="brief-header">
<span class="occasion-badge">[Occasion] Prep</span>
<h1>[Account Brief: Company Name]</h1>
<p class="text-secondary">[Generated date] · [Target person if applicable]</p>
</header>
<!-- Sections (use <details> for collapsible, <section> for always-open) -->
<details class="brief-section" open id="company-snapshot">
<summary>Company Snapshot</summary>
<div class="grid-2">
<!-- Company info cards -->
</div>
</details>
<details class="brief-section" open id="icp-fit">
<summary>ICP Fit</summary>
<!-- Fit score bar, segment match, fit reasons -->
</details>
<!-- Continue for each section... -->
</main>
<!-- Quick Reference Sidebar -->
<aside class="quick-ref">
<h3>Quick Reference</h3>
<!-- Key facts, do's/don'ts, one-line reminders -->
</aside>
</div>
<script>
// Generate nav dots from sections
// Intersection Observer for active section tracking
// Smooth scroll on nav dot click
// Open all details on print (window.onbeforeprint)
</script>
</body>
</html>
Self-contained: Inline CSS, zero external dependencies (except Google Fonts). No JavaScript frameworks.
Key differences from deck HTML:
- No scroll-snap (natural page scrolling)
- No slide containers (continuous document flow)
- Collapsible sections via
<details>/<summary> for quick scanning
- Sticky sidebar navigation instead of slide nav dots
- Optional sidebar for quick reference (on wide screens)
- Max-width 900px for comfortable reading
- Print-friendly with
@media print
Content Density Guidelines
Briefs are reference documents, not presentations — they can hold more content per section than slides. But keep it scannable:
| Section |
Content Limit |
| Company Snapshot |
6-8 data fields in cards, 3-5 recent signals |
| ICP Fit |
Score bar + 5 fit reasons max |
| Key Stakeholders |
4-6 stakeholder cards max |
| Talking Points |
8-12 talking points grouped by category |
| Value Props |
3-4 value props with evidence |
| Competitive |
Comparison table with 4-6 rows max |
| Proof Points |
3-5 proof point cards |
| Recent Signals |
5-8 most relevant findings |
| Deal Timeline |
6-10 timeline events |
| Quick Reference |
8-12 key facts / reminders |
If a section would exceed its limit, prioritize by relevance to the occasion and trim the rest.
Step 5: Delivery
After generating the HTML file:
- Open the brief in the default browser
- Present a summary:
BRIEF READY
============
Folder: .octave-briefs/<brief-name>-<date>/
File: .octave-briefs/<brief-name>-<date>/<brief-name>.html
Style: [Preset name or "Custom Brand"]
Sections: [List of included sections]
Navigation:
- Scroll naturally to read through sections
- Click nav dots on the right edge to jump to sections
- Click section headers to collapse/expand
- Print-friendly: Cmd+P / Ctrl+P for clean PDF output
---
Want me to:
1. Adjust or expand a section
2. Add/remove stakeholders
3. Go deeper on any topic (competitive, signals, value props)
4. Change the style
5. Export as PDF (print dialog)
6. Generate a customer-facing one-pager from this (/octave:one-pager)
7. Build a presentation from this (/octave:deck)
8. Done
MCP Tools Used
Research & Enrichment
enrich_company — Full company intelligence profile
enrich_person — Full person intelligence report
find_person — Find contacts at a company by title/role
find_company — Find companies matching criteria
qualify_company — ICP fit scoring for a company
qualify_person — ICP fit scoring for a person
Library — Fetching Entities
list_all_entities — Quick scan of all entities of a type (minimal fields, no pagination)
list_entities — Fetch entities with full data and pagination (proof points, references, etc.)
get_entity — Deep dive on one specific entity
get_playbook — Retrieve a playbook with full content and value props
list_value_props — Value propositions for a specific playbook
Library — Searching
search_knowledge_base — Semantic search across library entities and resources
list_resources — Browse uploaded docs, URLs, and Google Drive files
search_resources — Semantic search across uploaded resources
Intelligence & Signals
list_findings — Recent conversation findings and insights
list_events — Deal events (stage changes, meetings, outcomes)
get_event_detail — Full details for a specific event
Content Generation
generate_call_prep — Synthesized prep brief (useful as a starting point)
generate_content — Generate positioning or messaging content
Error Handling
Octave Connection Failed:
Could not connect to your Octave workspace.
The brief builder needs Octave data to generate useful content. Without it, most sections would be empty.
To reconnect: check your MCP configuration or run /octave:workspace status
Company Not Found:
I couldn't find detailed intelligence for [domain].
Options:
- Check the domain spelling and try again
- Try a different domain or company name
- Provide company details manually and I'll structure the brief
Person Not Found:
I couldn't find detailed information for [email/name].
I found their company ([Company]). Would you like me to:
- Proceed with company research + generic persona guidance
- Search for them on LinkedIn (provide URL)
- Create a brief based on their title and company alone
No Matching Playbook:
No playbook matches this audience profile directly.
I'll use your general value props and positioning from the knowledge base. Consider creating a playbook for this segment: /octave:library create playbook
No Findings Data:
No conversation signals found for [company/person].
This may be a new prospect with no prior interactions. I'll skip the Recent Signals and Deal Timeline sections and focus on enrichment data, playbook strategy, and proof points instead.
No Proof Points:
No proof points found in your library.
The Proof Points section will be omitted. To strengthen future briefs, add case studies and customer references to your Octave library.
Related Skills
/octave:research — Text-based research and prep (brief is the visual, rendered version)
/octave:one-pager — Customer-facing leave-behind document (brief is internal)
/octave:deck — Full slide presentation (brief is a reference document)
/octave:battlecard-doc — Competitive reference document (brief includes competitive context but is broader)
/octave:pipeline — Deal-level coaching and pipeline strategy
/octave:generate — Generate outreach content with brand voice control
/octave:insights — Conversation intelligence deep dives
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: brief3description: Account dossier and call prep document rendered as a scannable HTML reference page for internal use. Use when user says "brief me on [company]", "account dossier", "call prep doc", "background on [person]", or asks for an internal reference document. Do NOT use for customer-facing documents — use /octave:one-pager or /octave:proposal instead. Use when this capability is needed.4---56# /octave:brief - Account Dossier & Call Prep Builder78Build beautiful, self-contained HTML account briefs powered by your Octave GTM intelligence. Designed to sit on your second monitor during a call or to review before a meeting. Unlike plain-text research, briefs render as scannable, styled reference documents with sticky navigation, collapsible sections, and print-friendly layout — grounded in real enrichment data, playbook strategy, proof points, and conversation intel.910This is an **internal** document for the sales team, not customer-facing collateral.1112**Key differentiators:**13- vs `/octave:research` — research outputs plain text; brief renders it as a styled, scannable HTML document14- vs `/octave:one-pager` — one-pager is customer-facing; brief is internal prep15- vs `/octave:deck` — deck is a slide presentation; brief is a scrollable reference document1617## Usage1819```20/octave:brief <target> [--for <occasion>] [--style <preset>]21```2223## Examples2425```26/octave:brief acme.com # Full account dossier27/octave:brief jane@acme.com --for discovery # Discovery call prep28/octave:brief acme.com --for demo # Demo prep brief29/octave:brief acme.com --for qbr # QBR prep brief30/octave:brief jane@acme.com --for follow-up # Follow-up with prior call context31/octave:brief acme.com --for executive # Executive meeting prep32/octave:brief "meeting with VP Sales at Acme" # Context-based brief33/octave:brief acme.com --style paper-minimal # Specific style preset34```3536## Occasions3738| Occasion | Output Focus |39|----------|--------------|40| `discovery` | Company snapshot, ICP fit, discovery questions, playbook strategy, qualification checklist |41| `demo` | Stakeholder cards, value props, proof points, competitive landmines, demo flow |42| `follow-up` | Recent signals from calls, deal timeline, open items, next steps |43| `qbr` | Deal timeline, recent signals, proof points, value delivered, renewal/expansion angles |44| `executive` | Concise company snapshot, key stakeholders, strategic value props, board-level talking points |45| `deal-review` | Full pipeline context, stage history, competitive landscape, risk assessment |46| `general` | Comprehensive account dossier with all sections (default) |4748## Instructions4950When the user runs `/octave:brief`:5152### Step 1: Understand the Context5354**Identify the target:**55- Email address -> Person-targeted brief (enrich person + company)56- Domain -> Company-targeted brief (enrich company + find key contacts)57- LinkedIn URL -> Person-targeted brief58- Meeting description -> Extract company/people from context5960**Detect or ask occasion:**6162If `--for` not specified, infer from context or ask:6364```65What are you preparing for?66671. Discovery call — First conversation, qualifying the opportunity682. Demo — Showing the product, proving value693. Follow-up — Continuing a conversation, advancing the deal704. QBR — Quarterly business review with existing customer715. Executive meeting — High-level strategic conversation726. Deal review — Internal review of opportunity status737. General dossier — Comprehensive account reference7475Your choice:76```7778Each occasion changes which sections are emphasized and which are de-emphasized or omitted. See the section emphasis table in Step 4.7980### Step 2: Octave Context Gathering8182Based on the target and occasion, use Octave MCP tools to build a complete intelligence picture. **Tell the user what you're researching and why.**8384**Call as many tools as needed to build a thorough brief.** The best briefs layer multiple sources — company enrichment + person enrichment + playbook messaging + proof points + conversation intel all combine to create a document grounded in real data. Don't stop at one tool when several would give you a stronger brief.8586Not every tool applies to every brief. Use your judgment about which are relevant to *this specific* situation. The tables below show what's available — pick the combination that gives you the richest context for the occasion and target.8788**List vs Search — when to use which:**8990| Tool | Purpose | Use when... |91|------|---------|-------------|92| `list_all_entities({ entityType })` | Fetch all entities of a type (minimal fields) | You want a quick inventory — "show me all our competitors" |93| `list_entities({ entityType })` | Fetch entities with full data (paginated) | You need the actual content — "get full proof point details" |94| `get_entity({ oId })` | Deep dive on one specific entity | You found something relevant and need the complete picture |95| `search_knowledge_base({ query })` | Semantic search across library + resources | You have a concept or question — "how do we position for healthcare?" |96| `list_resources()` / `search_resources({ query })` | Uploaded docs, URLs, Google Drive files | You need reference material, uploaded assets, or source docs |9798**Rule of thumb:** Use `list_*` when you know *what type* of thing you want. Use `search_*` when you know *what topic* you're looking for.99100**Follow-up briefs — ground them in what actually happened:**101102If this brief follows a previous interaction with the account (follow-up, QBR, deal review), pull findings and events to anchor the brief in real data rather than generic positioning:103104- `list_findings({ query: "<company or contact>", startDate: "<relevant period>" })` — surfaces what was actually said in calls: objections raised, features requested, pain points confirmed, competitor mentions105- `list_events({ filters: { accounts: ["<account_oId>"] } })` — deal stage changes, meetings held, emails sent — shows the journey so far106- `get_event_detail({ eventOId })` — deep dive on specific events (e.g., the discovery call, the demo) to pull exact context107108This turns a generic "here's what we know" brief into "here's what happened and what to do about it" — much more useful walking into the next conversation.109110---111112#### For Person-Targeted Briefs113114Start with person and company enrichment, then pull positioning context:115116| What you need | Tool | When to use |117|---------------|------|-------------|118| Person deep-dive | `enrich_person({ person: { email, firstName, lastName, companyDomain } })` | Always for person-targeted briefs — gives background, role, priorities |119| Company profile | `enrich_company({ companyDomain })` | Always — gives industry, size, tech stack, signals |120| ICP fit (person) | `qualify_person({ person: { ... } })` | When you need persona match and fit assessment |121| ICP fit (company) | `qualify_company({ companyDomain })` | When you need segment match and ICP scoring |122| Additional contacts | `find_person({ searchMode: "people", companyDomain, fuzzyTitles })` | When you want to map the broader buying committee |123| Matching playbook | `get_playbook({ oId, includeValueProps: true })` | After identifying relevant playbook — full strategy + value props |124| Playbook search | `search_knowledge_base({ query: "<industry> <persona>", entityTypes: ["playbook"] })` | When you need the best-fit playbook by concept |125| Proof points | `list_entities({ entityType: "proof_point" })` | Fetch all proof points with full data — metrics, quotes, logos |126| References | `list_entities({ entityType: "reference" })` | Customer references with full details |127| Competitive context | `search_knowledge_base({ query: "<signals>", entityTypes: ["competitor"] })` | When competitor is mentioned or likely in the deal |128| Recent intel | `list_findings({ query: "<company or person>", startDate: "<90 days ago>" })` | Conversation-based insights from past interactions |129| Deal history | `list_events({ filters: { accounts: ["<account_oId>"] } })` | Timeline of deal events |130| Synthesized prep | `generate_call_prep({ companyDomain })` | Quick comprehensive brief to use as a starting point |131132---133134#### For Company-Targeted Briefs135136Start with company enrichment and contact discovery:137138| What you need | Tool | When to use |139|---------------|------|-------------|140| Company profile | `enrich_company({ companyDomain })` | Always — gives industry, size, tech stack, funding, signals |141| ICP fit scoring | `qualify_company({ companyDomain })` | Always — segment match, fit score, fit reasons |142| Key contacts | `find_person({ searchMode: "people", companyDomain, fuzzyTitles })` | Find stakeholders to populate the Stakeholders section |143| Enrich contacts | `enrich_person({ person: { ... } })` | Deep dive on each key contact found |144| All playbooks | `list_all_entities({ entityType: "playbook" })` | Quick scan to find the right strategic approach |145| Playbook details | `get_playbook({ oId, includeValueProps: true })` | Full content + value props for the matching playbook |146| Value props | `list_value_props({ playbookOId })` | Fetch value props for the recommended playbook |147| All competitors | `list_all_entities({ entityType: "competitor" })` | Quick scan of competitive landscape |148| Competitor details | `get_entity({ oId })` | Deep dive on a specific relevant competitor |149| Proof points | `list_entities({ entityType: "proof_point" })` | Full proof points for the evidence section |150| References | `list_entities({ entityType: "reference" })` | Customer references for social proof |151| Topic search | `search_knowledge_base({ query: "<industry> <use case>", entityTypes: ["proof_point", "reference"] })` | Find proof points relevant to their specific situation |152| Recent intel | `list_findings({ query: "<company>", startDate: "<90 days ago>" })` | Conversation signals from calls and meetings |153| Deal events | `list_events({ filters: { accounts: ["<account_oId>"] } })` | Full deal history and timeline |154| Event details | `get_event_detail({ eventOId })` | Deep dive on specific past interactions |155| Uploaded resources | `search_resources({ query: "<company or industry>" })` | Relevant uploaded docs and assets |156157---158159**Output of this step:** Present a content outline to the user for approval before generating:160161```162BRIEF OUTLINE: [Company/Person] — [Occasion]163=============================================164165Target: [Company name / Person name at Company]166Occasion: [Discovery / Demo / Follow-up / QBR / Executive / General]167Style: [Will be selected in Step 3]168169---170171SECTIONS TO INCLUDE172-------------------1731741. Header — "Account Brief: [Company]" + date + occasion badge1752. Company Snapshot — industry, size, HQ, funding, tech stack, signals1763. ICP Fit — fit score, matched segment, key fit reasons1774. Key Stakeholders — [N] contacts with persona matches1785. Recommended Playbook — [Playbook name], strategic angle1796. Talking Points — [occasion-specific: questions / demo flow / next steps]1807. Value Props — [N] value props tailored to this account1818. Competitive Landscape — [Competitor names if detected]1829. Proof Points — [N] relevant case studies and metrics18310. Recent Signals — [N] findings from conversations18411. Deal Timeline — [if existing deal]18512. Quick Reference — cheat sheet with key facts186187Octave Sources Used:188• Company enrichment: [Company] — [key insights]189• Person enrichment: [Person] — [persona match]190• Playbook: [Playbook name] — [strategic angle]191• Proof points: [N] references pulled192• Findings: [N] recent signals193• Competitive: [If applicable]194195---196197Does this look good? I can:1981. Proceed to style selection and generation1992. Add or remove sections2003. Go deeper on any area2014. Change the occasion / emphasis202```203204**Wait for user approval before proceeding.**205206### Step 3: Style Selection207208The brief uses the same CSS variable / style preset system as `/octave:deck`. Full preset definitions are in the deck skill's [STYLE_PRESETS.md](../deck/STYLE_PRESETS.md).209210Briefs default to readability-optimized presets. If `--style` was not provided, ask:211212```213Pick a style for your brief:2142151. midnight-pro — Dark navy, white text, blue accents (default for briefs)2162. paper-minimal — Off-white, black type, editorial simplicity2173. executive-dark — Charcoal + gold, premium boardroom aesthetic2184. soft-light — Warm white + sage green, calm and approachable2195. swiss-modern — White + red accent, Bauhaus minimal2206. Use my brand — Extract from website or provide colors2217. Match my deck — Use the same style as an existing /octave:deck222223Your choice (or press Enter for midnight-pro):224```225226| Occasion | Recommended Default |227|----------|-------------------|228| Discovery | `midnight-pro` |229| Demo | `midnight-pro` |230| Follow-up | `paper-minimal` |231| QBR | `executive-dark` |232| Executive | `executive-dark` |233| Deal review | `paper-minimal` |234| General | `midnight-pro` |235236If the user selects "Use my brand," follow the brand discovery flow from the deck skill (website extraction via browser-use or WebFetch, manual fallback). If they select "Match my deck," ask for the deck file path and extract its CSS variables.237238### Step 4: Generate HTML239240Build a single self-contained HTML file. The brief is a scrollable reference document — not a slide deck. Natural page scroll, sticky sidebar navigation, collapsible sections, and a print-friendly layout.241242#### Output Directory243244```245.octave-briefs/246└── <kebab-case-name>-<YYYY-MM-DD>/247 └── <name>.html248```249250Example: `/octave:brief acme.com --for discovery` -> `.octave-briefs/acme-discovery-2026-02-11/acme-discovery.html`251252The `.octave-briefs/` directory should be in `.gitignore`.253254#### Document Sections (Full Dossier)255256Not all sections appear in every brief. The occasion determines emphasis:257258| Occasion | Emphasized Sections | De-emphasized / Omitted |259|----------|-------------------|-------------------------|260| Discovery | Company Snapshot, ICP Fit, Talking Points (questions), Playbook, Qualification | Deal Timeline, Competitive |261| Demo | Stakeholders, Value Props, Proof Points, Competitive, Demo Flow | ICP Fit detail |262| Follow-up | Recent Signals, Deal Timeline, Talking Points (next steps), Open Items | Company Snapshot (condensed) |263| QBR | Deal Timeline, Recent Signals, Proof Points, Value Delivered | ICP Fit, Playbook |264| Executive | Company Snapshot (concise), Key Stakeholders, Value Props, Strategic Angles | Technical details, granular signals |265| Deal Review | Deal Timeline, Competitive, Risk Assessment, Stakeholder Map, Next Steps | Company Snapshot (condensed) |266| General | All sections at equal weight | None |267268**Section definitions:**2692701. **Header** — "Account Brief: [Company]" + generation date + occasion badge (pill label like "Discovery Prep" or "QBR Brief")2712. **Company Snapshot** — Company name, logo (if available), industry, employee count, HQ location, funding stage, tech stack highlights, recent news/signals. Card-based layout.2723. **ICP Fit** — Fit score with a visual progress bar, matched segment name, 3-5 key fit reasons as checkmarks, any red flags as warnings.2734. **Key Stakeholders** — Cards for each person: name, title, LinkedIn URL, matched persona, inferred priorities, communication style notes. Highlight the primary contact.2745. **Recommended Playbook** — Playbook name, strategic angle, key themes to drive. Brief summary of the recommended approach.2756. **Talking Points** — Occasion-specific content:276 - Discovery: open-ended questions organized by category (rapport, pain exploration, qualification, future state)277 - Demo: recommended flow, features to highlight, proof points to weave in278 - Follow-up: recap of what was discussed, open items, proposed next steps279 - QBR: value delivered, metrics to highlight, expansion opportunities280 - Executive: strategic themes, board-level talking points, concise value narrative2817. **Value Props to Lead With** — 3-4 value props tailored to this account, each with a headline, supporting evidence, and a "say this" phrasing.2828. **Competitive Landscape** — If competitors detected: comparison table with key differentiators, landmine questions to ask, traps to avoid. Omit if no competitive signals.2839. **Proof Points to Reference** — Relevant case studies with metric highlights, customer quotes, and logo. Organized by relevance to this account's industry/size/use case.28410. **Recent Signals** — From findings: what was said in calls, objections raised, features requested, sentiment indicators. Each signal has a date and source. Omit if no findings data.28511. **Deal Timeline** — If existing deal: visual stage history (horizontal timeline or vertical step list), key events, current stage, days in stage, next milestone. Omit for new prospects.28612. **Quick Reference** — Sticky sidebar or footer cheat sheet: key facts at a glance, do's and don'ts for this conversation, one-line reminders. Always visible while scrolling.287288#### HTML Architecture289290```html291<!DOCTYPE html>292<html lang="en">293<head>294 <meta charset="UTF-8">295 <meta name="viewport" content="width=device-width, initial-scale=1.0">296 <title>Account Brief: [Company] — [Occasion]</title>297 <!-- Google Fonts (preconnect + stylesheet) -->298 <link rel="preconnect" href="https://fonts.googleapis.com">299 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>300 <link href="https://fonts.googleapis.com/css2?family=[fonts]&display=swap" rel="stylesheet">301 <style>302 /* === CSS Variables (from chosen preset) === */303 :root { ... }304305 /* === Reset & Base === */306 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }307 html { scroll-behavior: smooth; }308 body {309 background: var(--bg);310 color: var(--text-primary);311 font-family: var(--font-body);312 line-height: 1.6;313 }314315 /* === Layout === */316 .brief-container {317 max-width: 900px;318 margin: 0 auto;319 padding: 2rem clamp(1rem, 4vw, 3rem);320 }321322 /* === Sidebar Navigation (sticky) === */323 .brief-nav {324 position: fixed;325 top: 50%;326 right: clamp(0.5rem, 2vw, 2rem);327 transform: translateY(-50%);328 display: flex;329 flex-direction: column;330 gap: 0.5rem;331 z-index: 100;332 }333 .brief-nav a {334 display: block;335 width: 8px;336 height: 8px;337 border-radius: 50%;338 background: var(--text-muted);339 transition: all 0.3s ease;340 }341 .brief-nav a.active {342 background: var(--brand-primary);343 transform: scale(1.4);344 }345346 /* === Section Styles === */347 .brief-section {348 margin-bottom: 2.5rem;349 padding-bottom: 2rem;350 border-bottom: 1px solid var(--border);351 }352353 /* === Collapsible Sections (details/summary) === */354 details.brief-section {355 border-bottom: 1px solid var(--border);356 margin-bottom: 2.5rem;357 padding-bottom: 1rem;358 }359 details.brief-section summary {360 cursor: pointer;361 font-family: var(--font-display);362 font-size: clamp(1.1rem, 2vw, 1.4rem);363 font-weight: 600;364 color: var(--text-primary);365 padding: 0.75rem 0;366 list-style: none;367 display: flex;368 align-items: center;369 gap: 0.5rem;370 }371 details.brief-section summary::before {372 content: "\25B6";373 font-size: 0.7em;374 color: var(--brand-primary);375 transition: transform 0.2s ease;376 }377 details.brief-section[open] summary::before {378 transform: rotate(90deg);379 }380381 /* === Cards === */382 .card {383 background: var(--bg-card);384 border: 1px solid var(--border);385 border-radius: var(--radius-lg);386 padding: clamp(1rem, 2vw, 1.5rem);387 }388 .card:hover {389 background: var(--bg-card-hover);390 }391392 /* === Stakeholder Cards === */393 .stakeholder-card {394 display: flex;395 gap: 1rem;396 align-items: flex-start;397 }398 .stakeholder-avatar {399 width: 48px;400 height: 48px;401 border-radius: 50%;402 background: var(--brand-primary);403 display: flex;404 align-items: center;405 justify-content: center;406 color: white;407 font-weight: 700;408 flex-shrink: 0;409 }410411 /* === Fit Score Bar === */412 .fit-bar {413 height: 8px;414 border-radius: 4px;415 background: var(--bg-elevated);416 overflow: hidden;417 margin: 0.5rem 0;418 }419 .fit-bar-fill {420 height: 100%;421 border-radius: 4px;422 background: var(--success);423 transition: width 0.8s ease;424 }425426 /* === Occasion Badge === */427 .occasion-badge {428 display: inline-block;429 padding: 0.25rem 0.75rem;430 border-radius: var(--radius-pill);431 background: var(--brand-primary);432 color: white;433 font-size: 0.75rem;434 font-weight: 600;435 text-transform: uppercase;436 letter-spacing: 0.05em;437 }438439 /* === Timeline === */440 .timeline {441 position: relative;442 padding-left: 2rem;443 }444 .timeline::before {445 content: "";446 position: absolute;447 left: 0.5rem;448 top: 0;449 bottom: 0;450 width: 2px;451 background: var(--border-strong);452 }453 .timeline-event {454 position: relative;455 margin-bottom: 1.5rem;456 padding-left: 1rem;457 }458 .timeline-event::before {459 content: "";460 position: absolute;461 left: -1.75rem;462 top: 0.5rem;463 width: 10px;464 height: 10px;465 border-radius: 50%;466 background: var(--brand-primary);467 }468469 /* === Grid Utilities === */470 .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(0.75rem, 1.5vw, 1.25rem); }471 .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(0.75rem, 1.5vw, 1.25rem); }472473 /* === Typography === */474 .section-title {475 font-family: var(--font-display);476 font-size: clamp(1.1rem, 2vw, 1.4rem);477 font-weight: 600;478 margin-bottom: 1rem;479 }480 .body-text { font-size: clamp(0.85rem, 1.2vw, 1rem); }481 .text-secondary { color: var(--text-secondary); }482 .text-muted { color: var(--text-muted); }483484 /* === Quick Reference Sidebar === */485 @media (min-width: 1200px) {486 .brief-layout {487 display: grid;488 grid-template-columns: 1fr 280px;489 gap: 2rem;490 max-width: 1200px;491 margin: 0 auto;492 }493 .quick-ref {494 position: sticky;495 top: 2rem;496 align-self: start;497 max-height: calc(100vh - 4rem);498 overflow-y: auto;499 }500 }501 @media (max-width: 1199px) {502 .quick-ref {503 margin-top: 2rem;504 border-top: 2px solid var(--border-strong);505 padding-top: 2rem;506 }507 }508509 /* === Print Styles === */510 @media print {511 .brief-nav { display: none; }512 .brief-container { max-width: 100%; padding: 1rem; }513 details.brief-section { open; }514 details.brief-section[open] { break-inside: avoid; }515 .card { break-inside: avoid; }516 body { color: #111; background: white; }517 .occasion-badge { border: 1px solid #111; background: transparent; color: #111; }518 }519520 /* === Responsive === */521 @media (max-width: 768px) {522 .grid-2, .grid-3 { grid-template-columns: 1fr; }523 .brief-nav { display: none; }524 }525526 /* === prefers-reduced-motion === */527 @media (prefers-reduced-motion: reduce) {528 * { transition: none !important; animation: none !important; }529 }530 </style>531</head>532<body>533534 <!-- Sidebar Navigation Dots -->535 <nav class="brief-nav" id="brief-nav">536 <!-- Generated by JS: one dot per section -->537 </nav>538539 <!-- Main Brief -->540 <div class="brief-layout">541 <main class="brief-container">542543 <!-- Header -->544 <header class="brief-header">545 <span class="occasion-badge">[Occasion] Prep</span>546 <h1>[Account Brief: Company Name]</h1>547 <p class="text-secondary">[Generated date] · [Target person if applicable]</p>548 </header>549550 <!-- Sections (use <details> for collapsible, <section> for always-open) -->551 <details class="brief-section" open id="company-snapshot">552 <summary>Company Snapshot</summary>553 <div class="grid-2">554 <!-- Company info cards -->555 </div>556 </details>557558 <details class="brief-section" open id="icp-fit">559 <summary>ICP Fit</summary>560 <!-- Fit score bar, segment match, fit reasons -->561 </details>562563 <!-- Continue for each section... -->564565 </main>566567 <!-- Quick Reference Sidebar -->568 <aside class="quick-ref">569 <h3>Quick Reference</h3>570 <!-- Key facts, do's/don'ts, one-line reminders -->571 </aside>572 </div>573574 <script>575 // Generate nav dots from sections576 // Intersection Observer for active section tracking577 // Smooth scroll on nav dot click578 // Open all details on print (window.onbeforeprint)579 </script>580581</body>582</html>583```584585**Self-contained:** Inline CSS, zero external dependencies (except Google Fonts). No JavaScript frameworks.586587**Key differences from deck HTML:**588- No scroll-snap (natural page scrolling)589- No slide containers (continuous document flow)590- Collapsible sections via `<details>`/`<summary>` for quick scanning591- Sticky sidebar navigation instead of slide nav dots592- Optional sidebar for quick reference (on wide screens)593- Max-width 900px for comfortable reading594- Print-friendly with `@media print`595596#### Content Density Guidelines597598Briefs are reference documents, not presentations — they can hold more content per section than slides. But keep it scannable:599600| Section | Content Limit |601|---------|--------------|602| Company Snapshot | 6-8 data fields in cards, 3-5 recent signals |603| ICP Fit | Score bar + 5 fit reasons max |604| Key Stakeholders | 4-6 stakeholder cards max |605| Talking Points | 8-12 talking points grouped by category |606| Value Props | 3-4 value props with evidence |607| Competitive | Comparison table with 4-6 rows max |608| Proof Points | 3-5 proof point cards |609| Recent Signals | 5-8 most relevant findings |610| Deal Timeline | 6-10 timeline events |611| Quick Reference | 8-12 key facts / reminders |612613If a section would exceed its limit, prioritize by relevance to the occasion and trim the rest.614615### Step 5: Delivery616617After generating the HTML file:6186191. **Open the brief** in the default browser6202. **Present a summary:**621622```623BRIEF READY624============625626Folder: .octave-briefs/<brief-name>-<date>/627File: .octave-briefs/<brief-name>-<date>/<brief-name>.html628Style: [Preset name or "Custom Brand"]629Sections: [List of included sections]630631Navigation:632- Scroll naturally to read through sections633- Click nav dots on the right edge to jump to sections634- Click section headers to collapse/expand635- Print-friendly: Cmd+P / Ctrl+P for clean PDF output636637---638639Want me to:6401. Adjust or expand a section6412. Add/remove stakeholders6423. Go deeper on any topic (competitive, signals, value props)6434. Change the style6445. Export as PDF (print dialog)6456. Generate a customer-facing one-pager from this (/octave:one-pager)6467. Build a presentation from this (/octave:deck)6478. Done648```649650## MCP Tools Used651652### Research & Enrichment653- `enrich_company` — Full company intelligence profile654- `enrich_person` — Full person intelligence report655- `find_person` — Find contacts at a company by title/role656- `find_company` — Find companies matching criteria657- `qualify_company` — ICP fit scoring for a company658- `qualify_person` — ICP fit scoring for a person659660### Library — Fetching Entities661- `list_all_entities` — Quick scan of all entities of a type (minimal fields, no pagination)662- `list_entities` — Fetch entities with full data and pagination (proof points, references, etc.)663- `get_entity` — Deep dive on one specific entity664- `get_playbook` — Retrieve a playbook with full content and value props665- `list_value_props` — Value propositions for a specific playbook666667### Library — Searching668- `search_knowledge_base` — Semantic search across library entities and resources669- `list_resources` — Browse uploaded docs, URLs, and Google Drive files670- `search_resources` — Semantic search across uploaded resources671672### Intelligence & Signals673- `list_findings` — Recent conversation findings and insights674- `list_events` — Deal events (stage changes, meetings, outcomes)675- `get_event_detail` — Full details for a specific event676677### Content Generation678- `generate_call_prep` — Synthesized prep brief (useful as a starting point)679- `generate_content` — Generate positioning or messaging content680681## Error Handling682683**Octave Connection Failed:**684> Could not connect to your Octave workspace.685>686> The brief builder needs Octave data to generate useful content. Without it, most sections would be empty.687>688> To reconnect: check your MCP configuration or run `/octave:workspace status`689690**Company Not Found:**691> I couldn't find detailed intelligence for [domain].692>693> Options:694> 1. Check the domain spelling and try again695> 2. Try a different domain or company name696> 3. Provide company details manually and I'll structure the brief697698**Person Not Found:**699> I couldn't find detailed information for [email/name].700>701> I found their company ([Company]). Would you like me to:702> 1. Proceed with company research + generic persona guidance703> 2. Search for them on LinkedIn (provide URL)704> 3. Create a brief based on their title and company alone705706**No Matching Playbook:**707> No playbook matches this audience profile directly.708>709> I'll use your general value props and positioning from the knowledge base. Consider creating a playbook for this segment: `/octave:library create playbook`710711**No Findings Data:**712> No conversation signals found for [company/person].713>714> This may be a new prospect with no prior interactions. I'll skip the Recent Signals and Deal Timeline sections and focus on enrichment data, playbook strategy, and proof points instead.715716**No Proof Points:**717> No proof points found in your library.718>719> The Proof Points section will be omitted. To strengthen future briefs, add case studies and customer references to your Octave library.720721## Related Skills722723- `/octave:research` — Text-based research and prep (brief is the visual, rendered version)724- `/octave:one-pager` — Customer-facing leave-behind document (brief is internal)725- `/octave:deck` — Full slide presentation (brief is a reference document)726- `/octave:battlecard-doc` — Competitive reference document (brief includes competitive context but is broader)727- `/octave:pipeline` — Deal-level coaching and pipeline strategy728- `/octave:generate` — Generate outreach content with brand voice control729- `/octave:insights` — Conversation intelligence deep dives730731---732> Converted and distributed by [TomeVault](https://tomevault.io/claim/octavehq) — claim your Tome and manage your conversions.733<!-- tomevault:4.0:skill_md:2026-04-11 -->