brief
npx skills add https://github.com/octavehq/lfgtm --skill brief
Agent 安装分布
Skill 文档
/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 mentionslist_events({ filters: { accounts: ["<account_oId>"] } })â deal stage changes, meetings held, emails sent â shows the journey so farget_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 profileenrich_personâ Full person intelligence reportfind_personâ Find contacts at a company by title/rolefind_companyâ Find companies matching criteriaqualify_companyâ ICP fit scoring for a companyqualify_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 entityget_playbookâ Retrieve a playbook with full content and value propslist_value_propsâ Value propositions for a specific playbook
Library â Searching
search_knowledge_baseâ Semantic search across library entities and resourceslist_resourcesâ Browse uploaded docs, URLs, and Google Drive filessearch_resourcesâ Semantic search across uploaded resources
Intelligence & Signals
list_findingsâ Recent conversation findings and insightslist_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