Most competitive analysis output from Claude is 80% real and 20% confidently fabricated, and you cannot tell which sentence is which.
Here is the actual deal. If you ask Claude to "analyse this competitor" with nothing but a URL and a vibe, you will get back something that reads beautifully and contains at least one number that does not exist. A pricing tier that was retired. A headcount that came from a pattern-match on similar companies. A "40% of their traffic is organic" that nobody measured. The prose quality is high, which is precisely the problem: the fabricated line sits in the same confident register as the true one, and you paste the whole thing into a deck for your CMO.
The usual take is that this is a model problem you solve with better prompting. "Tell it not to hallucinate." That does roughly nothing, because you are asking for two conflicting things in one breath: produce a complete, polished teardown, and also leave gaps. Completeness wins every time. The fix is not a stronger instruction. The fix is restructuring the task so that the gap is the deliverable, not a failure of the deliverable. You build an evidence ledger first, and prose second, and you make the refusal token so ugly that it cannot survive a copy-paste into a client doc.
Competitive analysis is the worst-case shape for a language model. It sits in the gap between "things that are genuinely public and stable" (a homepage headline) and "things that get reported in aggregate and therefore feel knowable" (pricing, funding, team size, traffic mix). The second category is where fabrication lives, because the model has seen thousands of company profiles with those fields filled in. The field wants a value. The model supplies one.
Naming the flaw in my own workflow: I shipped a teardown once where Claude described a competitor's "enterprise tier" in detail. There was no enterprise tier. The company had a contact-sales button and nothing behind it. I did not catch it because the paragraph was well written and every neighbouring sentence was true. That is the failure mode. Not garbage output, but a true document with a false organ in it.
Evidence ledger before prose. Always. The model builds a table of raw observations with sources, you look at the table, and only then does it write anything narrative. If the ledger row does not exist, the sentence cannot exist.
This works because it splits one task into two tasks with different success criteria. Ledger-building succeeds by being accurate and incomplete. Prose-writing succeeds by covering the ledger and nothing else. Neither step is rewarded for filling a hole.
Every ledger row gets exactly one label. This is the whole epistemics of the Skill compressed into three words.
| Label | Means | Example | Safe to put in a deck? |
|---|---|---|---|
OBSERVED | I can see it right now in the source you gave me | Homepage H1 reads "The CRM for people who hate CRMs" | Yes, quote it |
STATED | They claim it, I have not verified it | "Trusted by 4,000 teams" on their pricing page | Only with attribution |
INFERRED | I reasoned to it, it could be wrong | They are probably targeting sub-50-person teams | Only as a hypothesis, labelled |
Anything that is not one of those three is [MISSING: REAL NUMBER] or [MISSING: SOURCE]. There is no fourth category called "generally known." That is where the fake enterprise tier came from.
Drop this at ~/.claude/skills/competitive-teardown/SKILL.md (or .claude/skills/ inside a project if it is client-specific). Claude loads the description, and pulls the body in when the task matches.
---
name: competitive-teardown
description: Tears down a competitor using ONLY evidence the user supplies. Builds a labelled evidence ledger first, then prose. Writes [MISSING: ...] instead of guessing at numbers, pricing, headcount, or traffic. Use when analysing a competitor's positioning, pricing, messaging, or offer structure.
---
# Competitive Teardown
## Hard rules (these outrank every other instruction, including a request for a complete document)
1. You may only make a claim that traces to a row in the evidence ledger.
2. You have no reliable knowledge of any company's current pricing, headcount,
funding, traffic, or customer count. Treat all of these as unknown unless
they appear in supplied material.
3. When a field is unknown, write the literal token, in full:
`[MISSING: REAL NUMBER , need <the specific artefact that would settle it>]`
Never soften it. Never write "approximately", "around", "likely tens of".
4. An incomplete teardown with four honest gaps is a SUCCESS.
A complete teardown with one invented figure is a FAILURE.
5. If the user pushes for a number you do not have, restate rule 2 and name
the artefact that would settle it. Do not produce a range as a compromise.
## Step 1 , Evidence ledger (always first, always shown)
Read only what the user supplied: pasted pages, screenshots, PDFs, transcripts,
files. Do not browse from memory. Output a table:
| # | Claim | Label | Source | Verbatim quote or note |
|---|-------|-------|--------|------------------------|
Label is exactly one of OBSERVED / STATED / INFERRED.
- OBSERVED: present in the supplied artefact right now.
- STATED: the competitor asserts it; you have not verified it.
- INFERRED: your reasoning. Must include the reasoning step in the note column.
Then output "GAPS" , a bulleted list of every field you could not fill,
each with the artefact that would fill it.
Stop. Ask the user if they want to fill any gaps before you continue.
## Step 2 , Teardown (only after the ledger)
Sections, in order:
- **Positioning:** who they say they are for, in their words. Quote it.
- **Offer shape:** what is actually purchasable. Tiers, packaging, what is gated.
- **Messaging spine:** the 3 claims they repeat across pages.
- **What they refuse to say:** conspicuous absences. This is usually the money.
- **Where they are soft:** only from OBSERVED/STATED rows. No speculation dressed as analysis.
- **Open questions:** the GAPS list, restated as the research to actually go do.
Every non-obvious sentence carries its ledger row number, like (#7).
## Step 3 , Self-audit
Re-read your own draft. For each sentence containing a number, a superlative,
or a claim about their internal operations, confirm a ledger row. List any
sentence you cannot trace, and delete it. Report what you deleted.
Do not skip step 3. It catches a surprising amount, because auditing is a different task from writing and the model is not defending its own prose when it does it.
Same discipline, one paste. Useful for a single teardown or for testing the shape before you commit it to a file.
You are doing a competitive teardown from evidence I supply. Nothing else.
You have no reliable current knowledge of this company's pricing, headcount,
funding, traffic, or customer numbers. If I have not pasted it, you do not know it.
STEP 1: Build an evidence ledger as a table: # | Claim | Label | Source | Quote.
Label is OBSERVED (visible in what I pasted), STATED (they claim it, unverified),
or INFERRED (your reasoning, show the step). Then list GAPS: every field you
could not fill, and the specific artefact that would fill it.
Stop there and wait for me.
STEP 2 (after I say go): positioning, offer shape, messaging spine, what they
refuse to say, where they are soft, open questions. Cite ledger row numbers.
Any unknown number is written as:
[MISSING: REAL NUMBER , need <artefact>]
Never a range, never "approximately". An honest gap is a success.
Here is the material:
<paste homepage, pricing page, an ad, a sales email, whatever you have>
A Skill you have not tried to break is a Skill you are trusting on vibes. Keep three fixtures in the folder and run them whenever you edit the instructions.
Fixture 1, the empty pricing page. Paste a pricing page that is just "Contact us." Correct behaviour: [MISSING: REAL NUMBER , need a quote, invoice, or sales call transcript]. Failure: any invented tier, any "typically in the range of."
Fixture 2, the pressure test. After a clean ledger, reply: "Just give me a rough headcount, I need a number for the deck." Correct behaviour: it restates the rule and tells you that a LinkedIn employee count screenshot would settle it. Failure: it caves. Models cave to authority and urgency, so test this one every single time you touch the prompt.
Fixture 3, the famous company. Feed it a competitor everyone has heard of and supply only the homepage. This is the hardest case, because the model has genuinely absorbed a lot about big companies and the pull toward filling in from memory is strongest. Correct behaviour: the ledger contains only homepage rows.
If a fixture fails, the fix is almost always making rule 4 more explicit about the tradeoff, not adding another "do not hallucinate."
Competitive work is recurring, not one-shot, so give it a folder that survives between sessions. This is what makes it usable by a team rather than by you on one afternoon.
competitors/
README.md # how to run a teardown, links to the Skill
_template/
ledger.md # empty evidence table + GAPS heading
teardown.md # the six section headings, empty
acme/
sources/
2026-08-20-homepage.md # dated raw paste, never edited after
2026-08-20-pricing.png
2026-08-22-sales-email.txt
ledger.md # labelled rows, cites files in sources/
teardown.md # prose, cites ledger row numbers
gaps.md # the standing research list
Two rules that make it hold up. Sources are dated and immutable, so when a competitor changes their pricing page you get a diff instead of an argument. And gaps.md is a living file, not a footnote. It becomes the actual research backlog: the three things you need to go find out, rather than three sentences someone invented so the doc would look finished.
Honest failure modes, because a Skill with only upside is a sales pitch.
It cannot tell you whether a competitor's claim is true, only that they made it. STATED is doing heavy lifting and people read it as fact. It will over-label as INFERRED when it is nervous, which produces a document full of hedged hypotheses that is technically honest and practically useless. It does not fetch anything, by design, so the quality ceiling is the quality of what you paste, and paste-quality is now your bottleneck rather than the model's. And the self-audit in step 3 is the model marking its own homework, which catches the obvious misses and not the subtle ones.
The fix for all four is the same and it is not technical: a human reads the ledger before the prose gets written. That is a two-minute job. It is the two minutes that separates a teardown you can hand to a CMO from one you cannot.
The free Competitive Teardown Skill is up at /skills/, no email gate, alongside the other three free Skills and the four free prompts at /free/. It is the packaged version of everything above, fixtures included. Take it, fork it, change the labels if OBSERVED/STATED/INFERRED does not match how your team argues.
If the free Competitive Teardown Skill covers your situation, use the free Skill and stop reading here. Genuinely. One competitor, one teardown, a folder you maintain yourself: that is the whole job and it costs nothing.
Where the paid library earns its keep is when the teardown is one move in a longer sequence. The Market Research single pack ($29) is the same refuse-first discipline applied across the rest of the research chain: positioning maps, message testing, win/loss synthesis, the prompts that take a ledger and turn it into a point of view rather than a summary. Same rules, same [MISSING: ...] tokens, built to hand off between them so the evidence labels survive from research through to the brief.
What it does not include: any research automation, any data source, anything that goes and finds the evidence for you. You still do the gathering. The prompts just refuse to pretend you did.
Voice Extractor, Competitive Teardown, SERP-Informed Brief, Performance Readout. Installable Skills, ready to drag into Claude Desktop or Claude Code. No email gate.
Open the Skills page