Devlog

Gmail Bot

An inbox down to what matters.

7 posts, newest first

A desktop alert when a package or grocery order arrives

  • When a "Delivered" or "Arrived" email comes in, whether a parcel or a grocery order, the bot pops up a Windows notification within five minutes. Each message alerts once, and it all stays on the computer.
  • It reads the subject line only. Checked against a month of real mail (read-only), it caught every real delivery and skipped shipping updates, "out for delivery" and "expected by" notices, delays, a newsletter and a restaurant promo that happened to say "has arrived".
  • A delivery email the fraud checks don't trust (spoofed sender, failed authentication, a risky attachment) gets no alert, since fake delivery notices are a common scam. A first order from a new store still alerts, with a note that it's the first email from that sender.
  • Dry runs list deliveries on the dashboard and in the digest without sending anything.
  • This replaced an earlier attempt that ran Claude on a schedule to check the mailbox. That run could log in but couldn't reach the mailbox, so the bot now does the job itself.
A desktop alert when a package or grocery order arrives, screenshotA desktop alert when a package or grocery order arrives, screenshot

Topic folders and time-limited offers

  • Configurable topic rules file mail into Gmail labels on top of the normal triage, for example everything from a clinic under Records/Medical. A more specific rule wins over a catch-all.
  • A rule can also hold mail for review, so a big-discount offer (say 40% off or more) stays unread until someone sees it instead of being cleared with the rest of the marketing.
  • Topic rules only ever add a label or hold mail back. They can never cause mail to be marked read.
Topic folders and time-limited offers, screenshot

Runs itself every five minutes

  • A Windows scheduled task now runs the bot live every five minutes, with no window popping up, and appends each run's digest to a log.
  • From 2026-08-30 the task reports the bot's real exit code, so a failed run (an expired sign-in, for example) shows up as a failure in Task Scheduler instead of a silent success.

One review label, and fewer false alarms

  • Everything the bot won't clear now carries a single Gmail label, Bot/Human-Review, so it's visible in Gmail itself and not only in the digest. That covers fraud flags, security-sensitive mail, and ordinary mail that's simply worth a person's look.
  • News and editorial mail stopped tripping the security checks: topic words now need personal phrasing ("your account", not just "account").
  • A known sender sending a new kind of routine notice (a first autopay reminder, say) is trusted instead of flagged.
  • "OTP" is matched as a whole word, so words that merely contain those letters no longer look like a sign-in code. Finished 2026-08-24.
One review label, and fewer false alarms, screenshot

Recognising regular statements, surfacing account changes

  • The bot learns each sender's usual subject lines, with amounts and dates stripped out, so a monthly statement from a known sender passes straight through. A known sender suddenly writing something off-pattern gets flagged for a look.
  • Notices that something changed on an account ("you switched…", "you shared…", "you granted…") now have their own security-sensitive treatment and are never cleared automatically.
  • The "new sender on a sensitive topic" check reads only the subject and preview, so standard footer text no longer sets it off.
Recognising regular statements, surfacing account changes, screenshot

A dashboard for every run

  • Each run now also writes a self-contained HTML dashboard: counts at the top, what was cleared by category, the review list with severity badges, everything left unread with its reason, action items, unsubscribe candidates and trash/spam suggestions. It works offline, in light and dark, and on a phone.
  • Dashboards are filed by date, with a "latest" copy that always opens the newest run.
  • Two fixes came out of the first real setup: the Windows console no longer crashes on emoji in a digest, and a dry run is now genuinely dry. Before, a preview could still update the bot's local memory of what it had handled, even though it changed nothing in the mailbox.
A dashboard for every run, screenshotA dashboard for every run, screenshot

A triage bot that clears routine mail and leaves the rest

  • Gmail Bot reads every unread message and sorts it into one of seven buckets: personal, security-sensitive, action-required, financial statement, transactional, newsletter/marketing, or uncertain. Routine buckets get marked read; everything else stays unread for a person.
  • It also acts as a light security layer: it flags spoofed display names, lookalike domains, failed SPF/DKIM/DMARC checks, sign-in codes nobody asked for, "urgent wire transfer" scams and risky attachments such as invoice.pdf.exe.
  • Safe by design: dry-run is the default, nothing is ever permanently deleted, it never sends or replies, trash and spam are only suggested, and unsubscribing only ever uses the sender's official unsubscribe header. Every action, real or previewed, goes to an audit log.
  • Each run ends with a digest: what was cleared, what was left and why, action items and deadlines, unsubscribe options, and upcoming renewals. The shots show a run over an invented demo inbox.
A triage bot that clears routine mail and leaves the rest, screenshotA triage bot that clears routine mail and leaves the rest, screenshotA triage bot that clears routine mail and leaves the rest, screenshot