ResearchUse case

Competitor analysis with Claude, every week: track pricing, launches and messaging

To run competitor analysis with Claude every week, give it a fixed list of 3 to 5 competitors and the pages that matter (pricing, changelog, homepage), save a dated snapshot of each page, and have it report only what changed since last week, with the source URL in the same sentence as every claim.

You get
A weekly report of what changed at each competitor (pricing, launches, messaging), every claim linked to its source page.
Runs
Every Monday at 07:30 in your time zone
Connects
Slack (optional)

How does this routine work, step by step?

  1. On schedule, the agent opens each competitor's pricing page, changelog or blog, and homepage.
  2. It saves a dated text snapshot of each page in your workspace.
  3. It compares each snapshot with last week's and keeps only real changes: prices, plan limits, new features, new headlines.
  4. It writes a short report with the old text, the new text and the source URL in the same sentence for every change.
  5. You get the report as a deliverable to read, and an approval only if you asked it to post a summary to Slack.

What should a weekly competitor analysis with Claude track?

Track the pages where a competitor's decisions show up first:

  • Pricing page. Plan names, prices, seat minimums, usage limits, "annual only" conditions.
  • Changelog or release notes. What actually shipped, with dates.
  • Homepage headline and main claims. Repositioning shows up here before it shows up in a press release.
  • Docs or integrations page. New connectors are a common signal of who they are chasing.

Competely's guide to competitor analysis with Claude makes the point that matters most here: pricing pages "change without notice," so "treat every price as unchecked until you have the competitor's live pricing page open in another tab." A weekly snapshot is how you stop treating prices as unchecked.

Why does a one-off Claude competitor analysis go stale?

A one-off prompt gives you a good essay on the day you ran it. Run the same prompt next month and the output comes back in a different shape, so comparing the two tells you about Claude's mood, not the competitor. Competely's guide notes the same drift: "one comes back in tables, another in bullets."

The fix is to store the raw page text, not the analysis. The agent compares this week's text with last week's, and the analysis only describes the difference. That is the step the top results leave out: they show the prompt, but not the memory between runs.

How do you set it up yourself with Claude Code or Codex?

  1. Keep a competitors.md with names and the exact URLs to watch.
  2. Write a skill that fetches each URL, saves the text to snapshots/<competitor>/<date>.md, and diffs it against the previous file.
  3. Schedule it. Claude Code routines run in the cloud, but the default environment allows "only the default allowlist" of domains, and requests to anything else "fail with 403." Competitor websites are not on that list, so you edit the environment's network access before the first run.
  4. Keep the snapshots somewhere that survives between runs. A routine clones your repository fresh each time, so snapshots must be committed back or stored outside the session.
  5. With Codex, scheduled tasks on the web "don't keep a local folder or worktree available between runs," so the snapshots need a connected store there too.

None of this is hard. It is just four decisions you make once and then maintain.

How do you start it in Kavela in about 10 minutes?

Kavela keeps files in a durable workspace between runs, so the snapshots have a home without extra wiring. The setup you still do:

  1. Paste the prompt below into Kav in your Kavela workspace and fill in your competitors.
  2. Connect Slack only if you want the summary posted there.
  3. Read the first report, which is the baseline, and tell Kav what to cut or add. That feedback becomes a standing rule for later runs.
Every Monday at 07:30 <your time zone>, check my competitors and tell me what changed since last week.

Competitors and pages to watch:
- <Competitor A>: <pricing URL>, <changelog URL>, <homepage URL>
- <Competitor B>: <pricing URL>, <changelog URL>, <homepage URL>
- <Competitor C>: <pricing URL>, <changelog URL>, <homepage URL>
My product, for context: <one line on what you sell and to whom>.

Each run, save the text of every page as a dated snapshot in my workspace under competitors/<name>/<date>.md, then compare it with the previous snapshot.
Report only real changes: prices, plan limits, new or removed features, new headlines or claims. Quote the old text and the new text word for word, and put the source URL in the same sentence.
If a page fails to load, say so instead of guessing. Never invent a price, a feature or a date.
End with one paragraph: which change matters most for us and why.
Send the report to me as a deliverable. Only if I say so, post a 5-line summary to <Slack channel> after I approve it.
Run it once now as the baseline, then set it as a weekly routine.

What goes wrong with automated competitor monitoring?

  • Noise from page furniture. Cookie banners and rotating testimonials look like changes. Tell the agent to ignore them by name after the first run.
  • Pages behind sign-in or bot checks. Some pricing pages block automated reads. The agent should say "page failed to load" rather than fill in from memory.
  • Scope creep. Ten competitors produce a report nobody reads. Keep three to five.

Pair it with a weekly SEO audit of your own site to see both sides of the market, or fold the headline changes into your daily briefing. For the bigger picture on handing whole jobs to agents, read how to use AI more efficiently.

Stuck on setup? Ask in the Kavela Discord.

Frequently asked questions

Can Claude do competitor analysis without a paid tool?

Yes for public pages: pricing, changelogs, homepages, review sites and docs. Claude reads them well. What it cannot see is private data such as a competitor's traffic or ad spend, which needs a paid data source.

Why snapshot pages instead of asking Claude for a fresh analysis each week?

A fresh analysis reads differently every week, so you cannot tell what changed. A dated snapshot gives the agent last week's exact text to compare against, and the report only lists real differences.

How many competitors should one routine track?

Start with three to five. That is the scope Competely's guide calls normal, and it keeps the weekly report short enough to read in one sitting.

Does it work with Codex instead of Claude?

The method is the same with either. The job is fetching pages, saving text and comparing it, which both do well; the scheduling and network access are what differ.

How do I keep the report honest?

Require a source URL in the same sentence as each claim, and tell the agent to write 'no public source found' instead of guessing. Check any price against the live page before you act on it.

Related use cases