TOOL-007 — Competitive Narrative Writer

Tier 3 Specialist Tool · Stateless · Composes deal-specific competitive narratives from CompetitiveKnowledgeBase + deal context · Augments AGT-403 reactive briefs · Domain 2 win-rate augment
Tier 3 · Tool Specced · v31 Domain 2 · Win-rate augment Sonnet
Purpose

AGT-403 Competitive Intelligence maintains the canonical CompetitiveKnowledgeBase and produces reactive competitive briefs when a competitor is detected. TOOL-007 augments this: given a specific deal context (stage, MEDDPICC state, ICP fit, prior conversation patterns) plus the relevant competitor's KB entry, composes a deal-specific narrative the rep can actually use in conversation — not generic positioning, but tailored to where this deal sits.

Domain 2 augment, not gap-closer. AGT-403 already covers competitive intelligence at 80%+. TOOL-007 lifts the quality of the deal-specific framing — the difference between "here's our competitive positioning vs. X" and "for this prospect at this stage with these specific concerns, here's how to frame the X comparison."
Input schema
{ "opportunity_id": "uuid", "competitor_id": "string", // matches CompetitiveKnowledgeBase.competitor_id "deal_context": { "current_stage": "string", "deal_health_score": 0, "icp_tier": "T1" | "T2" | "T3", "vertical": "string", "estimated_acv_usd": 0, "meddpicc_state": { ... }, // per AGT-401 deal health input "primary_use_case_documented": "string | null" }, "competitor_kb_entry": { ... }, // from CompetitiveKnowledgeBase // (positioning, strengths, weaknesses, // typical objections, displacement scenarios) "deal_specific_signals": { "competitor_explicitly_mentioned": true | false, "objections_raised_so_far": ["string"], "buyer_quotes_relevant_to_competitor": ["string"], "stakeholder_personas_engaged": ["string"] }, "narrative_target": "rep_talking_points" | "deal_brief_section" | "follow_up_email" | "competitor_battlecard_excerpt" }
Output schema
{ "tool_call_id": "uuid", "narrative": { "format": "string", // matches narrative_target "headline": "string", // 1-sentence positioning summary "talking_points": [ // 3-5 deal-specific points { "point": "string", "evidence_in_kb": "string", // citation to competitor_kb_entry section "why_relevant_to_this_deal": "string" } ], "objection_responses": [ // for objections_raised_so_far { "objection": "string", "response": "string", "kb_citation": "string" } ], "do_not_say": [ // anti-patterns specific to this competitor { "phrase_to_avoid": "string", "reason": "string" } ] }, "ungrounded_assumptions": ["string"], "kb_freshness": { "competitor_kb_last_updated": "ISO 8601", "is_stale": true | false, // KB updated > 90 days ago = stale "staleness_caveat": "string | null" }, "tool_metadata": { "model": "claude-sonnet-4-6", "input_tokens": 0, "output_tokens": 0, "cost_usd_estimate": 0.0, "latency_ms": 0 } }
Hard rule: Every talking point must cite a specific section of the competitor KB entry. The tool cannot invent competitive positioning; it can only re-frame what's already in the KB for the specific deal context. KB updates are AGT-403's responsibility, not TOOL-007's.
Called by
CallerInvocation context
AGT-403 Competitive IntelligenceAugments the reactive brief generation. AGT-403 detects competitor mention via AGT-407, fetches KB entry, calls TOOL-007 to compose deal-specific narrative for the brief.
AGT-405 Meeting Opportunity PrepFor deal-active meeting briefs where competitive context is relevant. AGT-405 calls TOOL-007 to include competitive talking points in the opportunity brief.
AGT-902 Account BrainFor per-account "what's the play on Acme HR given the competitive dynamic?" queries.
RevOps direct (workspace UI)Battlecard refresh — RevOps generates competitor-specific narratives for top-of-funnel enablement assets.
Design principles
  1. KB is the source of truth. Tool composes; AGT-403 maintains. Tool cannot extend or correct the KB — only re-frame it.
  2. Deal-specific, not generic. The output must read differently for a $50K SMB deal vs. a $2M enterprise deal. Generic positioning fails the eval.
  3. Anti-patterns explicit. The do_not_say field captures phrases that backfire with this specific competitor (e.g., positioning that the KB notes the competitor handles well). Equally important as the talking points.
  4. Stale KB surfaces caveats. If the competitor KB entry hasn't been updated in > 90 days, the kb_freshness field flags it and the narrative includes a caveat. Stale competitive intel is worse than no competitive intel.
  5. Format-aware. Talking points read differently from email copy from a battlecard excerpt. Tool adapts tone + structure to the narrative_target.
Cost ceiling
ConstraintValue
Per-call input budget15K tokens (KB entry + deal context)
Per-call output budget2K tokens
Default modelSonnet (composition + tone matching)
Per-call cost estimate~$0.06
Monthly cap (default)$200/mo (~3,000 calls)
FrequencyModerate — called when AGT-403 fires (competitor detection event) + AGT-405 brief generation + AGT-902 invocations.
Eval criteria
CriterionPass threshold
Schema compliance100% (hard)
KB grounding100% — every talking point cites a real KB section (hard)
Hallucinated competitor claims0% — tool never makes claims about a competitor that aren't in the KB (hard)
Deal-specificity10 retrospective deals where competitive narrative was used; reviewer rates whether narrative is actually deal-specific (vs. generic). ≥ 70% rated specific.
Adoption rate by reps% of generated narratives that reps mark as used in actual conversations — calibration signal ≥ 35%.
Stale KB recognition100% on KB entries > 90d old (hard) — staleness must surface as caveat
P95 latency≤ 4s