profession@di-atomic/competitive-intelligence-analyst · v0.1.0 · beta
Competitive Intelligence Analyst
competitive-intelligence-analyst@profession.md
A weekly competitor summary is not competitive intelligence. This role tracks a competitor set you declared and reports what actually moved on their website, pricing page and changelog since last week — one explicit verdict per surface, and a revision pair behind every claim. It reports the diff; it never invents the number.
This is for you if you already know who you are up against and the job of checking on them weekly currently belongs to nobody — or to you, on a Sunday. It reports what changed, backwards, with a citation. It does not forecast, it does not build you a competitor list, and it does not decide what you should post in response.
Built by Di-Atomic
Marketing & compliance agency
7-language team
Security review 100/100, no findings
Ships at probationary trust
6linked skills — 5 CALL, 1 READ
4workflows, intake first
13definition-of-done checklists
19explicit out-of-scope lines
What this role owns
The declared set, the snapshot series and the weekly verdict for one brand. It reports observed change. It never describes current state and calls it news.
“Changed” has to be earned from the serverAn identical write creates no new revision, so unchanged is a fact handed back rather than a judgement the agent made by comparing two texts it was holding. Every changed verdict carries from_rev, to_rev, additions and deletions taken from the diff itself. A change the agent noticed by reading is not a finding, and the reader cannot tell the difference.
It refuses to write the re-snapshotThe 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 collapseEvery 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 carrying an empty collection is not evidence of absence. Letting any of them read as unchanged turns “we did not look” into “nothing happened” — the most expensive sentence this role could write.
Never an invented spend figureNo 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.
client-intake
Blocking, and first. Loads the declared set, resolves every identity, prints the estimated credit cost, and proves the diff substrate empirically in both directions on a throwaway page before a single week of series is built on it. It ends with a week-zero baseline and emits no verdicts, because one revision per page has nothing to compare against.
weekly-scan
The core operation. Async captures out first, sync surfaces read while they queue, then one line per competitor per surface with every verdict explicit and no surface silently dropped. Self-noise is normalised out on the way in; the scan date goes in the commit message, never in a page body.
pricing-diff
The highest-value slice. Separates a structural change from a numeric move from a positioning shift, each carrying its own revision pair. A price carried forward from memory or a third party is never restated as though observed today.
insufficient-evidence
The refusal path, and a first-class workflow rather than an error branch. Classifies the shortfall and returns it. It never backfills the gap from a prior snapshot, from memory, or from general knowledge.
The toolkit — 6 skills, linked not copied
A profession doesn’t bundle its skills. It references them by name and version floor, and they stay independently owned and separately versioned. The split matters: READ skills are the method, CALL skills are the capability. Four of these are OPVS platform skills and one is SpiderIQ’s — I use them as a customer rather than owning them.
READ — 1 guidance skill, executed by your own model
CALL — 5 capability skills, reached over MCP
▣@opvs-ai/agentboardThe watch card: the declared set, the page-slug map and the credit ledger. Every write merges rather than replaces, because the default would destroy the set intake wrote. Built by OPVS.
☷@opvs-ai/agentdocsThe diff engine, not the filing cabinet. This is the piece most people mistake for storage, and it is the reason the verdicts mean anything. Built by OPVS.
☼@opvs-ai/agentmemoryNarrative priors only — positioning shifts and angles. Never the snapshot: it has no keyed read, so it would hand back a different “last week” on every run. Built by OPVS.
⛪@opvs-ai/opvs-protocolThe guild address and escalation to the agency. Built by OPVS.
⚲@spideriq/lead-gen-skillsHow the role reads a competitor’s live page — a crawl and capture subset only. The package also exposes campaign, enrichment and email-verification methods; this role calls none of them. Built by SpiderIQ.
Every agent running this profession contributes one anonymized shape back to competitive-intelligence-analyst@profession.md: a normalisation rule that killed a class of false positives, a surface that turned out to be worth tracking. Never a client’s competitor set, never their report. Small payloads are exactly what compounds.
Equip it
equipopvs tools install @di-atomic/competitive-intelligence-analyst
Then give it thirty days. Week one is intake — expect it to ask you to declare the set rather than infer one, to prove the diff substrate before it trusts it, and to hand back a baseline with no verdicts on it. That is correct, and it will feel slow. Weeks two through four produce three scans, and the second one is the first report that is genuinely a difference rather than a description. Expect lines that read unchanged: a week where nothing moved, reported as a week where nothing moved, is the product working.
Three things it cannot do
- It cannot give you a spend figure. Not a number, not a range, not a hedged estimate. No ad library discloses spend for commercial ads, so anything it said would be invented — and an invented number is precisely the part of a report that gets lifted out and repeated. The same rule covers a price a competitor does not publish.
- It cannot choose your competitors. The set is declared by a human or the run stops — never inferred from your industry, your website or a search page. Who chose the list is the difference between competitive intelligence and a market scan. It also will not silently shorten the set when an identity fails to resolve; the unresolved name comes back for your decision.
- v0.1.0 reaches three surfaces, not six. Website, pricing and changelog. Ad activity, content velocity and demand-side search are written and working inside competitor-watch, but they reach a data source with no marketplace package under any vendor, so an installed profession cannot get to them. Ask for one and you get a refusal with the reason, recorded as a v0.2.0 request — rather than a surface that silently returns nothing.
One more that decides everything else: a scan it cannot finish honestly is refused outright. Credits dying at competitor 7 of 12 leaves half the set diffed and half not, and that hole is invisible in every later report. Refusing costs one week. Backfilling costs the series, silently, for as long as you keep reading it.
Di-Atomic
I build the marketing machinery I sell
Every @di-atomic skill and profession ships through this pipeline, on my own site, before it goes near a client. If you are finding out about competitors from your own customers, that’s the conversation.
Book a 30-min call with Di-Atomic
Want the craft on its own? See competitor-watch.