01 — The operating principle
Every action traces back to a number
The rule we build to: nothing reaches the opportunity board because someone had a hunch. Each row carries the source, the measurement, and the score that put it there — so a decision can be argued with, and a bad decision can be traced.
An AI-only score drifted between runs — the same article scored 72 one day and 62 the next, so "movement" was noise. The formula now produces the same number for the same input every time, which means week-over-week trends are real. The AI is kept for the judgement code can't make, and it's capped.
02 — Coverage
What data we actually have
Honest status per source. "Live" means it runs unattended and writes to the board. Nothing here is aspirational, and the last row is uncomfortable.
| Source | Answers the question | Status | Note |
|---|---|---|---|
| Google News | What is being said about our market and our competitors, today? | live | Daily 07:00, free |
| SEMrush — search demand | What is the market actively searching for, and is that demand rising or dying? | live | 12 keywords + Monday discovery of new ones |
| Trend engine | Which topics are accelerating vs fading, across all sources? | live | Mondays 08:00, no AI cost |
| Outcome loop | Did what we published actually win visibility? | live | Waiting on our first real publication to start a cycle |
| Google Search Console | What did Google actually show people, and did anyone click? | access granted today | Read live on 30 Jul — see §05. Daily feed still to build |
| SEMrush — position tracking | Where do we rank on 3,999 keywords, and what moved this week? | found, unused | Already configured and paid for — see §04 |
| SEMrush — AI Overview | Which of our keywords now show an AI answer instead of links? | found, unused | 848 keywords affected today |
| What do practitioners and buyers say unprompted? | workaround ready | No official API access; two verified routes in without it | |
| Sales win/loss | Why do we actually win and lose deals? | not started | Needs a source agreed with sales leadership |
| The engine host | Is any of this running right now? | paused 6 days | Local install; last run 24 Jul — see §07 |
Why Reddit is harder than it looks — and how we get it anyway
Reddit closed its free public data endpoints, and its commercial tier requires approval and a substantial minimum spend. We tested this directly: the old endpoints return an access-denied page.
Two routes were verified working instead. One: Reddit still publishes standard subscription feeds per community — free, no login, usable today. Two: SEMrush can show us which Reddit discussions rank in Google for our commercial terms, with monthly search volume attached.
Route two produced an uncomfortable finding: the communities we had planned to monitor were the wrong ones. The discussions with real buying intent — platform comparisons, pricing threads, "Genesys vs Talkdesk" — sit in IT and software-buyer communities, not in customer-service communities. We were about to listen in the wrong room.
03 — The machine
Nine workflows, one spine
Adding a data source does not mean building a new system. Every source plugs into the same normalize step and the same scoring spine — so source number ten costs a fraction of source number one.
| Workflow | What it does for the business | Status |
|---|---|---|
| Signal spine | The daily run. Collects, scores, clusters into opportunities, writes the board, sends the digest. | deployed |
| Ops error alert | If anything breaks, it's recorded and announced instead of failing silently. | deployed |
| Normalize signal | The universal adapter — every source becomes the same 12 fields. | deployed |
| Content brief agent | Turns a board row into a writable brief. | deployed |
| Search tool | Reusable web-search capability the brief agent calls. | deployed |
| Trend report | Trending vs dying per topic, weekly, with zero AI cost. | deployed |
| Outcome loop | Publish → verify in search → send back for refresh. This is what closes the loop. | deployed |
| SEMrush ingestion | Search-demand signals + weekly discovery of keywords we aren't tracking. | deployed |
| Plug-in demo | The copy-me template that proves a new source is a day of work. | deployed |
| Reddit ingestion | Built and validated; needs the access route swapped (§02). | staged |
| Search Console ingestion | First-party clicks, impressions and position per query and page. | not built |
How much work is a new data source, really?
One small ingest workflow — typically five to eight steps — that ends by handing its output to the shared normalizer. It inherits scoring, clustering, deduplication, the board, the digest, error alerting and trend history for free.
Concretely: SEMrush went from nothing to live in a single working day, and it reuses every downstream component the news source already proved.
04 — SEMrush
We were using two of seventeen capabilities
A full audit of our SEMrush licence tested every available report against our production key. The cost of that audit was 0.1% of our monthly quota. The result changes what we can promise.
A nice.com rank-tracking campaign is already configured, already paid for, updating daily — and nothing reads it. It covers 3,999 keywords curated by the SEO team, with position movement over 1, 7 and 30 days already calculated, and flags which keywords Google now answers with AI instead of links.
That 1,299 declined vs 909 improved split is the kind of fact this pipeline exists to surface early. Today nobody sees it until someone opens a dashboard and looks.
What the licence covers, by business question
| Question a manager asks | Available | Using it? |
|---|---|---|
| What is the market searching for, and is it growing? | Search volume + 12-month trend per keyword | yes |
| What should we write next? | Real questions people ask; who currently owns each result page; how hard each keyword is to win | no |
| Where are we winning and losing, this week? | 3,999 keywords, daily, with movement precalculated | no |
| Is AI eating our search traffic? | AI Overview presence per keyword — 848 affected | no |
| What do competitors rank for that we don't? | Automatic competitor discovery + keyword gap analysis | no |
| Is our site technically healthy? | 1.4M backlinks monitored, plus site audits on nine competitor domains | no |
Technical detail — verified access, endpoints and limits
All seventeen Analytics report types and all five backlink report types returned live data. The rank-tracking campaign is reachable through the Projects API; note that it is addressed by campaign identifier, not project identifier — a detail that costs an hour to discover.
Not available on our key: the Traffic Analytics add-on (separate subscription — it would show how much traffic Reddit sends to our site and competitors'). The SEMrush marketplace app for Reddit trends has no programmatic access at all and refreshes monthly, so it can inform a human decision but cannot feed the pipeline.
Quota: roughly 3.99 million units remaining. A daily rank-tracking read plus enriched content briefs is a low-single-digit percentage of that per month. Cost is not the constraint here — attention is.
Full capability map with every endpoint, cost per call and evidence: 02-ideas/002-semrush-capability-map.md
05 — Search Console new today
Our own data disagrees with our assumptions
Access to www.nice.com was granted on 30 July. Everything below was read directly from Google the same morning and covers the 28 days to 27 July. It is the first source that reports what Google showed rather than what a third party estimates.
Two million impressions on genuinely relevant, on-topic searches produced 1,934 clicks in 28 days. Meanwhile off-topic pages — reverse phone lookup, proxy servers, unknown-caller queries — earn more clicks than every contact-centre term combined.
Our non-brand click rate is 5.04% at position 1 and 0.77% at position 2. A normal curve is roughly 30% and 15%. Ranking well is currently worth very little to us, and no amount of new content fixes that.
Superseded 2026-08-04. Measured against 500 days rather than the initial sample, the figures are 2.4% at position 1 and 0.51% at position 2, and the “we rank, nobody click” framing turned out to be misleading: 88% of our non-brand visibility sits below the top three, so we mostly are not ranking where the volume is. Careers pages earn 4.73% at positions 5–10 while glossary pages earn 0.18% at the same positions — same domain, 26× apart. See 007-search-findings.
Three findings a person can act on this week
| Finding | The number | What it implies |
|---|---|---|
| We rank #2 and get nothing for "seamless customer service" | 22,029 impressions 0 clicks | Either an AI Overview absorbs the answer, or the title and description are unclickable. One manual look at that result settles which — and that answer redirects the roadmap |
| The glossary outranks the pages that sell | 2+ URLs per term | Our glossary entry and our solutions page compete for "call center software"; two different glossary entries compete for "contact center automation". A consolidation job, not a writing job |
| The market renamed what we sell | "ai call center" +554% "performance management" −79% | Same product, different words. Our titles and hubs are still largely written in the falling language |
Google keeps roughly 498 days of history — 1.12M clicks and 192M impressions — and drops the oldest day every day. Every other source in this pipeline accumulates history going forward; this one hands us sixteen months on day one and destroys a week of it every week we wait. A one-off backfill is the most time-sensitive item on this page.
Technical detail — what the access actually permits, and one trap
Thirty-six live probes: every query, page, country, device and date dimension works, along with image and news search types. There is no Discover or Google News presence at all — zero rows, which for a company publishing this much thought leadership is itself worth a conversation. URL Inspection works at our permission level, which was not expected.
The trap: Google hides low-volume queries. Summed by query, we see 29,878 of the property's 52,526 clicks — 43% are invisible at that grain. Summed by page, we recover all of them. So any total must be reported by page; query data is for discovery and intent only. Getting this backwards would produce confidently wrong numbers.
Full capability map and the first insight pass: 02-ideas/003-gsc-capability-map.md
06 — Data to action
How a number becomes a decision
Four outputs, each traceable to a measurement rather than an opinion. This is the answer to "so what do we do with all this data".
Predict
- Rising demand before it peaks. Twelve-month interest curves flag a keyword climbing while it's still cheap to rank for.
- Topic acceleration. The trend engine compares this week against last across every source, so "AI agents" being talked about more is a measured fact with a rate.
- Ranking decay. Position drops across 3,999 keywords surface a losing page weeks before traffic loss shows in a report.
- AI displacement. Keywords newly answered by AI Overviews tell us which pages are about to stop earning clicks regardless of rank.
Create
- Briefs from evidence, not inference. Real questions people search, who owns the results page, and a difficulty score — so we don't commission a piece we cannot win.
- Gap-driven topics. Terms competitors rank for and we don't, ranked by search volume.
- Refresh over rewrite. The outcome loop returns underperforming published work as a specific task instead of quietly forgetting it.
- Voice of the buyer. The exact wording used in public comparison discussions, attached to how many people search that way.
Decide
- Ranked queue, not a firehose. Score ≥40 reaches the board; ≥60 reaches the digest. Everything is stored, so thresholds can be retuned against history.
- An SLA per row. Immediate, weekly queue, or monitor — so the board is a work plan rather than a reading list.
- Fix before create. First-party data now says the cheapest wins are a broken click rate and a self-competing glossary, not new articles.
- Proof of effect. Published work is re-measured, which makes the next prioritisation argument evidence-based.
See the gap new
- Demand we don't appear for. Put market search volume next to our own impressions: heavy demand plus near-zero impressions means we're missing the trend.
- Presence without capture. Heavy impressions plus no clicks means we're visible and invisible at once.
- Blind spots in the watch-list. Cognigy drew 146,824 impressions and never entered the pipeline, because nothing told it to look.
- Only possible since today — it needs our own data on one side of the comparison. Nothing else we own can produce it.
All of this narrows and ranks the options. It does not decide. A human still picks what ships — the pipeline's job is to make sure that person is choosing from the right shortlist, with the reasoning attached.
07 — What's in the way
Five things, four of them not technical
Ordered by what unlocks the most. Each needs a named person, not more engineering. Search Console access — blocker two on the previous version of this page — was cleared this morning.
| Blocker | What it costs us | What's needed | Owner |
|---|---|---|---|
| 1 No permanent home | Runs on a local machine, so it stops when that machine does — nothing has run since 24 July. | Confirm the digest channel, then move to the company n8n instance. | Manager + IT |
| 2 Digest destination | The daily digest posts nowhere real, so nobody reads it. It also blocks the move above. | Confirm the channel and supply the address. One word. | Manager |
| 3 Search Console feed + backfill | Today's findings are a one-off snapshot, and 16 months of our own history is expiring a day at a time. | Build the daily ingest and run the backfill. Access is done. | AP |
| 4 Rank tracking unread | 3,999 keywords and 848 AI-Overview flags sit unused in a subscription we already pay for. | Connect the existing campaign. No new spend. | AP |
| 5 First real publication | The outcome loop can't prove effect until something genuine goes through it. | One published piece registered in the pipeline. | Content |
Blocker 2 is a single word back: Teams, Telegram, or email. It has been open since 9 July, and it is the gate on blocker 1 — the migration is only worth doing once the destination is settled. Everything else on this list is work we can do; this one we cannot.
08 — Questions
Asked and answered
Are we paying for anything new here?
No. Rank tracking, AI Overview data, competitor analysis and backlink monitoring are all inside the SEMrush licence we already hold, and we've used 0.1% of the monthly quota. Search Console is free. The only spend items are AI credits for scoring and briefs.
Is this replacing anyone's judgement?
No — it's replacing the search for what to look at. The pipeline ranks and explains; a person decides. The AI component is deliberately capped so it can adjust a score but never dominate it, and it has to give a reason that lands on the board next to the row.
If it's so good, why hasn't it run in six days?
Fair question, and the honest answer is that July was spent proving each piece works rather than letting the whole thing run unattended. Every component has produced real output; none of it is scheduled anywhere permanent. That's a hosting decision, not a technical failure — and it's blockers 1 and 2 above.
What happens if a data source breaks?
Every failure is written to a durable log first and announced second, so an outage can't disappear quietly. Sources fail independently — a broken source degrades coverage; it doesn't stop the run.
Why not just buy a listening platform?
The enterprise options cost significantly more per year and still wouldn't join search demand, press coverage, our own first-party ranking data and sales outcomes into one scored queue — that joining is the actual product here. If the pipeline proves its value and volume outgrows it, a paid platform becomes a swap of one ingest step, not a rebuild.
How do we know the scores mean anything?
Two ways. The score is reproducible, so the same input always gives the same number and week-to-week movement is real rather than model noise. And the outcome loop re-measures published work against actual search results, which over time tells us whether high-scoring items really did perform — thresholds get tuned from that history, not from intuition.
What's the single next step?
Name the digest channel. It costs one word, it has been open for three weeks, and it releases the move to a permanent home — which is what turns every finding on this page from a report into a daily habit.