· Now
Centralizes my mailboxes. A single batched LLM call scores every inbox from 0 to 3; deterministic code — not the model — then decides what may be deleted. Running unattended on GitHub Actions every six hours since July: 65 consecutive runs, 74 mail scored, half of it binned, zero rejected batches.
- Score 0 is noise and gets binned, 1 is automated but wanted, 2 is real mail, 3 needs a reply and fires a push notification.
- One model call per run, not an agentic loop. The script does every Gmail call; the model only scores. temperature 0, JSON mode enforced, and it only ever sees subjects, senders and Gmail's own labels — never a message body. That is both a privacy line and a token budget.
- The model scores, the code decides. Any 0 is raised back to 1 when the mail is starred, flagged important, or comes from a real person at a consumer domain — clamps that live in code because the model ignored those same signals when they sat in its own prompt.
- Nothing is written on a malformed answer. Same count, same id set, every score in range, or the batch is retried once and then dropped whole. A partial batch is never applied.
- The email blocks are data, not instructions: a mail claiming to be urgent is its author talking, and the prompt says so. Scoring anyone's inbox means scoring text written by people who want a particular outcome.
- Benchmarked llama-3.3-70b against a local qwen2.5:14b and llama-3.1-8b. The smaller models over-deleted — they killed a train booking and a job alert. The two errors do not cost the same: a mail wrongly deleted is gone, a mail wrongly kept costs a second. The 70B is the one that keeps when unsure.
- There are deliberately no regex ban rules. The shape of an address correlates with automated, not with unwanted — the pattern that catches game promos also catches 2FA codes and Google security alerts. Bans are per sender, so the judgement stays mine.
- Sixteen days unattended on GitHub Actions, every six hours: 65 runs, 65 successes, 74 mail scored, 51% binned, 17 pre-banned without ever reaching the model, zero rejected batches, zero clamps needed, about $0.05 a month. A second workflow regenerates those numbers from the run logs every day — counters only, no sender ever leaves the log.
- What survives lands in my Android app — Tinder for mail: swipe to reply or delete.