5.3 KiB
5.3 KiB
Battle Card subagent prompt
Contents
- Placeholders to substitute —
{OUTPUT_DIR},{COMPETITOR_SLUG}, etc. - Prompt — full subagent instruction template (paste with placeholders filled in)
- 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.jsonuserCompany.winningSummary{USER_LOSING_SUMMARY}→ matrix.jsonuserCompany.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
deepordeepermodes.quickmode 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).