What ran
- Scheduled task
gads-search-term-review executed for window LAST_7_DAYS against customer 3813916687, campaign 23723841732 (SAIL - Car Accidents 2026), MCC override 8676599345.
- Pulled 569 search-term rows + 1,995 negatives via google-ads Python SDK v30 (no adspirer / no third-party MCP).
- Classified into 388 blocked / 64 relevant / 5 flagged / 7 review.
- 5 flagged terms (employment, family law, real estate, 2 competitor Isaacs queries) carried $0 wasted spend — signal is healthy.
- Outputs:
outputs/fix-lists/neg-candidates-2026-04-23.md, logs/search-term-review-2026-04-23.log (with required "adspirer: not used" attestation), Notion fix-list page 34b1018d-f1f5-81f0-a0a3-c230fc925b6f.
What changed permanently
- Updated scheduled task
gads-search-term-review description to: Daily search term review for SAIL - Car Accidents 2026 via direct Google Ads API v30. Flags irrelevant queries and drafts negative keyword candidates. No adspirer/third-party MCP. Includes mandatory post-run QA reflection.
- Updated the task prompt to require, on every future run: a post-run QA reflection in chat covering missing tools, unnecessary work, skill gaps, location/permission gaps, plus 4-way multi-choice approval blocks (A=recommendation in parens, B/C alternatives, D other) for each improvement.
- Added explicit allowlist policy for firm-name misspells in the prompt (aguiar, agar, aguar, agguiar, sam aguiar, sam agar) to prevent self-blocking.
- Added inline + project-level handoff requirement to the prompt for context-management safety.
QA reflection delivered (this run)
Covered: (1) auto-derive TODAY in classify/build scripts, (2) interpolate live negative count, (3) firm-name allowlist, (4) missed-day detection (2026-04-22 was skipped), (5) apply-step automation via Notion checkbox webhook, (6) fix upstream pull_search_terms.py ENV_ROOT bug, (7) standardize post-run QA across all gads-* scheduled tasks.
Multi-choice approval block rendered in chat — pending Sam's selections.
Pending decisions (multi-choice block sent in chat)
- Date handling — recommend auto-derive from date.today()
- Negative count Notes interpolation — recommend live JSON read
- Firm-name misspell allowlist — recommend hardcoded ALLOWLIST_TOKENS set
- Missed-day detection — recommend automatic backfill
- Apply-step automation — recommend Notion checkbox + webhook