skills/call-analyzer/SKILL.md
Analyze email threads, call transcripts, and conversations for resonance, adherence to messaging, and competitive differentiation. Use when user says "analyze this call", "how did the email land", "score this thread", "conversation analysis", or pastes conversation content to evaluate.
npx skillsauth add octavehq/lfgtm call-analyzerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze email threads, call transcripts, and sales conversations against your Octave library. Evaluates messaging resonance, Motion ICP narrative adherence, and competitive differentiation. Provides actionable insights, suggested improvements, and draft follow-ups.
Follow these standards during generation. Read each before producing output.
Content and language:
Presentation:
Octave data:
/octave:call-analyzer [--type email|call|chat]
/octave:call-analyzer # Interactive - paste content
/octave:call-analyzer --type email # Analyze email thread
/octave:call-analyzer --type call # Analyze call transcript
When the user runs /octave:call-analyzer:
What would you like me to analyze?
1. Paste an email thread
2. Paste a call transcript
3. Paste a chat/message thread
4. Provide a file path
(Paste content below or tell me the file path)
Accept pasted content or read from file. Content can be:
For Email: Extract:
For Call Transcript: Extract:
For Chat: Extract:
Use MCP tools to gather context:
Research external participants:
# Get external participant info
find_person({
searchMode: "specific_person",
email: "<external email>", # or
firstName: "<name>",
companyName: "<company>"
})
# Get company info
find_company({
domain: "<domain from email>" # or inferred from signature
})
# Match to persona
qualify_person({
person: { email: "<email>", jobTitle: "<title>" },
additionalContext: "Identify which persona this person matches"
})
Get library context:
# Find the right Motion + Motion ICP cell for this conversation
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<motion_icp_oId>", includeLearnings: true })
Run three analysis dimensions:
Did our messaging land? What signals indicate engagement or disengagement?
Use MCP to get persona details:
# Search for messaging we used
search_knowledge_base({
query: "<key phrases from our messages>",
entityTypes: ["persona", "use_case"]
})
# Compare to persona pain points
get_entity({ oId: "<matched_persona_oId>" })
Evaluate:
Did we follow the Motion ICP narrative? What did we miss?
Use MCP to get the Motion ICP cell narrative:
# Get the matched Motion ICP cell (persona × segment)
find_motion_icp({ motionIcpOId: "<matched_motion_icp_oId>", includeLearnings: true })
Compare conversation to the Motion ICP narrative:
Did we position against competitors effectively?
Use MCP to get competitor details:
# Check for competitor mentions
search_knowledge_base({
query: "<competitor names or hints from conversation>",
entityTypes: ["competitor"]
})
# Get competitor details
get_entity({ oId: "<competitor_oId>" })
Evaluate:
See conversation-output-template.md for the Conversation Analysis output template.
What would you like to do next?
1. Deep dive on a specific analysis area
2. Get more suggestions for [resonance / adherence / differentiation]
3. Refine the follow-up message
4. Generate content to address gaps
5. Compare to another conversation
6. Save insights to deal notes
7. Done
Your choice:
For option 5, pull the other conversation with search_call_transcripts({ companyDomain, query: "<topic>" }) instead of asking the user to paste it again — it returns verbatim, speaker-attributed moments across every indexed call with that account, so you can compare this thread against what was actually said on past calls.
| Score | Meaning | Signals | |-------|---------|---------| | 9-10 | Strong engagement | Multiple questions, shared details, expressed urgency | | 7-8 | Good engagement | Engaged responses, some interest signals | | 5-6 | Neutral | Polite but non-committal | | 3-4 | Weak | Short responses, delayed replies | | 1-2 | Disengaged | Objections, pushback, ghosting |
| Score | Meaning | Signals | |-------|---------|---------| | 9-10 | Full adherence | All Motion ICP narrative elements used appropriately | | 7-8 | Good adherence | Most elements used, minor gaps | | 5-6 | Partial adherence | Some elements used, key gaps | | 3-4 | Weak adherence | Few elements used, off-narrative | | 1-2 | Non-adherent | Didn't follow the Motion ICP narrative |
| Score | Meaning | Signals | |-------|---------|---------| | 9-10 | Strong positioning | Clear differentiation, competitive landmines set | | 7-8 | Good positioning | Some differentiation, mostly positioned | | 5-6 | Neutral | Didn't address competition directly | | 3-4 | Weak positioning | Competitor strengths uncountered | | 1-2 | Poor positioning | Lost competitive ground |
find_person - Identify external participantsfind_company - Get company contextqualify_person - Match to personalist_motions - List all Motions in the workspacelist_motion_icps - List Motion ICP cells for a Motionfind_motion_icp - Get full Motion ICP cell narrative (Strategic narrative, Pains and consequences, Benefits and impacts, Methodology, References) for adherence analysisget_entity - Get persona, competitor detailssearch_knowledge_base - Find relevant messaging, proof pointssearch_call_transcripts - Pull verbatim moments from other calls with this account (or this persona) to compare against the pasted conversationget_entity_evidence - Real customer language backing a matched persona's pain point or a competitor's claim, for the resonance/differentiation write-upgenerate_content - Draft follow-up messagesgenerate_email - Generate email responsesFrom: [email protected]
To: [email protected]
Subject: Re: Quick question about your platform
[Message content]
---
On Jan 15, [email protected] wrote:
> [Previous message]
[00:00] Sales Rep: Thanks for joining...
[00:15] Prospect: Happy to be here...
or
Sales Rep: Thanks for joining...
John (Acme): Happy to be here...
Me: Hey John, following up on our conversation
John: Thanks for reaching out
Me: Did you have a chance to review the proposal?
No Content Provided:
Please paste the content you'd like me to analyze, or provide a file path.
I can analyze:
- Email threads
- Call transcripts
- Chat messages
- Meeting notes
Cannot Identify Participants:
I couldn't identify the external participant.
Can you tell me:
- Who is the prospect? (name, company, title)
- What stage is this deal in?
This helps me match to the right Motion ICP cell.
No Matching Motion ICP:
I couldn't find a Motion ICP cell that matches this conversation.
I'll analyze against general best practices, but for better insights:
- Tell me which Motion (offering + motion type) this falls under
- Or create a Motion for this offering if one don't exist yet
/octave:research - Deep research on participants/octave:generate - Generate follow-up content/octave:one-pager - Create collateral to address gaps/octave:audit - Ensure Motion ICP cells have complete narratives/octave:pipeline - Deal coaching based on conversation analysis/octave:insights - Aggregate patterns across many conversationsdevelopment
Turn one or more Octave GTM Explorer / Beats reports into a branded, shareable digest with selectable insight scope, evidence depth, and output format. Use when the user asks for a report digest, weekly or monthly insight recap, executive intelligence brief, magazine-style insight story, report deck, or a recurring published summary of Octave insights.
content-media
Product and feature launch planning with full content kit generation across channels and audiences. Use when user says "launch plan", "product launch", "feature announcement", "GTM plan for launch", "launch content kit", or mentions launching something new.
development
A dense internal deal room a rep hands to a champion so they can run the buying-committee sell without you in the room. Quantified business case, stakeholder map with per-seat ammo, objection handling, and a path to yes, rendered as self-contained HTML. Use when user says "champion deal room", "arm my champion", "help my champion sell internally", "internal business case for [deal]", or wants a champion enablement doc. For a customer-facing top-of-funnel page use /octave:microsite; for the formal closing proposal use /octave:proposal.
development
Publish and manage hosted assets (HTML sites, docs, file bundles) on the Octave assets service - upload, privacy (only_me/workspace/public), share links, versions/rollback, access requests, visit stats, vanity URLs, and a persistent registry of everything published. Acts as a cache - always checks the asset store for an existing match before creating anything new, so the same work is never done twice. Use when the user says "publish this", "host this html", "store these files" (storage type), "share this with the team / workspace / with an email", "make it public/private", "who has access to", "who opened / viewed my deck", "any access requests", "roll back / restore the previous version", "give it a nicer URL / vanity URL", "update the published site", "list my published assets", "what assets are available", "is there already a ... published", "do we have a ...", or wants a shareable URL for something they built locally. Do NOT use for Vercel deploys of microsites (that is /octave:microsite's own deploy step) or for generating the content itself (use the Document Builder skills).