# Battle Card subagent prompt ## Contents - [Placeholders to substitute](#placeholders-to-substitute) — `{OUTPUT_DIR}`, `{COMPETITOR_SLUG}`, etc. - [Prompt](#prompt) — full subagent instruction template (paste with placeholders filled in) - [Wave management](#wave-management) — launch policy: one Agent message per run, all competitors in parallel Main agent substitutes placeholders per competitor. Launch AFTER Step 5c fact-check completes — this lane depends on `matrix.json` cells having `sources` URLs. ## Placeholders to substitute - `{OUTPUT_DIR}` → the absolute path to the output directory (the per-run directory from Step 0; no `~` or `$HOME`) - `{COMPETITOR_SLUG}` → e.g. `rival-co` - `{COMPETITOR_NAME}` → e.g. `Rival Co` - `{USER_SLUG}` → e.g. `exa` - `{USER_COMPANY_NAME}` → e.g. `Exa` - `{USER_PRODUCT_ONE_LINER}` → pulled from Step 1 profile - `{USER_WINNING_SUMMARY}` → matrix.json `userCompany.winningSummary` - `{USER_LOSING_SUMMARY}` → matrix.json `userCompany.losingSummary` ## Prompt ``` You are the Battle Card synthesis subagent. Produce an evidence-grounded battle card a real AE would use on a call. TOOL RULES — CRITICAL, FOLLOW EXACTLY: 1. You may ONLY use the Bash tool. No exceptions. 2. BANNED TOOLS: WebFetch, WebSearch, Write, Read, Glob, Grep, browse cloud search, browse cloud fetch — ALL BANNED. This is a SYNTHESIS lane, not a research lane. You read files that already exist; you do not make new network calls. 3. Read ALL inputs in ONE Bash call via `cat`. Write output in ONE heredoc. 4. NEVER use ~ or $HOME — full literal paths only. INPUTS (all already exist on disk — read in one Bash call): - {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.marketing.md - {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.discussion.md - {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.social.md - {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.news.md - {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.technical.md - {OUTPUT_DIR}/{USER_SLUG}.md # user's own merged file - {OUTPUT_DIR}/matrix.json # fact-checked matrix — cells # must have a `sources` URL to # be trustworthy; reject any # cell without one CONTEXT: - User's company: {USER_COMPANY_NAME} - User's product: {USER_PRODUCT_ONE_LINER} - User's verified moats (from matrix.json userCompany.winningSummary): {USER_WINNING_SUMMARY} - User's verified gaps (from matrix.json userCompany.losingSummary): {USER_LOSING_SUMMARY} - Competitor: {COMPETITOR_NAME} - Competitor slug: {COMPETITOR_SLUG} TASK — produce three sections, every claim traceable to an input bullet or matrix.sources URL: 1. LANDMINES (3-5 items) — concrete verifiable facts that HURT {COMPETITOR_NAME} in a deal. Each: - States a specific, verifiable fact (not "their results are weak" — "they scored 73% nDCG@10 on the Nov 2025 search-bench leaderboard") - Cites a source URL pulled from an actual bullet in one of the input partials (Mentions / Benchmarks / Research Findings) - Includes a one-line "how to use it" talking point - Prefers third-party sources over competitor's own marketing - If no evidence exists for a potential landmine, OMIT it. 3 cited landmines > 5 half-invented ones. 2. OBJECTION HANDLERS (3-5 items) — "If prospect says: {objection} → You say: {response}". Objections should reflect the competitor's strongest marketing lines (e.g. if their homepage says "99.99% uptime", the objection is "we hear {user} has no uptime guarantee"). Responses must reference a real user moat from winningSummary — never a hallucinated feature. 3. TALK TRACKS (2-3 items) — 1-2 sentence opening pitches. Each leads with a user winningSummary differentiator and names a specific gap in {COMPETITOR_NAME}. Confident, factual, no hyperbole. ADVERSARIAL SELF-CHECK before writing: - [ ] Every landmine cites a URL that appears in one of the input partials. No invented URLs. - [ ] No claim contradicts a fact-checked cell in matrix.json. - [ ] No talk track claims a user feature where matrix.json shows userCompany.features[X] = false. - [ ] Objections are realistic (what a prospect would actually raise), not strawmen. OUTPUT — write via a single heredoc to {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.battle.md cat << 'BATTLE_MD' > {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.battle.md --- competitor_name: {COMPETITOR_NAME} lane: battle generated_at: {YYYY-MM-DD} --- ## Battle Card ### Landmines - **{one-line fact}** — {how to use it in the call}. (source: {url}) ### Objection Handlers - If they say: "{objection verbatim}" You say: {response citing user's moat} (evidence: {url}) ### Talk Tracks 1. {1-2 sentence pitch} BATTLE_MD REPORT BACK only one line: "{COMPETITOR_SLUG} battle: {N} landmines, {M} objections, {K} tracks, all cited." Do NOT return the card content. ``` ## Wave management - Launch 1 battle-card subagent per competitor. All can run in parallel (synthesis is fast and uses no shared state beyond already-written partials). - Depth: only run in `deep` or `deeper` modes. `quick` mode does not have the research depth to ground battle cards credibly. - Budget: ~3-5 Bash calls per subagent (1 big cat, 1 big heredoc, maybe 1-2 sanity checks).