Gmail Filter Backlog

Status
planning
Owner
Ryan Colston
Started
2026-04-30

One-line description. Ranked Gmail filter opportunities from the 2026-04-30 inbox audit. Quick wins A-J would clear about 30+ inbox items per day.

Why

Inbox-zero discipline.

Pure-notification senders shouldn't hit the inbox.

The 2026-04-30 audit surfaced 86 unfiled messages with strong auto-route patterns. Looker reports, Inbox Zero emails, Gemini meeting notes, Drive shares, Slack notifications, FUB notifications, self-automation forwards, NPS surveys, hiring updates.

Each one is a filter that takes a minute to set up and clears the same kind of message forever.

Current state

2026-09-08 — delete-first pass done (work account, verified live via Gmail API). 513 → 329 labels, 493 → 313 filters. 364 deletions, 0 failures. Removed: 175 empty Properties/<addr>/Offer For labels + their filters, Hiring/Appointment-Setter/*, Triage/Agent, Daily Appointment Recaps, Alex lost lead, and the Slack→personal forward filter (account-level auto-forward already covers it). Kept Lost Lead/Reviewed (lost-lead-review skill writes it). Backup, script, log: ~/.cache/gmail-cleanup/2026-09-08/. Label limit verified at 5,000 — not a constraint. Full trace + next steps on RYR-33.

Email triage is LIVE, not dormant (verified 2026-09-08): pos-pipeline-email-triage fires /email-triage every 30 min (infra/terraform/pos-pipeline/pos_pipeline.tf), code at data-platforms/email-triage/cloud_function/, reads the personal account — which holds a forwarded copy of every work email. On 2026-09-08 it labeled Triage/Agent at 17:31, Triage/FYI at 17:15, Triage/Urgent at 12:14. The work-account Triage/* labels are a separate, hand-applied set (Triage/Agent there was deleted today).

Earlier (2026-06-11): captured but not active.

A-J quick wins are documented with exact from: patterns and target labels. Sub-labeling for FollowUpBoss (627 msgs across 7 categories) and Orchard Notifications (1,620 msgs) is audited but not executed. VIP star rules and reply-needed detection are scoped but not built. Triage Cloud Function is dormant — wrong since at least the 6/27 cost trim; see the live note above.

What pulls this forward: another inbox cleanup session, or noise levels start eating into focus time.

Next 3 actions

  1. Step 2 — stop per-property folders. Keep Properties/<addr> only while the deal is open; drop the label at close (mail stays, search finds it). Do not run properties-sweep.py --stages "Offer For" — it recreates the empty children.
  2. Step 3 — derive the label lifecycle from seller_market.deal_state (open deals), same shape as deal_watch.py. Only after step 2 holds for a couple of weeks.
  3. Clear the unread piles the trace found: 15. Orchard Notifications (562 unread), Orchard/Saved Searches (161/161 never opened), 14. FollowUpBoss (216).

Shipped filters

Live filters created outside the A–J backlog (most recent first):

Decisions log

Open issues

Quick filter wins (~10 min to ship, sequenced by impact):

Sub-labeling (audited, not executed):

Bigger lifts:

References