---
name: competitor-scan
description: Periodic competitive intelligence sweep. Pulls each competitor's site, blog, social, GitHub (if open-source), and recent news; produces a battlecard plus a content-gap report. Use when the user says "competitor scan", "what's {competitor} up to", "battlecard for {company}", or when running a scheduled biweekly intel sweep.
---

# competitor-scan

Inspired by [anthropics/marketing/competitive-analysis](https://github.com/anthropics/knowledge-work-plugins/tree/main/marketing/skills). Lightweight and recurring, not exhaustive analyst-grade. The point is to catch movement and identify gaps in our messaging — not to produce a 50-page report.

## When to trigger

- "competitor scan" / "competitive sweep"
- "battlecard for {company}"
- "what is {competitor} doing"
- Scheduled biweekly run (when enabled — currently deferred per `tasks/scheduled.md`)

## Default competitor set

Read the bridge brain folder for the canonical anti-positioning list. Default scan set:

- **Glean** — anchor competitor in enterprise search
- **Microsoft Copilot** — for buyers in MS-locked orgs
- **Notion AI / Notion Q&A** — overlap on team knowledge
- **Hebbia / AlphaSense** — financial-research adjacent
- **Workday Assistant / similar in-app** — narrow but worth tracking

User can add/remove competitors per scan; this is the v0 default.

## Inputs

- **Competitor list** — defaults above; override per request
- **Surfaces to check** — site, blog, careers, pricing, social, GitHub (if applicable), recent news. Default: all.
- **Look-back window** — defaults to 14 days for biweekly cadence, 30 days for ad-hoc

## Workflow

1. **For each competitor**, gather in parallel:
   - Marketing site homepage + product page (lead with: positioning headline, primary CTA, whose attention they're chasing)
   - Recent blog posts in window (titles + leads)
   - Pricing page if visible
   - LinkedIn / X presence (recent posts; rough cadence)
   - Open positions (careers page) — hiring signals
   - GitHub activity if open-source
2. **Identify movement.** What's new since last scan? New products, repositioned messaging, new vertical focus, hires that signal direction (e.g. "5 enterprise SE hires in Germany" = enterprise EU push).
3. **Compare messaging.** For each, note: what claim are they leading with? What audience? What proof points do they cite? Where do their claims overlap or diverge from Amaro's anchor claim?
4. **Identify content gaps.** Where are they writing about a topic Amaro hasn't? Where is Amaro writing about a topic they're getting traction on? Surface as opportunities for `content-draft`.
5. **Update battlecards.** One battlecard per competitor in `briefs/battlecards/{competitor}.md` (create folder if missing). Update vs overwrite — preserve history with dated sections.
6. **Produce scan summary.** Top 3 movements across the set, top 3 content gaps Amaro should fill, one strategic note (e.g. "Glean leaning hard into Slack integration — implies our MCP-anywhere pitch is undervalued and we should publicize it more").
7. **Run brand-voice lint** on the summary (battlecards are internal so light review; the summary will be shared).
8. **Write to outbox** at `assets/outbox/{YYYY-MM-DD}-competitor-scan.md` with target `slack`, channel `marketer-approve` (gated because anything based on competitor moves needs human eyes before any external response).
9. **Append to tasks.** Action items derived from gaps go to `tasks/active.md`.

## Battlecard template (per competitor)

```markdown
---
competitor: {name}
last_scanned: {YYYY-MM-DD}
maintained_by: competitor-scan
---

# Battlecard — {Competitor}

## Their pitch (current)
{One paragraph — what they're claiming, who they're chasing, primary CTA}

## What's new ({window})
- {YYYY-MM-DD}: {movement} — {one-line implication}
- ...

## Where they win
- {Honest assessment — don't dismiss}

## Where Amaro wins
- {Specific, defensible claim}

## How we respond if asked
- "{Customer asks: 'How is Amaro different from {them}?'}" → "{2-sentence answer that acknowledges what they do well and pivots to what Amaro does that they don't}"

## Don't say
- {Things sales/marketing should avoid claiming about this competitor — exaggerations, outdated info, etc.}

## Source links
- Site: {URL}
- Blog: {URL}
- Last 3 posts: {titles + URLs}
```

## Scan summary output (the thing posted to Slack)

```markdown
---
target: slack
channel: marketer-approve
status: pending
created: {ISO}
created_by: competitor-scan
requires_approval: true
---

# Competitor scan — {YYYY-MM-DD} ({window} window)

## Top movements
1. **{Competitor}**: {what changed} — {implication}
2. **{Competitor}**: {what changed} — {implication}
3. **{Competitor}**: {what changed} — {implication}

## Content gaps to fill
- {Topic} — {who's covering it, why we should}
- {Topic} — {ditto}
- {Topic} — {ditto}

## Strategic note
{One short paragraph — a meta-observation across the set.}

## Approval requested
- **What**: post this scan summary internally + spin out 3 content-draft tasks for the gaps
- **Where**: #marketer (summary), tasks/active.md (gaps)
- **Why**: {one line}
- **Risks**: {one line}
- **Reversibility**: high — internal-only output

## Updated battlecards
- {competitor1} — see briefs/battlecards/{competitor1}.md
- {competitor2} — ...
```

## Don't

- **Don't fabricate competitor moves.** If a source is paywalled or you can't verify, mark it explicitly: `[unverified — needs human check]`.
- **Don't recommend reactive copy** (writing a blog post tearing down a competitor's claim) without `#marketer-approve`. Reactive content has high reputational reversibility cost.
- **Don't refresh battlecards more often than the scan cadence.** Stale-but-stable beats churn.
- **Don't put competitor names in customer-facing copy** without sign-off — the style guide's anti-positioning rules apply.
