JevMail
Read-only, local Gmail triage that sorts each message into five trays with an urgency score using Jev via Vercel AI Gateway.
Overview
Jevmail is an open-source Gmail triage app for people who want to see only the mail that needs a reply. It asks Google for the gmail.readonly scope only, so it cannot label, archive, mark read or send; everything it knows, including trays, corrections and done markers, lives in a local SQLite file.
For each message it asks Jev three typed questions through Vercel AI Gateway: which of five trays it belongs in (Needs reply, Updates, Promos, Sales or Spam), how urgent it is on a 1 to 5 scale, and whether a human wrote it to you. Each tray shows Jev's top two probabilities and user corrections are stored beside the original answer. The README reports about 1,000 emails sorted in roughly a minute for around 3 cents, and argues that the model cannot invent a label outside the list. Setup requires a Google Cloud OAuth client in testing mode, a Vercel account, Node 22.18+ and pnpm. It is not affiliated with TypeSafe, Vercel or Google.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which tray does this email belong in? | Needs reply · Updates · Promos · Sales · Spam |
| Score | How urgent is this email? | 1 · 2 · 3 · 4 · 5 |
| Yes / no | Was this written to you by a human? | — |
How it works
- Fetch messages read-only from Gmail into local SQLite
- Send each message to Jev with tray, urgency and human-sender questions
- Place the message in its tray with top-two probabilities shown
- User corrections are stored next to the original answer
Strengths
- Read-only OAuth scope enforced by Google
- Local storage that can be deleted at any time
- Low reported cost and time for a full inbox
- Top-two probabilities expose uncertainty
Caveats
- Requires setting up your own Google Cloud OAuth app
- Email content goes to Jev through Vercel AI Gateway
- Fixed five-tray taxonomy
Getting started
Create a Google Cloud project with the Gmail API and an OAuth web client, get a Vercel AI Gateway key, then run the app with Node 22.18+ and pnpm.At a glance
- Type
- Service
- Status
- beta
- Language
- TypeScript
- Runtime
- local Node web app
- Has code
- yes
Use cases and integrations
How curated lists describe it
Open-source AI email triage for Gmail.
wh000wh000/awesome-jev-liveRead-only Gmail triage that stores messages locally and asks Jev for bounded category, urgency, and human-sender probabilities.
cobanov/awesome-jevOpen-source AI email triage for Gmail. Sorts your inbox into Needs reply, Updates, Promos, Sales and Spam with Jev, TypeSafe AI's decision model, via Vercel AI Gateway. Read-only, runs locally, 1,000 emails in about a minute for 3 cents.
hellogumbo/awesome-jevRead-only Gmail triage that sorts an inbox into five trays with an urgency score, running locally through a gateway key.
MrJev/awesome-jev
Frequently asked questions
What does Jev decide?
The tray for each email, a 1 to 5 urgency score and whether a human wrote it to you.
Can it change my mailbox?
No. It only has the gmail.readonly scope, enforced at Google's OAuth layer.
What does it cost?
The README reports around 3 cents for about 1,000 emails via Vercel AI Gateway.
Related projects
Google Apps Script that labels, archives or trashes Gmail conversations based on Jev answers to your plain-English yes/no questions.
ProjectbetaJavaScriptChrome/Brave extension that uses Jev to classify, label and safely bulk-clean a Gmail inbox with undo.
PluginbetaJavaScriptDry-run-first Proton Mail Bridge triage on macOS where Jev answers whether each message is spam or phishing.
ProjectbetaPythonGoogle Apps Script Gmail classifier that applies your own plain-English labels with Jev and archives only high-confidence unwanted mail.
ServicebetaJavaScriptRead-only Chrome extension that badges each Gmail message with Jev's category, priority, spam % and reply %.
Browser extensionprototypeJavaScriptCreator inbox sorter: Jev answers five questions per comment or DM and code decides to notify, draft, like, hide, archive or escalate.
ProjectprototypeTypeScript