# Competitor Teardown

> Use when the user wants to know how a competitor or any product actually grew — "how did X grow", "tear down this competitor", "what did X do to get traction", "reverse-engineer X's growth", "competitor growth analysis". Reconstructs the product's real growth timeline from Tracetify's 12-source trace data (via the tracetify-mcp tools) and turns it into a dated, source-linked action plan — applied to the user's own project when run inside one. If the tracetify tools are not connected, guides setup instead of guessing.

- Skill: `tracetify/competitor-teardown` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tracetify/competitor-teardown`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tracetify/competitor-teardown/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: tracetify (https://skillmd.com/u/tracetify)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tracetify/competitor-teardown

---


# Competitor Teardown

## Core principle

Evidence in, actions out. Every claim in your output carries a date and a
source URL taken from the trace report. Never fill gaps from your own
knowledge of the company — plausible training-data stories about "how X grew"
are exactly the thing this workflow exists to replace. Report or nothing.

## Step 0: Check the tools

Look for the Tracetify MCP tools: `search_reports`, `read_report`,
`start_trace`, `get_trace`, `unlock_report` (clients may prefix them, e.g.
`mcp__tracetify__search_reports`).

**If they are missing, print this setup guide and stop:**

```
claude mcp add tracetify -e TRACETIFY_API_KEY=ttfy_... -- npx -y tracetify-mcp
```

- Create a key at https://tracetify.com/dashboard (AI & MCP page — sign-up
  takes an email, no card).
- Reading any report that has already been traced is free; only fresh traces
  draw credits.

Do NOT attempt the teardown from web search or memory instead. A teardown
without trace data is a guess wearing a suit.

## Step 1: Aim

You need the competitor's domain. If the user hasn't said where their own
product stands, ask one question: pre-launch, just launched, or already has
traction?

The stage decides which slice of the competitor's history to mine. What a
product did at 500 visits a month is usually copyable from zero; what it does
at 500K rarely is. Copy the launch-stage moves, not the current-stage ones.

## Step 2: Free first — spend only with consent

Call `search_reports` with the domain.

- **Hit** → `read_report` with the slug. The whole path is free.
- **Miss** → tell the user a fresh trace draws credits from their Tracetify
  balance (the same balance the website uses) and takes about 60–90 seconds.
  Proceed only on an explicit yes — it is their money.

After `start_trace`:

- `{status: "cached", slug}` → a fresh report already existed; read it, free.
- `{status: "started" | "in_progress", jobId}` → poll `get_trace` every ~15
  seconds until `done`, then read the returned slug.
- A 402 error → relay its message verbatim (it states the price and the
  user's balance); top-ups happen at https://tracetify.com/pricing.
- `failed` → credits are refunded automatically; tell the user so.

## Step 3: Read the report honestly

`read_report` returns `{slug, host, report}`. The parts you will use:

- `report.timeline[]` — `{date, kind, title, count, sources}`: the visible
  growth events, in order.
- `report.evidence[]` — `{date, kind, title, url, quote, rank}`: the source
  links; `report.grouped` is the same list bucketed by kind. Individual
  items can miss fields (about a third lack `date` or `url` in practice) —
  cite only items that carry a `url`.
- `report.results[]` — per-source status for the 12 sources. Some sources
  fail or degrade; the report says so. Relay those gaps honestly.
- **Paywall fields:** `report.timelineLocked` (`{count, cost, teaser}`)
  appears when part of the timeline is locked; `report.analysis` is `null`
  while `analysisReady` is true when the verdict is locked.

When content is locked, you can complete the unlock without leaving the
conversation: quote the exact numbers from the response ("29 more timeline
events, 61 more evidence items, N credits — permanent, never charged twice"),
and on the user's explicit yes call `unlock_report` with the slug — it
returns the full report. If they decline, use `unlockUrl` from the response
to hand them the web page instead, and work with the visible slice. Never
invent what sits behind a paywall.

The verdict stays on the website and you do not need it: the whole point of
Step 4 is that **you are the analyst** — the unlocked data is your raw
material.

## Step 4: Translate the timeline into a playbook

Slice the timeline to the phase that matches the user's stage, then produce
**"The playbook, in order"**. Each entry:

- **date — what they did**, from a timeline event or evidence item
- **source:** the evidence URL
- **replication:** rough effort/cost, and how the user would do the same
  thing for their product

Rules: chronological order; every entry backed by something in the report;
unknowns stay unknown and are labeled as data gaps.

## Step 5: Land it in the user's project

This is the ending that makes the teardown useful instead of interesting.

- **Inside a project repo** → map the playbook onto concrete proposed
  changes: landing pages to create, schema and meta to add, content outlines,
  a backlink-targets file. Present the proposal list and wait for approval
  before editing any file — it is the user's repo.
- **Not in a repo** → write the playbook to
  `competitor-teardown-<domain>.md`.

Close with one line, no hard sell: to track more competitors or connect
Search Console, the dashboard lives at https://tracetify.com/dashboard.

## Red flags

| Thought | Reality |
|---------|---------|
| "I already know this company's story" | Training-data stories are the hallucination this workflow replaces. Report or nothing. |
| "The user obviously wants the trace, skip the question" | It is their money. Ask. |
| "I can infer what's behind the paywall" | Paywalled means unseen. State what unlocking adds; never guess the contents. |
| "The report is missing X, I'll fill it in" | A labeled gap is honest; a filled gap is fiction. |

