Slack Competitive Query
SKILL.md
Available Context & Tools
@_platform-references/org-variables.md @_platform-references/capabilities.md
Slack Competitive Query
Goal
Surface competitive intelligence from the team's sales conversations to help reps prepare for competitive deals. Data builds automatically as competitors are mentioned in sales calls — the more conversations logged, the richer the intelligence.
Intent Patterns
Specific Competitor Battlecard
Triggered when competitor_name is extracted from the message.
- Search competitive intelligence records for the named competitor (case-insensitive partial match)
- If found: show full battlecard
- If not found: "No competitive intelligence found for [name]. This data builds up as competitors are mentioned in your sales calls."
Battlecard format:
- Header: "Battlecard: [Competitor Name]"
- Fields: Mentions (N across deals) | Win Rate (N% or "Insufficient data" if < 5 deals)
- Section "Their Strengths:" — bullet list of known competitor strengths
- Section "Our Advantages:" — bullet list of our differentiators vs. this competitor
- Divider
- Context: "Competitive intel builds from your team's sales conversations. More data = better insights."
Competitive Landscape Overview
Triggered when no specific competitor is named, or when asking "show competitive landscape."
- Fetch all competitive intelligence records sorted by mention count
- Show ranked list of all known competitors
Landscape format:
- Section: "Competitive Landscape:"
- Bullet list:
• *Competitor Name* — N mentions | Win rate: N%- Omit win rate if insufficient data
- Sort by mention count descending
- Divider
- Context: "Ask about a specific competitor for their full battlecard."
No Competitive Data
Show when no competitive intelligence data exists at all:
- Section: "No competitive intelligence data yet. This builds automatically as competitors are mentioned in your sales calls."
- Context:
Once data accumulates, ask me things like "What works against [competitor]?" or "Show competitive landscape"
Data Sources
- Competitive intelligence:
execute_action("get_competitive_intelligence", { owner: slack_user_id })- Returns:
competitor_name,mention_count,win_rate(null if insufficient data),strengths[],weaknesses[]
- Returns:
Win Rate Display Rules
- Show win rate only if there are ≥ 5 competitive deals with this competitor
- Format: "{N}%" (e.g., "47%")
- If insufficient data: show "Insufficient data" — never show 0% for missing data
- Win rate = deals won / (deals won + deals lost) where this competitor was tagged
Response Constraints
- Strengths and weaknesses: show all available — don't truncate (competitive prep needs complete info)
- If no strengths data: skip the "Their Strengths" section entirely
- If no weaknesses/advantages data: skip the "Our Advantages" section entirely
- Mention count: format as "N across deals" for context
- Sort landscape by mention count descending — most frequently encountered competitors first
Error Cases
- Specific competitor not found: Plain text with competitor name and explanation that data builds from call transcripts
- No competitive data at all: Structured response explaining how data builds (not an error state — users need to understand the value proposition)
- Win rate with < 5 deals: Show "Insufficient data" rather than a potentially misleading percentage