01 — The ask
The sentence the whole system was built around
The workflow should not just “find keywords.”
It should answer: What topic is emerging? Where is it showing up? What format is winning? What team needs to act? What should they create first? Should it be amplified with paid or PR? the brief · §1, core principle
Six questions. It is worth being blunt about which of them the running system can answer today, because that is the honest measure of the last month — not how many boxes are coloured in.
| Your question | Answerable today? | By what |
|---|---|---|
| What topic is emerging? | yes | Daily news clustering plus weekly velocity — rising and dying, per topic and per company |
| Where is it showing up? | partly | News and search demand, yes. Reddit is built but has no credentials. YouTube and LinkedIn were never started |
| What format is winning? | no | This is your §9 Content Intelligence pass. It remains the largest single gap |
| What team needs to act? | named, not routed | Every opportunity and brief carries a primary and supporting teams. Nothing creates a task for them |
| What should they create first? | yes | A brief with angle, hook, keywords, formats and a publish-ready LinkedIn post |
| Amplify with paid or PR? | no | Your §13 governance rules for this are written down and unimplemented |
02 — What happened when
Thirty-one days, in order
Coral marks the days that changed the design. Teal marks the days something started working.
03 — Spec as code
Four things you wrote that are running unchanged
Not paraphrased into code. These are your words, and then the same thing in the system.
The data shape
{
"source_type": "reddit",
"source_name": "Reddit",
"topic": "AI call center",
"headline": "Best AI tools for...",
"url": "",
"engagement": 247,
"sentiment": "mixed",
"brand_mentioned": false,
"competitors_mentioned":
["Genesys", "Five9"],
"content_format_detected":
"discussion",
"published_at": "2026-03-20..."
}
source_type source_name topic headline url engagement sentiment brand_mentioned competitors_mentioned content_format_detected published_at + captured_at "Normalize Signal (12-field schema)"
Field for field, in your order. We added one timestamp. Every source — news, search demand, Search Console — is forced through this shape, which is the single reason SEMrush took a day rather than a fortnight.
The five trigger types
Search Demand Conversation Format Gap Narrative / PR Customer Signal "These are the trigger classes I'd actually use in n8n."
trigger_type: [ "Search Demand" | "Conversation" | "Format Gap" | "PR/Narrative" | "Customer Signal" ] multi-label, as you specified in the §7 worked example
The thresholds
80–100 = immediate action 60–79 = queue for weekly review 40–59 = monitor only <40 = archive
>= 80 Immediate >= 60 Weekly Queue + digest >= 40 Monitor + board < 40 recorded, then dropped
The schedule
"daily at 7am" optional second run at 1pm for fast-moving topics
07:00 daily second run: not built (one run has been enough — the ledger dedupes, so a second pass mostly finds nothing new)
The opportunity board — your 15 fields against the 15 built
Your §12 named: Opportunity ID · Topic · Trigger Type · Source · Relevance Score · Trend Score · Competitor Presence · NiCE Presence · Recommended Formats · Primary Team · Supporting Teams · Status · SLA · Business Theme · Notes.
Built: the same, with four changes. Relevance Score and Trend Score merged into one Score — two numbers invited the question "which do I sort by", and the second was never independently computable. SLA folded into Status, which now carries the tier directly (Immediate / Weekly Queue / Monitor) rather than a separate day count. Notes became Why It Matters, because a free-text field nobody owns goes stale. And we added Date and source URLs.
Your example ID format OPP-2026-031 became OPP-20260803-002-27248E67 — date, sequence, and a short hash so re-runs update the same row instead of duplicating it.
04 — The one change
Your scoring model, split down the middle
This is important. Without scoring, the workflow becomes noise. the brief · §6
You were right, and it is the one place we deliberately did not build what you drew. Here is exactly what happened to your hundred points.
| Your factor | Weight | Where it lives now |
|---|---|---|
| Relevance to NiCE strategic themes | 25 | unchanged Fixed lookup by topic — still worth exactly 25 |
| Offsite conversation momentum | 15 | unchanged Engagement, on a log scale so one viral post cannot dominate |
| Competitor presence | 10 | merged Combined with brand presence into one 15-point component |
| Search demand potential | 20 | the AI's job These four are the ones a formula cannot count. They became a single bounded adjustment of −15 to +30, and the model is explicitly forbidden from re-scoring the four above it |
| Format gap severity | 10 | |
| PR / newsworthiness | 10 | |
| Customer relevance / proof | 10 | |
| Recency | +15 | we added this Not in your rubric. A three-week-old story and today's story scored identically without it. Worth your agreement or objection |
A board that reshuffles itself when the world has not cannot be used to decide anything, and it makes week-over-week comparison meaningless — which would have quietly destroyed the trend engine too. So the countable half moved into arithmetic and the judgement half stayed with the model, bounded and audited.
Your seven factors all survive. What changed is who does the arithmetic.
05 — Beyond the brief
Three things you did not ask for
Two are the most valuable assets the project has. One is the reason we can answer questions your brief could not have anticipated.
| What | Why it was built | State |
|---|---|---|
| The outcome loop | Your Workflow B ends at task creation — the system hands work out and never hears back. This adds the return arrow: register the published URL, wait 21 days, check whether it ranked, moved share of voice, or earned an AI citation. A flat verdict re-queues the topic automatically with a new angle. | never used Built, credentialed, running daily against an empty table |
| 500 days of our own search history | Your §1 lists Google organic as a surface to monitor. It turned out to be a measurement baseline: Google keeps ~16 months and deletes the oldest day daily, so this was perishable and is now unbuyable. 8.4 million rows. | live Reconciles exactly against Google's own totals |
| AI-answer citation tracking | Your §1 names "AI Overviews / LLM citations" as a goal but no step produces it. We track which AI engines cite us: Perplexity 24, Claude 3, Gemini 3, ChatGPT 3. The eightfold gap is unexplained and is a genuine lead. | stale Last refreshed 17 June — needs a weekly run agreed with its owner |
06 — What we learned
Four things the brief could not have known
Each of these came out of building rather than planning, and each changes something.
| Discovery | What it changes |
|---|---|
| We were about to listen in the wrong room. The brief points Reddit monitoring at customer-service communities. Buying-intent conversation about contact-centre software actually happens in sysadmin and IT-procurement subreddits. | The subreddit list, before Reddit is switched on. A cheap fix now, an expensive one after months of the wrong data. |
| Our own acquired brand was invisible. Cognigy generated 146,824 impressions that the pipeline did not connect to NiCE, because the entity registry did not know we had bought it. | One line of configuration. It is also a warning: the registry is only as current as someone keeps it. |
| Ranking is not our constraint. With first-party data we could finally measure click-through by position. 88% of our non-brand visibility sits below the top three, and careers pages earn 26× the click-through of glossary pages at identical positions. | It reframes §9. The format question is not only "what format wins the SERP" but "why do our own pages convert so differently from each other". |
Six of our pages compete for our biggest term. For ai call center, six nice.com pages rank against each other and earned one click between them — the glossary entry outranking the commercial page. |
The first content action is a merge, not a brief. That is the opposite of what a "publish more" system would recommend, and the pipeline found it. |
07 — Still a drawing
What has not been built, and the honest reason
Nine of your twenty-four boxes have no code behind them. They are not evenly distributed, and the pattern is the point.
| Not built | The real blocker |
|---|---|
| Workflow B — task creation (§7) | Not engineering. Nobody has agreed which system the tasks go into. Your §10 lists Monday.com under alerts; building it as the task system would have meant five task branches pointed at a tool no one had chosen |
| Content Intelligence pass (§9) | The largest genuine gap and the one that answers "what format is winning". Needs no decision from anyone — it is simply not started |
| YouTube and LinkedIn | Never started. LinkedIn has real API restrictions; YouTube does not |
| Fully built and idle. Needs an app registration, and the subreddit list corrected first | |
| Customer / VOC signal | No agreed source system. Needs a conversation with sales leadership, not a sprint |
| Paid and PR escalation (§13) | Your governance rules are written and unimplemented. They depend on Workflow B existing |
| Weekly review dashboard | Stood in by the Sheet and these documents |
That is not a complaint about decision-making speed; it is a diagnosis. The remaining work is mostly decisions, not engineering, and they are small ones. The digest channel has been open since 9 July and is a single URL.
→ Section-by-section verdicts (004) → Your diagram, box by box (005) → How the system works now (009) → What the search data says (007)