// diagnose
Competitor Messaging Matrix
Use when the user wants to see what every competitor's homepage claims, side by side, before writing or rewriting their own positioning - which claim types rivals make, who names an audience, what proof and call to action each uses, which words the category has used up, and whether the user's own headline can be told apart. Also use when the user mentions competitor messaging, messaging teardown, competitive positioning, "we all sound the same", category language, white space, or homepage comparison. Produces a claim matrix, category words, each rival's distinctive words, a distinctiveness read of your headline, and the open claims no rival makes.
npx skills add sarojkjha/aaj-marketing-skills --skill competitor-messaging-matrixClaude Code
/plugin marketplace add sarojkjha/aaj-marketing-skills/plugin install aaj-marketing-skills@aajOpenAI Codex
codex plugin marketplace add sarojkjha/aaj-marketing-skillscodex plugin add aaj-marketing-skills@aajClaude or ChatGPT — no install
Add this as a custom connector:
https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp// when to use it
Use when the user wants to see what every competitor's homepage claims, side by side, before writing or rewriting their own positioning - which claim types rivals make, who names an audience, what proof and call to action each uses, which words the category has used up, and whether the user's own headline can be told apart. Also use when the user mentions competitor messaging, messaging teardown, competitive positioning, "we all sound the same", category language, white space, or homepage comparison. Produces a claim matrix, category words, each rival's distinctive words, a distinctiveness read of your headline, and the open claims no rival makes.
// what you give
The headline, subhead, first screen of copy and calls to action from three to six competitor pages, each with the date you copied it, and optionally your own
// what you get
A claim matrix (which rivals make which of nine claim types), the crowded and open claims, the audience and category label each rival names, CTA types, category words and each rival's distinctive words, and for your own page the share of distinct words, the crowded claims you share and a verdict
Engine spec
// decision it supports
What do rival homepages all claim, what does no one claim, and can a buyer tell our headline apart from theirs?
// inputs
The headline, subhead, first screen of copy and calls to action from three to six competitor pages, each with the date you copied it, and optionally your own
// output
A claim matrix (which rivals make which of nine claim types), the crowded and open claims, the audience and category label each rival names, CTA types, category words and each rival's distinctive words, and for your own page the share of distinct words, the crowded claims you share and a verdict
// acts or analyzes
Analyzes onlyMakes no network calls, writes no files and changes nothing in your tools.
// where your information goes
| How you run it | Where your inputs go |
|---|---|
| Skill installed in your agent, or the local MCP server | The engine runs on your machine and AAJ receives nothing. Your AI agent still sends what you give it to its model provider (Anthropic, OpenAI and so on), under your own account's terms. |
| Hosted MCP server | Your agent's model provider, as above, plus AAJ's server on Cloudflare, which receives the engine inputs over HTTPS, runs them in memory and keeps no copy. Cloudflare keeps error logs (no inputs) for up to 7 days. |
No engine needs customer names, emails or other personal data; leave them out.
// limitations
- Claim types are matched by word lists, so it counts words, not meaning. 'Simple pricing' and 'simple to use' both count as ease; read the matrix against the pages before quoting it.
- It reads only the copy you paste. A paraphrased headline measures your paraphrase, and rival pages change; pages copied more than 90 days ago are flagged as stale.
- An open claim is one no rival makes, not a recommendation. It can't say whether a claim is true or whether buyers care about it.
- Distinct is not better. The distinctiveness read measures word overlap with rivals, not whether buyers want what your headline says.
// review before acting
// setup
npx skills add sarojkjha/aaj-marketing-skills --skill competitor-messaging-matrixhttps://aaj-engines-mcp.sarojkjha10.workers.dev/mcpAgents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code.
Competitor Messaging Matrix
Open five competitor homepages in five tabs and read only the headlines. In most categories you cannot say which tab is which: the same category noun, the same "all-in-one", the same "grow your business", the same logo strip. Positioning is a choice against those tabs, so the first step is to read them properly, side by side, with the words counted.
This engine does the counting. For each page it records the claim types made (outcome, superlative, number, social proof, ease, AI, price, security, integrations), the audience named, the category label used, the proof offered and the call to action, then compares across pages: which claims most rivals make, which no rival makes, which words the category has used up, and which words belong to one rival only. If you give it your own page, it says how much of your headline is yours alone.
When to use
Before positioning work (positioning-statement, messaging-framework), before a homepage rewrite,
before a comparison page, and whenever someone says "we all sound the same". Re-run it quarterly;
rival pages change.
Do not use it to judge whether a claim is true (claims-and-proof-check), or to compare features and
pricing in a table (comparison-pages, the Competitor Research Grid).
Before you start
- Read the brand/product context first. Pull the competitor set and your current headline from
.agents/product-marketing.md. If none exists, ask for three to six rivals: the ones buyers actually compare you with, including the status quo if it has a website. - Copy the copy, don't paraphrase it. For each rival: the headline, the subhead, the first screen of body copy, and the button labels, exactly as written. Record the date.
- Include your own page the same way, so the distinctiveness read uses the same rules.
- Three rivals minimum for the category-word rule to mean anything.
Method
Claim types are matched by word lists in the engine source. A match means the page makes that kind of claim; it says nothing about whether the claim is true.
Crowded and open. A claim type made by at least half the rivals, and at least two (engine rule), is crowded: making it too costs you nothing and wins you nothing. A claim type no rival makes is open: it is only worth making if it is true and matters to the buyer.
Category words. A content word in the headline or subhead of at least half the rivals, and at least two (engine rule), after light stemming. These are the words a buyer has already read five times today.
Distinctive words. Words only one rival uses. They show what that rival has chosen to own.
Your distinctiveness. The share of your headline-and-subhead content words that appear in no rival's headline or subhead. At or above 50% (engine rule) your page can be told apart by its words; below it, a buyer reading tabs cannot. The verdict combines this with the crowded claims you share.
Audience and category label are extracted from "for ..." phrases and category nouns (platform, software, tool, CRM and so on). A page that names no audience is talking to everyone, which is nobody.
Workflow
Step 1 - Collect the pages (Before you start) and run the engine with us included.
Step 2 - Read the claim matrix. Mark the crowded claims you currently make. Each is a sentence you can cut from your homepage without losing anything.
Step 3 - Read the open claims against your proof. An open claim you can prove (a number, a named customer with consent, a security report) is a candidate differentiator. An open claim you cannot prove is open because nobody can.
Step 4 - Take the category words to positioning-statement as the words to avoid in the
headline, and the rivals' distinctive words as the ground already taken.
Step 5 - Rewrite, re-run. The second run should move the verdict from blends-in to distinct
without adding a claim you cannot prove. Then run claims-and-proof-check on the new copy.
Step 6 - Log it. Put each rival's headline, audience, CTA and date in the Competitor Research Grid so the next quarter's run shows what changed.
Run the tool
node resources/messaging-matrix.js --demo
node resources/messaging-matrix.js '{"us":{"name":"Us","headline":"..."},"competitors":[{"name":"A","headline":"...","checked":"2026-10-01"},{"name":"B","headline":"..."}]}'
node resources/messaging-matrix.js --help
run({ us, competitors, today }) returns the rival pages read, the claim matrix, crowded and open
claims, category words, audiences, CTA counts, your own read and a verdict. Deterministic, offline,
no dependencies; the word lists are in the source and are the whole method.
Present the result
- The verdict in one line, with your distinct share.
- The claim matrix as a table: claim type, which rivals, you.
- Crowded claims to cut and open claims to test against your proof.
- The pages, one line each: headline, audience, category label, CTA, distinctive words, date.
- Category words to keep out of your headline.
- Findings (stale or undated pages, thin inputs).
Guardrails & common mistakes
- An open claim is not a recommendation. It is a claim nobody makes; ask why before making it.
- Distinct is not better. A headline nobody else could write can still be one nobody wants.
Pair this with
review-miningor interviews for what buyers care about. - Word lists match words. "Simple" in "simple pricing" and "simple to use" both count as ease. Read the matrix against the pages before quoting it.
- Copy, don't summarise. A paraphrased rival headline measures your paraphrase.
- Date every page. Rival messaging changes; the engine flags pages copied more than 90 days ago.
- Never disparage in the output you publish. The matrix is research; comparison pages and battlecards have their own fairness rules.
Related AAJ resources
- Writing the statement once the ground is mapped: https://aajconsult.com/tools/positioning-statement-generator
- The competitive-alternatives and differentiator tabs: https://aajconsult.com/templates/positioning-messaging-workbook
- Keeping rival facts current: https://aajconsult.com/templates/competitor-research-grid
- The five-step method this fits into: https://aajconsult.com/blog/competitive-analysis-for-startups
Related skills
positioning-statementandvalue-proposition- what to write once the map is readmessaging-framework- pillars that avoid the crowded claimscomparison-pages- the fair, sourced version of "them vs us"claims-and-proof-check- whether the open claim you want to make can be supportedreview-mining- what buyers care about, to weigh the open claims
// faq
// install
npx skills add sarojkjha/aaj-marketing-skills --skill competitor-messaging-matrix// worked example
Get the worked example for Competitor Messaging Matrix
One email. The filled-in config, the output, and how to read it.
// human in the loop
Need a human in the loop?
AAJ builds the strategies, tools, and playbooks these skills are made of — with engagements for growth-stage and enterprise teams.
