01 — Where we are
The machine is built. It is running on an empty tank and pointed at a wall.
Seven workflows execute on schedule against Supabase, a managed Postgres database. The pipeline ingests, deduplicates, scores, stores, and is wired to publish. Three of those five verbs currently work end to end.
02 — The asks
Ordered by what they unlock, not by effort
Every row needs a named person rather than more engineering. Status is honest: "blocked" means the work is finished and waiting.
| Ask | What waiting costs | Smallest sufficient action | Owner | Status |
|---|---|---|---|---|
| 1 Anthropic API credit — resolved | Was unavailable from 12 July, so the pipeline fell back to its deterministic score and the board went quiet. Confirmed working again on 3 August: the latest run scored with the model and produced 7 opportunities and a 4-item digest. | Nothing. Keep an eye on the balance — the failure is silent by design, and that is what §05 is about. | Budget holder | resolved |
| 2 A real Teams channel webhook — deferred by choice | Deliberately parked, so this is the honest cost rather than an argument. The pipeline stopped running for four days (31 Jul – 3 Aug) and nobody found out. It was discovered by chance during unrelated work. Every alerting path writes to Supabase or posts to the test URL, so a system that goes dark stays dark until a human happens to look. | When it comes back up the list: a Power Automate "Workflows" webhook on the destination channel. The retired Office 365 connector format will not work; ours is already rebuilt for the new one, so it is genuinely a URL and nothing else. | Teams channel owner | deferred |
| 3 Reddit API credentials | The Reddit listener is built, tested, and idle. It is also the cheapest second source for the weekly cross-source synthesis, which needs two new inputs and currently has none. | Register a Reddit "script" app on a team account and pass over the client ID and secret. Free. | Social / SEO | blocked |
| 4 Share two more Search Console properties | Low, and we should say so: www.nice.com is 99.31% of organic traffic. This is completeness, not urgency — worth doing while the person who granted the first one still remembers doing it. |
Add the same service account as a restricted user on niceactimize.com and nicepublicsafety.com. |
Search Console admin | nice to have |
alek-n8n-gsc-reader@nice-website-419211.iam.gserviceaccount.com
03 — The clock
Search Console deletes its own history, and we are five days into losing ours
This is the one item on the page that gets permanently worse with time rather than merely staying broken. It needs no approval — it is already underway — but it explains why the other three should not queue behind a planning cycle.
The capture script is written and measured. It reads only — it cannot change anything in Search Console — and the full run takes minutes and uses a tenth of one day's API quota. It has not run yet: it needs one Supabase table created first, which is an internal step, not an ask on this page.
Technical detail — the undocumented limit we nearly shipped past
A single-day request for query data returns exactly 5,000 rows on any settled day, and asking for row 5,001 returns nothing — so it is a cap on the data served, not on the response size, and ordinary pagination cannot get past it. Requesting a seven-day window hits the same wall at 5,000 per day.
Splitting the same request by device does get past it. On one test day: 5,000 rows unsplit, versus 9,623 mobile + 24,952 desktop + 619 tablet = 35,194 rows — a sevenfold increase in coverage, with identical click totals. Without that split the capture would have silently stored the top 14% of each day, which is the brand-heavy head we already understand, and discarded the long tail that is the entire reason to do this.
The same split applied to page data makes it worse rather than better — 42% of clicks disappear — so page data is captured unsplit. That asymmetry was only caught by measuring both, and it is now enforced in the script rather than left to whoever runs it next.
04 — What each unlocks
Three capabilities, each gated on one of the asks above
A board worth opening
- Judgment restored. The deterministic score can rank; it cannot read a headline and tell you whether it matters to us. That half is back — the latest run scored 7 opportunities with the model.
- Content briefs can run again. The brief agent turns a scored opportunity into an angle, a hook, a format and an owning team. It failed outright without the model; it no longer does.
Someone actually gets told
- A daily digest in a channel. Everything upstream of delivery already works; the last hop points at a test endpoint.
- Failure alerts too. The same fix covers the error alerting path, which currently also posts into the void — so we would find out when the pipeline breaks.
Are we following or missing the trend
- Market versus us. Search Console says what Google actually served for our site; SEMrush and Reddit say what the market is asking. The gap between them is the question the whole system exists to answer.
- The weekly synthesis needs two new inputs. Search Console is one. Reddit is the cheapest second.
05 — Questions
Asked and answered
Are we paying for anything new here?
Nothing new to approve. The Anthropic account already existed and is funded again. Search Console has no per-call cost at all — only a daily quota, and the full history capture uses about 10% of one day's allowance. Reddit's API is free at this volume. The Teams webhook is free.
One cost we have deliberately deferred: the database is on a free tier with a 0.5 GB limit, and the full unfiltered search history would be roughly 2.4 GB. We are capturing all page-level data and the top slice of query-level data instead, which fits. Lifting that restriction later is a ~$25/month upgrade, and the data captured under the current limit is not affected by it.
It broke twice and nobody noticed. Why should we trust the next report?
You shouldn't, on the strength of the reporting alone — and that is the point of ask 2 rather than a reason to discount this page.
Both failures were of the same kind. When the AI scorer lost access, the pipeline did what it was built to do: it fell back to its deterministic score instead of stopping. It kept running, kept writing rows, reported success every morning, and simply scored more conservatively — so the board went quiet rather than going red. When the process later stopped entirely for four days, the same thing happened for the opposite reason: nothing ran, so nothing complained.
Degrading quietly is correct behaviour for a production system and the wrong behaviour for getting a human's attention. Those are different problems and only the second one is unsolved. A real alerting channel closes it — a degraded or missing run announces itself that morning instead of surfacing during unrelated work weeks later. Until then, the honest posture is that the numbers are trustworthy and the silence is not.
What if we only do one of these?
Ask 2, the Teams webhook. It is free, it takes minutes, and it is the one that makes every future problem visible on the day it happens rather than weeks later. Ask 1 produces more value, but a system nobody hears from will fail quietly again.
What's the single next step?
Forward this page to the four owners in the table. The history capture is written, measured, and read-only, and it is not waiting on anyone here — it needs one Supabase table created, which is being handled internally today.