Costa asked: "Why has lead production been down severely the past week?"
| Week | Real | Spam | Spam ratio |
|---|---|---|---|
| W15 (Apr 6-12) | 8 | 0 | 0% |
| W16 (Apr 13-19) | 11 | 6 | 35% |
| W17 (Apr 20-26) | 9 | 8 | 47% |
| W18 (Apr 27+, 2 days) | 1 | 0 | 0% |
Real call rate is FLAT at ~9-11/wk. The "drop" perception was caused by a combination of:
GSC organic clicks (28-day rolling):
Stable. Search visibility is fine. This is NOT a ranking problem.
Top sites by GSC clicks (28d):
e2d8a5a5). Lead-loss vector now closed but historical leakage unrecoverable.| # | Action | Where | Status |
|---|---|---|---|
| 1 | 4 wrong-number sites patched | Elkhorn / Orlando / Boulder / SA Pool repos | ✅ commit e2d8a5a5 (earlier today) |
| 2 | 3 spam callers blocked at Worker level | KV namespace SPAM_LOG (id 6bfe2a37...) | ✅ done — see below |
| 3 | Spam-filtered lead summary tool | tools/real-lead-summary.py | ✅ shipped |
Spam blocks added (KV dyn_block: prefix):
+17344761457 (hit Lafayette Septic 8x in 5 days, late-night pattern)+16028093243 (hit Phx Pool 3x)+18582481666 (hit Selkirk/Spokane Hardwood 3x)Future calls from these numbers get intercepted at the Worker before reaching destination Twilio.
| # | Action | Why |
|---|---|---|
| 1 | Wire tools/real-lead-summary.py into morning brief | Surface spam ratio + real-call trend daily |
| 2 | Audit deltatreedoctors.com — assign Twilio? | 34 clicks/28d with no call attribution = blind spot |
| 3 | Strikingdistance fallers → auto-action queue | Currently informational only; needs content-refresh trigger when query falls 3+ pos |
| 4 | Re-run Twilio audit at 02:00 CT | Confirm 4 fixes propagated through GH Pages cache cleanly |
Costa asked: "What happened to our automated SEO improvement plan including the GA4/GSC feedback loop?"
| Cron | Schedule | Status | Output |
|---|---|---|---|
com.itd.gsc-weekly-pull | Weekly Mon 11:00 | ✅ Running | 28d clicks/impressions/CTR/position per site → data/gsc/<domain>/<date>.json + Telegram digest |
com.itd.gsc-striking-distance | Daily | ✅ Running | Risers/fallers report → data/gsc/striking-distance/<date>.json + Telegram |
com.itd.ga4-feedback-loop | Daily | ✅ Running | Per-site session/conversion summary → data/ga4/feedback-loop/<date>.json + Telegram |
com.itd.thin-content-dryrun | Daily | ⚠️ Running but DRY-RUN | "TOTAL FIXED: 0 pages" every day — never auto-fixes |
com.itd.indexnow-daily | Daily | ⚠️ 27/29 succeed | Bloomington + Orlando 403 every day (need IndexNow key fix) |
com.itd.innovation-sprint | Mondays 06:00 | ✅ Running | Weekly research digest |
It's not actually a loop — it's a one-way reporting pipeline. Signals come in, but nothing closes the loop back to action.
| Action | Cost |
|---|---|
Striking-distance fallers (≥3 pos drop) → enqueue page for content refresh in data/action-queue/seo-refresh.jsonl | 1 hr |
Thin-content runner: switch from DRY-RUN to LIVE for services/ and locations/ only (lowest risk) | 2 hr + Costa review |
| Fix IndexNow 403s — regenerate keys for Orlando + Bloomington | 15 min |
Per-site dashboard merging GSC + GA4 + thin-content + spam ratio → data/site-health/<domain>.json, surfaced in morning brief | 2 hr |
| Investigate GA4 install on 18 "no data" sites — verify measurement ID is correct + tag is firing | 1 hr per site batch |
Recommend: Wire striking-distance auto-action + IndexNow fix tonight. Keep thin-content in dry-run until Costa reviews the planned changes for one site as proof-of-concept.