Done this turn
Outlook auto-junk rule (server-side, durable). Sam approved Q3 option A. Built via Microsoft Graph using the LOKKA app-only token from vault.env (graph.microsoft.com reachable, token OK, Junk folder resolved). Created inbox messageRule on Sam@kylawoffice.com:
- Name: "Auto-Junk: cold SEO/marketing solicitations (SAIL daily-briefing rule)"
- Rule id: AgAADO4GsLI=
- Conditions: senderContains [searchatlas.com, trustanalytica.com, salesenvydesign.co]
- Action: move to Junk Email, stopProcessingRules. Enabled, verified present. Reversible (delete the rule).
- Scope deliberately tight to the 3 known cold-solicitation domains so it cannot catch legitimate mail.
Root-cause finding (important, not a simple token refresh)
Sam asked to drop Indiana geo targeting and kill generic unqualified "lawyers" queries (the "jeffersonville lawyers" leak). Tried to execute, but:
- The NotFair Google Ads MCP is disconnected ("connection invalidated, user needs to reconnect"). This is its own OAuth handshake and is reconnectable by Sam.
- Per Sam's standing rule to try other lanes, attempted raw Google Ads REST using vault.env. BOTH OAuth client sets, GOOGLE_ADS_ and SAIL_GOOGLE_ADS_, return
deleted_client ("The OAuth client was deleted") at the token endpoint. So the raw API lane is dead at the root.
- Net: every API-based Google Ads write path is currently non-functional. The fastest real fix is the NotFair reconnect (its app is intact); the vault OAuth clients are a separate cleanup (recreate the Cloud OAuth client + re-mint refresh tokens, then update vault.env and the Notion API Keys page).
Staged Google Ads change set (ready to run the moment a lane is live)
Account 3813916687. Enabled campaigns: Car Accidents 2026, Pmax 2026, Car Accidents Lexington 2026, Accidentes (Spanish) 2026, Brand Protection 2026, Accidentes Lexington Spanish 2026.
- Add Indiana (state) as an excluded location criterion on each enabled campaign, and set location option to "presence" only (not presence-or-interest), so Indiana-interest searches stop triggering.
- Add PHRASE negatives to a shared list (SAIL - Universal Negatives 2026, 12060898974): jeffersonville, new albany, clarksville, sellersburg, indiana.
- Optional structural follow-up: tighten broad-match keywords leaking generic "lawyers" queries (move to phrase/exact or add the broad-leak terms as negatives).
Honest tradeoff to confirm
Dropping Indiana statewide also stops paid ads to legitimate Indiana PI searchers in the Louisville metro (New Albany, Jeffersonville, Clarksville), which can be a real client source. Sam's instruction was explicit ("should not be targeting indiana at all"), so full exclusion is the default; a surgical alternative (keep Indiana, kill only generic non-PI queries + tighten match types) is offered as an option.
Status