01 — The story
Every piece of content traces back to a scored signal
Marketing teams drown in market noise and guess what to publish. This replaces the guessing with a closed loop — and nothing is fire-and-forget.
A flat verdict — the URL never surfaced in search, share-of-voice didn't move — automatically queues a Refresh opportunity, so failed bets come back with a new angle instead of being quietly forgotten.
Who selects the topics? Nobody — here's how a board row is born
No person curates the board. Every row is generated by a three-step funnel, and the human decision starts at the board, not before it:
- The watch-list decides what's monitored (the only "selection", set once in config): every morning Google News is searched for the last 7 days of "NiCE CXone" OR Genesys OR Five9 OR Talkdesk OR Verint OR Zendesk OR "Salesforce Service Cloud" OR "Amazon Connect" OR "Zoom Contact Center" — the list lives in
entities.json → ingest_query_competitors(see § 04). Typically 25–40 articles return. - Code classifies & scores each article, deterministically: a category from a fixed dictionary (AI agents · Contact center · Enterprise AI · Voice AI · Customer experience · Analyst recognition · Workforce management · Competitive landscape · Market moves), which brands are mentioned, sentiment, and a base score 0–70. No AI yet — the same article always scores the same.
- Claude clusters & names: related articles merge into one opportunity (three Sopra Steria deployment stories → one cluster), and Claude writes the topic line you see on the board, the why it matters, trigger type and format suggestions — plus a bounded −15…+30 score nudge.
Final score = base + nudge. Score ≥ 40 → it becomes a board row. Below 40 → stored for trend maths, never shown. Your team's job begins here: pick rows, request briefs, publish.
How scoring stays honest — the part that makes trends comparable
Each signal gets a deterministic base score 0–70 computed in code — topical relevance, brand/competitor presence, engagement, recency. The same signal always scores the same. Claude only adds a bounded −15…+30 nudge for what code can't judge (newsworthiness, search demand, format gaps). Day-over-day score movement is therefore real market movement, not AI mood. Thresholds: ≥40 lands on the board · ≥60 makes the digest · ≥80 is flagged Immediate.
An editorial gate keeps the board clean: stock-price, earnings and layoff stories are auto-marked Intel-Only — tracked for awareness, never turned into content briefs.
The watch-list contains competitors. It does not contain our own acquired brands — so Cognigy has never once entered the pipeline, despite 146,824 people seeing us for Cognigy searches in the last 28 days. The engine can only see what it is pointed at. Fixing it is one line in entities.json (§ 04, row 2).