Ask a chatbot to “do a competitor analysis” for your business and you will get something that looks finished in about forty seconds: five rivals, their strengths, their weaknesses, maybe a tidy estimate of market share. Some of it will be right. Some of it will be a confident guess. The problem is that the two look identical on the page, and you won’t know which is which until you have repeated a made-up number to a client.
AI competitor analysis works when you treat the model as a fast, patient analyst sitting on top of evidence you collected, and not as the source of the evidence. This guide walks through that workflow: define the market, build a shortlist, collect public information with links and dates, then use AI to structure, compare and question it. The output is a competitor matrix where every cell either points to a source or openly says “unknown”. That last part matters more than it sounds.
Where AI helps, and where it starts inventing
Language models are good at the boring middle of competitor research. They can turn twelve pasted pricing pages into one consistent table, spot that three rivals all promise “same-week turnaround”, group two hundred review snippets into themes, and point out that your own positioning sounds exactly like competitor number four. That is real work, and it used to eat afternoons.
They are bad at anything that requires knowing a fact they were never given. OpenAI’s own help article on ChatGPT accuracy and limitations lists fabricated quotes, citations and references among the typical errors, and advises checking sources by visiting the links directly. Revenue, customer counts, market share and search volume for a small local competitor are exactly the kind of numbers a model will produce when asked, because you asked. Research features help, but they don’t remove the job. ChatGPT’s deep research returns reports with citations or source links “so you can verify the information”, and Claude’s research mode (paid plans, web search switched on) runs a chain of searches for you. Both save collection time. Neither makes an uncited sentence true, and a citation that doesn’t say what the summary claims is still a wrong fact with a link attached.
So the rule for this whole workflow is simple: you collect, the AI organizes, you verify.
Step 1: Define the market before you name anyone
Most competitor lists are just the businesses the owner already worries about. Useful, but incomplete. Start by writing down, in one paragraph, who the customer is, what job they are hiring someone to do, where you operate and roughly what price band you sit in. “Commuters and weekend riders within 15 km who need a bike repaired within a week, mid-priced” produces a very different shortlist than “bike shops”.
Then build the shortlist in three groups. Direct competitors sell nearly the same thing to the same people. Indirect competitors solve the same problem another way (a mobile mechanic, a big-box store’s service desk, a YouTube tutorial and a set of hex keys). And there is always the do-nothing option: the customer who keeps riding with a squeaky chain. Four to six named competitors is plenty for a small business. More than eight and you will collect shallow evidence on all of them instead of useful evidence on the ones that matter.
If you are still shaping the business itself, the competitive section of our AI business plan guide covers how this list feeds into planning, including a stress-test prompt for the classic mistake of only listing rivals you are better than.
Step 2: Collect evidence, not impressions
For each competitor you want the same set of facts: what they sell, what they charge where it is published, how they describe themselves, the details that make the offer concrete (guarantees, turnaround, coverage area, booking method), and what customers say about them. Every item gets three things attached: the source URL, the date you retrieved it, and a short quotation if the exact wording matters.
The retrieval date is not bureaucracy. Pricing pages change, offers expire, and a matrix without dates quietly turns into fiction over a few months. For pages you expect to change, the Internet Archive’s Save Page Now stores a copy of a single page and gives you a permanent URL you can cite later.
| Source | What it can show | What it can’t |
|---|---|---|
| Competitor website (services, pricing, about, FAQ) | Offer, published prices, positioning language, guarantees | Actual prices charged, volume, profitability |
| Public reviews (Google, Trustpilot, industry sites) | Recurring praise and complaints, response style | A representative sample of all customers |
| Meta Ad Library | Ads currently running across Meta’s apps, copy and creative | Spend for ordinary commercial ads (Meta shows spend ranges only for social issue, election and political ads, per its advertising standards) |
| Google Ads Transparency Center | Ads served on Google Search, YouTube and other Google surfaces, filterable by region and date (Google help) | Budgets, keywords bid on, results |
| Archived pages (Wayback Machine) | How an offer or price changed over time | Anything that was never archived |
A note on reviews: copy them as short snippets with links, and keep the count of how many you read. “Four of the 30 most recent reviews mention waiting over two weeks” is evidence. “Customers hate their wait times” is a vibe, and vibes have a way of becoming strategy.
The competitor matrix, with sources in the cells
Below is a sample matrix for an illustrative business. Copperline Bike Works and both competitors are fictional, the URLs are placeholders, and the findings are invented to show the format. Notice that each row carries one finding, its evidence type, its source and its date. That makes it slower to fill in than a classic strengths-and-weaknesses grid, and far easier to trust.
| Competitor | Attribute | Finding | Type | Source | Retrieved | Confidence |
|---|---|---|---|---|---|---|
| Spoke Street Cycles (illustrative) | Standard service price | “Full service from €89” | Fact (quoted) | spokestreet.example/services | 27 Oct | High |
| Spoke Street Cycles | Turnaround | Promises “most repairs within 5 working days” | Fact (quoted) | spokestreet.example/faq | 27 Oct | High |
| Spoke Street Cycles | Review theme | 6 of 30 latest reviews mention delays beyond promised date | Fact (counted) | Google profile, 30 latest reviews | 27 Oct | Medium (small sample) |
| Halden Mobile Repair (illustrative) | Service price | Not published. Site says “quote on request” | Unknown | halden.example/book | 27 Oct | n/a |
| Halden Mobile Repair | Positioning | Sells convenience: “we come to your door” | Fact (quoted) | halden.example homepage | 27 Oct | High |
| Halden Mobile Repair | Advertising | No active Meta ads found in our country | Fact (negative result) | Meta Ad Library search | 27 Oct | Medium (may advertise elsewhere) |
And the blank version to copy into a spreadsheet:
| Competitor | Attribute | Finding | Type (fact / quote / count / inference / unknown) | Source URL or archive link | Retrieved | Confidence and why | Open question |
|---|---|---|---|---|---|---|---|
The empty cell is doing its job
Look at Halden’s price row again. The tempting move is to ask the AI “what does a mobile bike mechanic usually charge?” and drop the answer in. Don’t. You would be replacing an honest unknown with an average of who-knows-what, and three weeks later someone will quote it as Halden’s price.
An unavailable data point has a few legitimate outcomes. You can leave it as “Not published” with the date, which is itself a finding: Halden doesn’t compete on visible price, and that tells you something about how it sells. You can find a real source later, such as a price list in a public post, and add it with its own link. Or you can record a hypothesis in a separate column, clearly marked, along with how you would test it. What you can’t do is let the model fill the hole because the table looks better full. A matrix with honest gaps beats a complete one you have to defend line by line.
Step 3: Let AI structure and compare
Once you have raw notes, links and snippets, this is where the AI earns its subscription. Paste the evidence into a chat (or a project, if you run this monthly) and use a prompt that forbids outside knowledge:
You are helping me organize competitor research. Use ONLY the evidence I paste below. Do not add facts from your own knowledge or the web.
Turn the evidence into a table with these columns: Competitor, Attribute, Finding, Type (fact, quote, count, inference, unknown), Source, Retrieved date.
Rules: keep quotations word for word. If an attribute is missing for a competitor, write “unknown” and do not estimate it. Mark anything that is your interpretation as “inference”.
After the table, list: (1) attributes where competitors clearly differ, (2) claims that several competitors make in almost the same words, (3) gaps where evidence is missing for more than one competitor.
Evidence: [paste notes, snippets, URLs and dates]
The second list in that prompt is usually the most useful. When four competitors all claim “friendly, expert service”, that claim has stopped meaning anything in your market, and you have learned what not to put on your homepage.
Step 4: Separate facts from hypotheses
Evidence tells you what competitors say and what some customers report. It rarely tells you why. That gap is where a lot of bad strategy comes from, so give hypotheses their own table instead of mixing them into the facts:
| Observation (sourced) | Hypothesis | How to check |
|---|---|---|
| Spoke Street promises 5 days; 6 of 30 reviews mention delays | They are over capacity in spring | Compare review dates by month next quarter |
| Halden hides prices | Prices vary a lot by distance | Read its booking terms; ask your own customers who used it |
A hypothesis can be wrong without embarrassing anyone. A hypothesis filed as a fact cannot.
The verification prompt
Before the matrix goes into a plan, a pitch or a strategy meeting, run a second pass. This prompt works best in a fresh chat with the finished matrix and the source text pasted in, so the model isn’t defending its own earlier work:
Act as a skeptical research reviewer. Below is a competitor matrix and the source text it was built from.
For every row, check: (1) does the cited source actually support the finding, word for word for quotes? (2) is the Type label correct, or is an inference labelled as a fact? (3) is any number, percentage or claim present that does not appear in the sources?
Return a table: Row, Verdict (supported / partly supported / unsupported / mislabelled), Reason, Suggested fix. Do not rewrite supported rows. Do not fill unknown cells.
Matrix: [paste]
Source text: [paste page extracts with URLs]
Then open the links behind anything marked partly supported or unsupported and check it yourself. The model reviewing the model is a filter, not a verdict.
What stays out of the matrix
Some things look like competitor research and aren’t. Market share, revenue and customer counts for private small businesses are almost never public, so unless you have a filing or a statement from the company with a link, those cells stay empty. Search demand belongs to a keyword tool’s dated estimate, not a chatbot’s memory. And generated customer personas are not customer interviews. They are a model’s average guess at a person, which can help you prepare interview questions, but presenting them as what customers told you is making things up with extra steps.
Be careful, too, with anything you plan to publish. Internal notes can say “probably over capacity”. A comparison page on your website that says a named competitor is slow needs evidence you would be comfortable showing to that competitor.
Turning the matrix into decisions
The point of all this is a short list of choices: which claims you can own because nobody else credibly makes them, which customer complaints about rivals you can actually fix, and which gaps you need more evidence on before deciding anything. For positioning work, our restaurant branding guide includes a competitive positioning prompt and the pet-care branding guide has a competitive landscape prompt. Both work better when you feed them this matrix instead of asking the model to research the market from memory. And once you know what you want to stand for, an AI website audit will show whether your own pages say it as clearly as your competitors say theirs.
Rerun the collection every quarter or so, keep the old matrices, and the dated rows will start to show you how your market moves. That is the part no chatbot can give you on demand. If you would rather have someone build the research and the positioning that comes out of it, BBDirector does that work for small teams. Otherwise, more practical AI workflows like this one live here on Direktorium.

