Kevin Liu

Mailroom

A Gmail sorter that uses readable rules and low-cost AI, all undoable.

DataAgent

Open mailroom.kevinliu.studioSource

The numbers

  • 61commitsgit rev-list --count bc389e255
  • 2GitHub starsgh api repos/Kevin-Liu-01/mailroom --jq .stargazers_count (2026-10-30)
  • 16check filesgh api repos/Kevin-Liu-01/mailroom/git/trees/bc389e255?recursive=1 | grep -cE <glob>
  • 4.69commits per active day61 commits over 13 distinct commit dates, 2026-09-25 to 2026-10-24

Trait

Per-Rule Cap Trash rules past their cap refuse to run, so no hit takes over half its Health.

mailroom@bc389e255:src/lib/engine/run.ts:125-126; src/lib/policy/schema.ts:69; README.md:58

Moves

  1. Rules hits for 65 and goes first. Rules you can read in one screen become Gmail filters, so new mail is labeled the moment it lands, at no cost.

    mailroom@bc389e255:README.md:9-10, 23, 26
  2. Five Questions hits for 21 five times, 95% of the time. An AI model answers five questions about each email the rules miss, like “needs action”, as probabilities.

    mailroom@bc389e255:src/lib/ai/triage.ts:43-67; README.md:9-12
  3. Ask In Plain Words hits for 105, 95% of the time. Ask in plain words, like “who hasn’t replied to me”, and get an editable Gmail search with ranked results.

    mailroom@bc389e255:README.md:24; src/lib/search/compile.ts; src/lib/search/rerank.ts
  4. Undo restores 50 health. Every run previews first and writes a receipt, and Undo puts labels, filters and policy back, whole or per message.

    mailroom@bc389e255:README.md:56; README.md:46; src/app/api/runs/[id]/undo/route.ts

Numbers pinned at bc389e255, 2026-10-24.

# every page, one line each
$ curl -s https://www.kevinliu.studio/llms.txt
# every card in one file
$ curl -s https://www.kevinliu.studio/llms-full.txt
# this page as Markdown
$ curl -s -H "Accept: text/markdown" https://www.kevinliu.studio/cards/mailroom
HTTP 200 · text/markdown · 1,973 bytes
# Mailroom

A Gmail sorter that uses readable rules and low-cost AI, all undoable.

Card 6 of 26 in Kevin Liu's collection. 2026. Data and Agent.

- Live: https://mailroom.kevinliu.studio/
- Source: https://github.com/Kevin-Liu-01/mailroom
- Inks: 1
- Health 292, attack 109, defence 110, speed 109

## The numbers

- **61 commits**. Receipt: `git rev-list --count bc389e255`
- **2 GitHub stars**. Receipt: `gh api repos/Kevin-Liu-01/mailroom --jq .stargazers_count (2026-10-30)`
- **16 check files**. Receipt: `gh api repos/Kevin-Liu-01/mailroom/git/trees/bc389e255?recursive=1 | grep -cE <glob>`
- **4.69 commits per active day**. Receipt: `61 commits over 13 distinct commit dates, 2026-09-25 to 2026-10-24`

## Trait

**Per-Rule Cap**. Trash rules past their cap refuse to run, so no hit takes over half its Health. Receipt: `mailroom@bc389e255:src/lib/engine/run.ts:125-126; src/lib/policy/schema.ts:69; README.md:58`

## Moves

- Rules hits for 65 and goes first. Rules you can read in one screen become Gmail filters, so new mail is labeled the moment it lands, at no cost. Receipt: `mailroom@bc389e255:README.md:9-10, 23, 26`
- Five Questions hits for 21 five times, 95% of the time. An AI model answers five questions about each email the rules miss, like “needs action”, as probabilities. Receipt: `mailroom@bc389e255:src/lib/ai/triage.ts:43-67; README.md:9-12`
- Ask In Plain Words hits for 105, 95% of the time. Ask in plain words, like “who hasn’t replied to me”, and get an editable Gmail search with ranked results. Receipt: `mailroom@bc389e255:README.md:24; src/lib/search/compile.ts; src/lib/search/rerank.ts`
- Undo restores 50 health. Every run previews first and writes a receipt, and Undo puts labels, filters and policy back, whole or per message. Receipt: `mailroom@bc389e255:README.md:56; README.md:46; src/app/api/runs/[id]/undo/route.ts`

Facts pinned at commit bc389e255 on 2026-10-24.

Back to every card: https://www.kevinliu.studio/