Set the model up · 13 min read · Updated 25 Sep 2026
AI Agent Prompts for Competitor Monitoring
Work nobody is watching fails differently from work somebody reviews. Nothing arrives to tell you an input stopped carrying anything, because a quiet report is what a quiet week looks like too. That makes the reporting rules more important than the analysis rules, and it puts the agent's own record of what it compared against at the centre of the brief.
A scheduled competitor report fails without saying so
Work somebody reviews fails loudly. They read the output, something looks wrong, they ask. Work that runs on a schedule has none of that, and the failure mode changes shape completely.
The dangerous case is not a wrong answer. It is a report that arrives on time, reads normally, and was built on an input that stopped carrying anything three weeks ago. Nobody investigates a quiet report, because a quiet report is exactly what a quiet week produces.
So the most important instruction in a recurring brief is not about analysis. It is: tell me what you read. Not what you found, what you read, one line per input, every single run. Four lines nobody looks at until the week one of them changes. How long a broken input goes unnoticed is also measurable: time to insight lengthens quietly when the collecting half has stopped.
The four lines that make an unattended competitor run auditable
An agent's memory is a file it writes at the end of a run
A model begins every run knowing nothing about the last one. There is no continuity to draw on, so “what changed” is only answerable if the earlier state is handed over as text. The agent has to write that text itself, at the end of each run, for a reader that is only ever the next run.
Which makes it the one output nobody ever looks at and everything depends on. And it is usually written in the wrong form. The natural thing to record is a summary of the run, and a summary is exactly what destroys the next comparison.
| What gets recorded | What the next run can see |
|---|---|
| The captured values: figures, tier names, entry titles, exact wording | A real difference, down to one word. This is the only form that survives a comparison. |
| A summary of what each input said | Almost nothing. A small change is smoothed away in this summary and in the next one, so it never appears as a difference. |
| The agent's own conclusions from the run | Its own inferences, returned next week as findings, because nothing in the file marks them as inferences. |
| Nothing, because the run found no changes | Everything, as new. A run with no changes still has to print the state it compared against. |
Carry forward what an input stopped telling you
When an input comes back empty, the baseline for it should not be overwritten and should not be deleted. Carry the last known values forward, stamped with the date they were captured.
That one rule is what lets a later run say something useful: this figure was last seen on 1 September, and the input carrying it has been empty for three weeks. Without it, an input that breaks quietly erases its own history on the first run after it breaks. Pricing is the input where that hurts most, because competitor pricing changes in weeks and a lost baseline cannot be reconstructed from the live page.
What briefing an agent for competitor monitoring needs
Three inputs, and the middle one is the agent’s memory. The third is the one teams leave as a sentence about judgement, which is the one thing a scheduled job cannot apply consistently.
The inputs somebody has connected, named one by one
- Where it comes from
- Whatever your team has wired up: saved pages, exports, a feed, a platform. The fastest-moving ones decide the schedule, so a competitor's roadmap and a pricing page belong on different cadences.
- What good looks like
- A named list, in a fixed order, with one line saying what each input covers. The fixed order is what lets you notice that the fourth line has stopped appearing.
The state the last run recorded, as captured values
- Where it comes from
- The previous run, which has to write it. This is the agent's only memory: a model starts every run knowing nothing about last week, so a comparison needs the earlier state handed to it.
- What good looks like
- The figures, names and exact wording as captured, rather than a summary of them, so a one-word change is still visible.
The threshold, written as something an agent can apply
- Where it comes from
- Your own decisions. Look at the last three things that actually changed somebody's mind and describe what they had in common, concretely enough to test.
- What good looks like
- Named triggers: a figure moving, a capability crossing a tier, a competitor named in a job title, a claim appearing on a homepage.
- Then run it
- Configure the brief where the schedule lives, then break one input on purpose and read the report it produces before anybody starts relying on it.
- Before the output leaves the building
- Read the input register before the findings. An input reported as unchanged that nobody can prove was read is the one thing a quiet report cannot tell you apart from a working one.
List the inputs in a fixed order and keep that order. It sounds like housekeeping. It is what lets somebody skimming the fourth report in a row notice that the fourth line has stopped appearing. That register is the whole difference between competitor tracking and a weekly email that happens to arrive.
Prompts for briefing an agent on competitor monitoring
Four blocks, and only the first is the brief. The other three are additions to it, and each one exists because of something that goes wrong when nobody is in the conversation.
The standing brief for a scheduled run, held wherever the schedule is configured.
You run on a schedule and report to [AUDIENCE]. Each run, read the inputs I have connected and compare them with the state recorded at the end of your last run. Report only what changed. For each change: what it was, which input showed it, when, and whether it needs a decision. A run with no changes reports "no changes" and stops - do not manufacture an item to fill the report. Rank by whether it changes a decision, never by recency. Two things you must not do: do not assert a change you cannot point to in an input, and do not summarise the same change twice across runs. At the end of every run, record the state you compared against, so the next run has a baseline.
Add this to any recurring brief. It is the one instruction that makes a broken input visible.
Before reporting any change, print an input register. One line per input I have connected, in the order I listed them, each reading one of: READ, with how many items and the date range they cover EMPTY, meaning the input was present and carried nothing usable MISSING, meaning the input was not there at all For EMPTY and MISSING, say what the previous run recorded for that input, so I can see what has gone quiet. Never write "no changes" for an input that is EMPTY or MISSING. For those, write UNKNOWN THIS RUN. Only after the register is printed, report the changes.
Add this once more than one input can show you the same change, which is almost immediately.
Before reporting, group what you have found by the underlying change rather than by where you saw it. One competitor change often appears in several inputs at once: a changelog entry, an edit to a saved page, a press release. That is one event and one line. For each group, report the change once and then list every input that showed it, with the date each one showed it. The earliest date is the one that matters; the later ones tell me which inputs are slow. Then check the change against what you reported in the previous run. If it was already reported, do not report it again, even where a different input has only just caught up with it. Say how many findings you merged, and how many you dropped as already reported.
The end of every run. What this records decides what the next run is able to notice.
Close the run by recording the state you compared against, for the next run to use. Record the captured values themselves: figures, tier names, entry titles, dates, and the exact wording of any sentence you treated as a claim. Do not record a summary of what the inputs said. Do not record your own conclusions. A summary compared against a summary loses small changes, and a conclusion recorded as state comes back as a finding next time. Where an input was EMPTY or MISSING this run, carry forward the last known values for it and mark them with the date they were captured. Print the baseline in full, even when nothing changed.
Notice what the register forbids rather than what it requires. Writing “no changes” about an input that carried nothing is the specific sentence being banned, and banning a sentence works where asking for care does not.
The fourth block is the two-state problem that every comparison job has. Two saved copies of one page differ in far more ways than anybody expects, and only one kind of difference is news. A pricing page diff turns on sorting those kinds apart before anything gets reported.
Where a competitor monitoring run reports nothing as no change
We ran a scheduled brief against three connected inputs and a baseline recorded three weeks earlier. One input was a real developer changelog. One was a job board export. One was a saved copy of the vendor’s own pricing page, and that page is the interesting one: 74 KB of HTML containing no prices and no tier names at all.
Claude Opus 5given a scheduled brief, a baseline recorded on 1 September 2026, and three connected inputs. One was a real developer changelog with six entries. One was a saved copy of the vendor's own pricing page, which is 74 KB of HTML containing no prices and no tier names at all. One was a job board export
2026-09-24
Changes since the last run. One, developer platform deprecations announced. End of support for v1-v3 APIs, legacy public apps and legacy private apps, announced 15 September 2026, enforced September 2027. Two, Fall Spotlight 2026 developer updates announced 15 September 2026, with a new developer platform version generally available. Both need a decision: any account of ours running an older integration has dated migration work ahead of it. No pricing changes this run. No changes in hiring.
Checked against HubSpot's Sales Hub pricing page, whose HTML carries no prices
The two changes are real, correctly dated and correctly ranked. The fourth sentence is the problem. No pricing changes this run was written about an input that contains no prices, so there was nothing there to change. A file that exists and carries nothing reads exactly like a file that exists and is unchanged, and the report turned the second into the first. A reader now believes a competitor's pricing was checked on 24 September. Nobody checked anything.
Conflation
Claude Opus 5the same three inputs and the same baseline, with an input register required before any finding and the words "no changes" forbidden for an input that carried nothing
2026-09-24
Input register. Changelog: READ, 6 entries, 31 July to 15 September 2026. Pricing page: EMPTY. The saved page carried no prices and no tier names, so nothing could be compared. The 1 September baseline recorded three tier names and three figures for this competitor, none of which appear in this capture. Pricing is UNKNOWN THIS RUN. Job board: READ, 0 postings returned, against 137 recorded on 1 September, which is itself worth checking. Changes. One, end of support for v1-v3 APIs and legacy apps, announced 15 September 2026, enforced September 2027. Two, Fall Spotlight 2026 developer updates, announced 15 September 2026.
Checked against HubSpot's developer changelog, where both September announcements are dated
Same two findings, and two new ones that are about the instrument rather than the competitor. The pricing input is broken and now says so. The job board returned zero postings against 137 in the baseline, which the first run had reported as no changes in hiring. Both of those are more urgent than either real change, because a competitor shipping a deprecation costs you a decision, while a monitoring input that quietly stopped working costs you every decision after it.
An empty file reads exactly like an unchanged one
The first report found both real changes, dated them correctly and ranked them sensibly. Then it wrote: no pricing changes this run.
That sentence was written about a file with no prices in it. Nothing could have changed, because nothing was there. And the sentence is the most reassuring one in the report, so nobody would ever query it. A reader now believes a competitor’s pricing was checked on 24 September, and it was not.
The saved page was not doctored for this run, which is the part worth dwelling on. Plenty of real pricing pages build their tables after the page loads, so a saved copy is a large, complete-looking file with the figures missing. An input like that never errors. It just quietly agrees with whatever the baseline said.
The second run found the broken instrument first
With the register required, two new items appeared, and neither was about the competitor. The pricing input was reported as empty, with the three figures the baseline held and the note that none of them appear in the current capture. And the job board came back with zero postings against 137 three weeks earlier.
The first run had described that as no changes in hiring. Going from 137 open roles to zero is either the most dramatic hiring news of the quarter or a broken export, and a report has to make somebody look. Anybody who has read a competitor’s job board knows which of the two it is, which is the argument for a human seeing the register. Both of these matter more than either real change: a competitor shipping a deprecation costs you one decision, and a monitoring input that stopped working costs you every decision after it.
A threshold an agent can apply, not a quality bar
Most briefs say something like “report what matters” or “only things that need a decision”. Both sound right and neither is a rule. They get re-interpreted on every run, so the bar moves, and two consecutive reports stop being comparable even when the world did not change.
An operable threshold names triggers instead. A figure moving. A capability crossing a tier boundary. A competitor named in a job title. A claim appearing on a homepage that was not there before. Each of those can be applied identically every week by anything, including a person.
Deduplicate on the change, not on the wording
One competitor change routinely shows up in three inputs at once: a changelog entry, an edit to a pricing page, and a press release. Three items in a report, one event in the world.
The fix is a rule about identity rather than about length, and it is the third block above. Group by the underlying change, list the inputs that showed it, and report the earliest date. The later dates are worth keeping for a second reason: they tell you which of your inputs are slow.
The same rule handles the across-runs case, which is the more common complaint. A change reported last week arrives again this week because a second input has only just caught up with it. Deduplicating on the event rather than on the wording catches both, and asking the run to say how many findings it merged is what makes the rule visible.
How to automate the competitor inputs an agent reads
Everything above is about the brief, and the brief is the easy half. A scheduled run is only as good as what somebody connected to it, and the inputs are where this work actually breaks. Saved pages go stale, exports change format, a board stops returning anything.
There is no version of this where the reading solves itself from a prompt. A brief cannot connect to a source, cannot notice that a saved copy has lost its figures, and cannot tell you that an export has been empty since the first of the month. Those are properties of the plumbing rather than of the instruction.
Which is also the honest limit on what any of it delivers. An agent can tell you what changed and when it was visible. Whether it matters depends on your roadmap and your pipeline, and a competitor tracking sheet is what turns a stream of reports into something anybody can look back through.
Flares is the connected half of this. It follows competitor pricing, product, documentation and messaging, dates every change, and keeps a record of what was checked and when, so an unchanged competitor and an unchecked one never arrive as the same line. What to do about a change is still a decision somebody has to take.
Competitor inputs that do not go quiet
Flares watches competitor pricing, product and messaging continuously, so a quiet week is a fact rather than a guess.
Discover Flares14-day free trial · 30-second setup
Briefing an agent to do this on a schedule FAQ
What is an AI agent prompt for competitor monitoring?
A standing brief for work that runs on a schedule rather than when somebody asks. The brief has to say what to read, what counts as worth reporting, and what to record at the end so the next run has something to compare against.
Can an AI agent monitor competitors on its own?
An agent can read inputs somebody has connected and report what differs from a recorded state. Noticing a change needs two looks separated by time, and a model has no memory of last week, which is the same limit behind every recurring competitor digest. What an agent adds is the schedule and the written baseline, not the noticing.
Why does a scheduled competitor report fail silently?
Because a quiet run and a broken run look identical. Nobody investigates a report that arrives on time and says little, since that is exactly what a quiet week produces. The failure only becomes visible weeks later, usually when somebody finds a change by hand that should have been reported.
What should an agent record at the end of a run?
The captured values themselves: figures, tier names, entry titles and the exact wording of any claim. Not a summary. A summary compared against a summary hides small changes in both, and a one-word change to how a competitor describes itself is often the most interesting thing in a month.
How do you stop an agent inventing something to report?
Make an empty report a legal and named outcome, then remove the reason to fill one. An agent asked to produce a report will produce a report, and the quiet weeks are when it reaches for last month's news or for a change it cannot point at in an input.
How should a monitoring threshold be written?
As triggers rather than as a standard. "Report what matters" is re-interpreted every run, so the bar moves and two reports stop being comparable. A figure changing, a capability crossing a tier boundary, a competitor named in a job title: each of those can be applied the same way every week.
What happens when one input stops working?
Usually nothing visible, which is why the register matters. An input that carries no content is reported as unchanged unless the brief forbids it, and unchanged is the most reassuring word in a monitoring report. Requiring one line per input, read or not, costs four lines and catches it in the first run.
How often should a competitor monitoring agent run?
Match the schedule to the fastest input rather than to a reporting rhythm. Pricing pages and changelogs change in days, filings once a year, so one weekly run over everything either misses things or reports the same unchanged material fifty times. The point of the faster cadences is early signal detection, and nothing else on the list needs them.
Should an agent report the same change twice?
Never across runs, and not across inputs within a run either. One change often shows up in three places: a changelog entry, a pricing page edit and a press release. Deduplicating on the underlying change rather than on the wording is what keeps a report the length people keep reading.
Can an agent decide what a competitor change means?
An agent can say what changed, where it was visible and when. Whether it matters depends on your roadmap, your pipeline and what your team can absorb, none of which is in any input. Ranking by a named trigger is honest; ranking by importance quietly means ranking by what sounds important.
What is the difference between an agent brief and a system prompt?
A system prompt governs how answers are formed whenever somebody asks something. An agent brief governs work that happens with nobody in the conversation, so it carries rules about reporting, state and inputs that a standing competitive instruction has no reason to include.
Automated competitor monitoring you can audit
Flares records what it checked and when, so an unchanged competitor and an unchecked one are never the same line.
Discover Flares14-day free trial · 30-second setup