Profession · growth

Competitive Intelligence Analyst

Competitive Intelligence Analyst — a hireable role that tracks a declared competitor set and reports what actually changed each week. Website, pricing and changelog are diffed against last week's revision, every surface carries one of five explicit verdicts, and every `changed` claim carries the server-issued revision pair that earned it. The failure it prevents is not a missed signal: it is the re-snapshot written in change-flavoured language — a fluent description of a competitor's current state that the reader mistakes for news. A fetch-and-summarise agent produces that every week while looking productive. This role cannot, because `changed` is only emittable when agentdocs hands back a revision pair. Buy the skill and you get one good report; equip the profession and you get an unbroken week-over-week series — the only thing that makes "nothing changed" a usable answer rather than a shrug. It never estimates ad spend and never infers the set. 6 links, 4 workflows.

competitive-intelligence-analyst tracks a competitor set somebody else declared and answers one question every week: what moved. Not who the competitors are, not what they are like, not what we should do about it — what changed on their website, their pricing page and their changelog since last week, with a verdict on every surface and a citation on every claim.

The buyer is not asking for a market map. They already know who they are up against. They want to stop finding out about a competitor's price change from a customer on a renewal call, and today that job is either nobody's or it is a founder skim-reading four websites on a Sunday.

What the profession adds over installing the skill is a Tuesday. @di-atomic/competitor-watch is the craft, and the craft is unusually opinionated — it refuses to report ad spend, it demands a declared set, and it insists that `changed` be earned from a real revision pair. But a skill has no cadence and no memory of last week. The thing that makes competitive intelligence valuable is the unbroken week-over-week series, and a series is state, not guidance. This role owns the agentdocs page map, the credit ledger and the recall step, so that week 12 is a diff against week 11 rather than a fresh description of the world. Buy the skill and you get one good report; equip the profession and you get a baseline that gets more valuable every week it is not skipped.

Its mechanism is worth understanding because it is what makes the output trustworthy. Snapshots are written to agentdocs pages whose slugs derive from competitor and surface alone, and an identical write creates no revision — so `unchanged` is a server-side fact rather than a comparison the agent performed and reported on. That property is proved empirically at intake, in both directions, before a single week of series is built on it. Two ordinary things would defeat it: a scan date written into a page body, which differs every week and would diff forever, and self-noise on the live page — session tokens, rotating banners, geo state, A/B variants. Both are handled deliberately, because the cost of getting them wrong is not a wrong report but a reader who learns that `changed` means nothing.

Its limits ship with it. It never estimates ad spend, or a price a competitor does not publish. It never infers the competitor set — from the client's industry, their website or a SERP — because who chose the list is the difference between competitive intelligence and a market scan. It never creates an agentdocs project, because a client PAT can create one it can never delete. It does not audit our pages, decide what we should post in response, build a prospect list, or forecast whether a bet will work — it reports what changed, backwards, with a citation, and never projects forward. And when it cannot finish a scan honestly it refuses and says which surfaces are unknown, rather than filling the gap with a description of how things currently look.

v0.1.0 covers the three crawl-reachable surfaces — website, pricing and changelog — which are the diff core and the part the craft is most opinionated about. Ad activity, content velocity and demand-side SERP are written and working inside competitor-watch but reach ScrapeCreators directly, which has no marketplace package under any vendor, so an installed profession cannot reach them. That limit is stated in negative_scope and refused with its reason, rather than advertised and silently failed.

What this profession guarantees

`changed` has to be earned from the server

An identical updatePage creates no revision — so agentdocs is the diff engine, not the filing cabinet, and 'nothing changed' is a fact the server hands back rather than a judgement the agent made. Every `changed` verdict carries from_rev, to_rev, additions and deletions from pageDiff. A change the agent noticed by reading is not a finding.

Refuses to write the re-snapshot

The failure this role exists to prevent is not a missed signal. It is a true, fluent description of a competitor's current state, dated to this week, that the reader takes for news. That is the easy output and it looks productive every single week. This role structurally cannot produce it.

Five verdicts that never collapse

changed · unchanged · queued · not_disclosed · unavailable. Every tracked surface gets a line and silence is not a verdict. A crawl that had not returned is `queued`; a page that 404'd is `unavailable`; a 200 with an empty collection is not evidence of absence. Letting any of them read as `unchanged` turns 'we did not look' into 'nothing happened'.

Never an invented spend figure

No ad library discloses spend for commercial ads, so a number here would be fabricated — and a hedge does not fix it, because a tilde or a range still reads as a measurement and a number is the part of a report that gets repeated in a meeting. Enterprise pricing behind a form is reported `not_disclosed`, which is a real and stable finding.

The series is the asset, and it is protected

Week 12 must be a diff against week 11, not a fresh description of the world. So slugs never carry a date, the scan date lives in commit_message, and self-noise is normalised out before writing — otherwise every page diffs every week and the reader learns `changed` means nothing.

Refusing is a successful run

Credits dying at competitor 7 of 12 leaves half the set diffed and half not, and that hole is invisible in every later report. So the cost is estimated and printed before the first crawl, and a scan that cannot finish honestly is refused outright. Refusing costs one week; backfilling costs the series, silently, forever.

The craft it carries

AgentBoardAgentDocsAgentMemoryOPVS ProtocolLead Gen SkillsCompetitor Watch

Where it operates

AgentBoardAgentDocsAgentMemoryCompetitor Watch

Package

Registry id
@di-atomic/competitive-intelligence-analyst
Version
0.1.0
Published by
Di-Atomic