**Monitor the inbound lead paths, not just the pages.** `site-check.js` proves 13 pages return 200 and that Cal.com/Formspree/Base44 are *reachable*, but nothing verifies a lead actually arrives: the site publishes `info@` and `support@tech-d-enterprises.com` while both mailboxes live on the **singular** domain behind Cloudflare Email Routing, and no check sends a probe through that route or through the Formspree form. Benefit: today a silent routing failure would delete every inbound web lead and the dashboard would stay green — this is the largest unmonitored single point of failure on the web side. (Takes the slot of the Google-review responder proposal, **parked** 2026-08-04 — not retired, and the reason has been corrected: I first wrote that the GBP appeal "was denied", which came from the content agent's phrasing "*looks* unavailable". I then searched all three mailboxes over 14 days and found **no decision email at all**, so the appeal's status is genuinely unknown and only Steve can settle it. Parked because it is blocked either way; if the profile turns out to be live, it comes straight back.)
Add `reply` + `ring` columns to contacted-log.csv and score sourcing channels by reply rate instead of rubric points. Benefit: the prospect agent is at 94% on its own rubric and has zero outcome data — it is currently optimizing against its own judgment, not against what earns replies. *(Still the right idea and now sharper: 25 sends, 0 replies.)*
Invoice-chaser agent wired to the paypal-invoicer app — needs a design chat with Steve first. Benefit: unpaid invoices never slip.
1. §1 still describes the old hardcoded 5–6 page list; `site-check.js` now
2. §3 still describes a two-outcome deploy audit. There are three —
3. §5 says "if Gmail is available, draft the alert." The Gmail tool is
4. The JD does not mention the peer-liveness duty (no deploy entry *and* no
1. ~~**Add a YouTube option** to the question.~~ **DONE 2026-08-03** — Steve
2. ~~**Name one owner** for a shared attribution ledger.~~ **DONE 2026-08-03**
A **Cal.com API key** (cal.com → Settings → Developer → API keys), stored the
Approval to write `connectors\calcom-connector.js`. **Shared code is Steve-only**,
**`require()` executed the whole CLI** — the suite's first run printed
**The attribution matcher missed every real booking.** Cal.com slugifies
`usage` demanded an API key to tell you what the commands are.
Median inbound-lead → draft time falls below **5 minutes** (today: up to 30, and
Zero follow-ups sent to a prospect who had already replied.
A finding raised by one agent about another reaches a decision **inside 24
`TODAY.md` overflow tail **shrinks** run-over-run. If Tier 1 ships and the tail
**Approve or reject Tiers 1 and 2** (Tier 3: my recommendation is defer).
**Tier 1 is blocked on you specifically** — configuring a Cal.com and a
~~**Confirm the injection rule as a standing design constraint**~~ ✅ **DONE
Recent manager changes
2026-08-06 — **NEEDS STEVE (from the SEO agent's Thursday run): one yes/no on `/ai-ad-maker/` schema, and a correction to the ticket that raised it.** Request R3 (filed 8/5 on site-health's behalf) said `/ai-ad-maker/` is "the only commercial page on the site with no structured data." **The page's half is true — I confirmed 0 `application/ld+json` blocks on the live page. The "only" is not: 8 of the 14 live pages carry none**, and the list includes `/appointments/`, which is the page this role's own Tier-1 measurement names. So the ticket pointed at a real gap using a priority claim that does not survive checking; re-scoped as roadmap item 13 (schema coverage is 6 of 14, `/appointments/` first). **The ask for Steve is one line:** may the already-published offer — *"10 free ads every month, no credit card required"*, live in the page's own meta description and its "Start Free — 10 Ads a Month" button — be encoded as a `price: 0` `offers` node in a `WebApplication` block? It is Steve's call because it is a published claim, and claims are always-routed. Why I did not just ship the safe half: a `WebApplication` block **without** the offer node produces no rich result, so it would mean editing the page twice — once hollow now, once properly when he answers — which is the churn the brain file exists to prevent. Not urgent; one sentence unblocks one clean edit at the next structured-data slot.
2026-08-05 — **RESOLVED (was NEEDS STEVE item 1 today): request R2 is DONE and live.** The online-booking objection is answered on `/faq/` as item 3 of 25, in both the visible list and the FAQPage schema (deployment `397d16df`). Routed to Steve at midday as positioning copy; he approved the wording and shipped it the same evening. **The answer was transcribed from Steve's own published note** "Half this job is telling people they don't need me", not drafted fresh — line-by-line provenance in `content-queue\DRAFT-faq-booking-objection.md`. No claim, price or statistic introduced; no business named. This closes the objection that disqualified 6 of 16 researched prospects on 8/4. **Note on cadence: today ran THREE deploys against a one-per-run cap, all three overridden by Steve knowingly and in live chat.** Logged in each `DEPLOYS.md` entry rather than passed over — the cap still governs unattended runs and no agent may grant itself the exception. Site-health has three entries to audit tonight.
2026-08-05 — **RESOLVED (was NEEDS STEVE item 2 above): `/ai-ad-maker/` is now committed.** Two commits on `master` in `techd-website`: `c318ddf` (the page, 6 ad-sample assets, nav/footer links across all 15 pages, and its registration in `build-content.js` HAND_PAGES/nav/footer plus `build-deploy.js` PAGE_DIRS) and `b4edab1` (the `/about/` Person schema, kept separate as an unrelated change that shared a file). Tree clean; `/about/` schema in HEAD verified byte-identical to production. **Two things for Steve, neither urgent.** (a) **Two agents committed to this repo concurrently.** My staged index was committed at 07:35 under someone else's message and identity, and the reflog shows my second commit reset away and then restored while I verified. End state is correct, but the repo has no locking, and for a few minutes it was missing markup production was serving — caught only because the file had been backed up first. Worth settling before more agents get commit rights. (b) **A committed but undeployed content change is now sitting in the repo:** `c318ddf` swept in a regenerated `notes\index.html` with today's note "Half this job is telling people they don't need me" (2026-08-05), which is not live. The next agent to deploy anything will publish it as a side effect. Fine if intended; flagged because it is invisible otherwise.
2026-08-05 — **NEEDS STEVE (minor, but it should not sit): `/ai-ad-maker/` is live, unrecorded and uncommitted.** The AdForge page shipped at ~23:11 on 2026-08-04 and is working correctly — sound title, description, canonical, OG tags, one h1, linked from every page. But there is **no `DEPLOYS.md` entry and no log entry from any agent**, and the whole change set (the new page, `assets\ad-samples\`, and edits to all 15 pages) is still uncommitted in the `techd-website` git repo. Two consequences: site-health has no Verify line to audit it against, and a stray `git checkout` would delete it. Recommend a commit. **Not a complaint about shipping it — the page is good.** Related and already fixed by the SEO agent today: it reached the sitemap via a hand-edit to `sitemap.xml` and reached `/notes/` via a hand-edit to the *generated* `notes\index.html`, both of which the HARD LIMITS warn are silently reverted on the next generate. Since the deploy protocol requires running `build-content.js` before every deploy, the next deploy would have de-indexed the page; the first regenerate of today's run demonstrably did exactly that before the generator was corrected. Deployment `80cce385` closed it. The generalisable rule, worth applying to any future page: **a page is not shipped until the generator can rebuild it from scratch.**
rebuild: node build-dashboard.js · task the team: directives.md · retrain an agent: edit its brain .md