๐Ÿ‡ Rabbithole โ† All lessons Work with us โ†’
Step 0 of 6
Day 11 of 30
Rabbithole ยท Learn ยท ~12 min read

AI Inbox Triage

Your inbox, pre-sorted: every morning it labels, summarizes, and drafts replies, you just approve.

Solo foundersAgenciesHome services Real estateClinics & practicesAnyone drowning in email
โ˜…

Stop starting your day with 60 unread emails

You open your inbox and it's a wall of unread mail: a real lead buried under three newsletters, an invoice that needs paying, a customer waiting on a reply since yesterday, and a dozen things that are just FYI. Before you've had coffee, you're already triaging by hand, and the one that mattered slips past.

This kit is a triage assistant that runs each morning. Claude reads your new mail, tags every thread (Lead, Invoice, FYI, Needs reply), writes a one-line summary so you know what each is without opening it, and drafts a reply into Gmail's Drafts for the ones that need one. It never sends. You open Gmail to a sorted inbox with replies already written, read them, and hit send on the ones you like.

Plain-English glossary, once: A label is Gmail's built-in tag (the colored chips in your sidebar). A draft is a reply sitting in your Drafts folder that has not been sent. Claude is the AI that reads each thread and does the sorting and writing. OAuth is the standard "Sign in with Google" handshake: you grant the kit limited access without ever handing over your password.
1

Connect Gmail: reuse the Secretary kit's Google step

What's happening: The kit needs permission to read your new mail, add labels, and save drafts. You grant that with OAuth (the "Sign in with Google" screen), which hands the kit a scoped token instead of your password. You can revoke it any time from your Google account. The scopes are kept deliberately narrow: read, label, and draft, never send.

You already wired up Google access in the AI Secretary kit. If you set up a Google Cloud project and OAuth there, reuse the same credentials here: same Google login, new job.

  1. In Google Cloud Console, enable the Gmail API for your project.
  2. Create an OAuth client (Desktop app) and download the credentials file.
  3. Run the kit's npm run auth: it opens the consent screen, you approve the read, label, and draft scopes, and a token is saved on your machine.
2

Set the scopes: read, label, draft, never send

What's happening: Permissions are not all-or-nothing. The kit asks Google for the smallest set it needs to do the job and nothing more. There is no "send" scope in the list, so even if something went wrong, the kit could not email anyone. It can read, it can tag, it can park a draft. That's it.
Google scopeWhat it lets the kit doIn this kit?
gmail.readonlyRead new threads to label and summarizeYes
gmail.labelsCreate and apply labels (Lead, Invoice, FYI, Needs reply)Yes
gmail.composeSave reply drafts into your Drafts folderYes
gmail.sendSend email on your behalfNo, on purpose
gmail.modify (delete)Delete or permanently change mailNo
Why this keeps you safe: your mail never leaves your Google account except for the snippets sent to Claude to do the reading. The kit holds a scoped token, not your password, and that token physically cannot send mail. Revoke it any time at your Google permissions page.
โ†ณ Why scoped, draft-only access matters โ†’
3

Give it a brain: connect Claude

What's happening: Gmail hands the kit the raw threads; Claude is what reads each one and decides the label, the one-line summary, and (when a reply is warranted) the draft. The kit asks Claude for a structured result (a typed object: the label, the summary, whether a reply is needed, and the draft text), never loose prose, so the rest of the kit can act on it reliably.
  1. Go to console.anthropic.com and sign in.
  2. Open API Keys โ†’ Create Key.
  3. Copy the key (it starts with sk-ant-). The setup wizard saves it on your machine.
Default brain: claude-opus-4-8 (sharpest). High volume? Set claude-haiku-4-5 to cut cost.
4

Try it: triage a batch of mail, send nothing

What's happening: Paste a few emails (one per blank line block, or tap a sample). The triage engine reads each one, applies a label, writes a one-line summary, and drafts a reply for the threads that need one. Then it waits. This is confirm-before-send: it drafts into a holding pen, you approve. The real kit parks each draft in Gmail's Drafts; here it just shows you what it would write. This panel is live. Try it. It runs entirely in your browser, nothing is sent anywhere.
Inbox Triage ยท this morning's new mail (sample)

Tap a sample batch, or paste your own (separate emails with a blank line):

Pure in-browser dry run: no API call, no labels written, no drafts saved, nothing sent.
5

Open Gmail to a sorted inbox: review, then hit send

What's happening: When you open Gmail, the work is already done: threads are labeled, each has a one-line summary, and the ones that needed a reply have a draft waiting in your Drafts folder. You read each draft, tweak the wording if you want, and you hit send. Nothing the kit wrote leaves your account until you do. The buttons on the drafts above are wired to exactly this. Try them.
Three promises the kit keeps:
โ€ข It never sends. There is no send scope; drafts sit in Drafts until you press send.
โ€ข It never deletes, archives, or permanently changes your mail. It only reads, labels, and drafts.
โ€ข Your data stays in your Google account. The kit holds a scoped token you can revoke at any time.
6

Run it on a schedule: triage waiting every morning

What's happening: Run it by hand whenever, or let it run on a schedule so the triage is finished before you sit down. A simple cron entry (the kit's README shows the line) runs npm run triage at, say, 7am. By the time you open Gmail, it's sorted and drafted. It also runs as an MCP server so you (or Claude) can trigger a triage as a tool, the same idea from the MCP lesson.
npm run dryrun     # triage a sample batch in your terminal, nothing sends
npm run triage     # read new mail, label + summarize + save drafts (still no send)
npm start          # run it on the schedule in your config
npm run mcp        # expose it as an MCP server (drive it from Claude)
Drafts-only by design: the kit ships with DRAFT_ONLY on and there is no code path that sends mail. It plans and drafts; the press of "send" is always yours.

Run it yourself: it's free and it's the real thing

The kit is a complete, runnable, MIT-licensed repo: connect Gmail with scoped OAuth, let Claude label, summarize, and draft, and park every reply in Drafts for you to approve. Runs on your machine, nothing crippled, and it cannot send.

Get the free kit on GitHub โ†’
โ–ถ

Go live

With the kit downloaded:

npm install
npm run setup     # Claude key + Google credentials saved on YOUR machine
npm run auth      # one-time Google consent (read, label, draft scopes)
npm run triage    # read new mail, label + summarize + draft (never sends)

Open Gmail and you'll find your new mail labeled, each thread summarized, and replies waiting as drafts. Prefer to watch it first? npm run dryrun triages a sample batch in your terminal without touching your inbox. Pair it with the AI Secretary for the Google setup, and read the AI safety lesson for why draft-only, scoped access is the right default.

Want it wired to your real inbox and your team's shared mailboxes?

This kit is the DIY taste. We wire this to your real inbox, your rules, and your team's shared mailboxes, so leads route to the right person, invoices land in the right place, and your whole team opens a triaged inbox every morning. We run it and keep it tuned.

Have Rabbithole run it โ†’ โ†ณ Pair it with the AI Secretary