jev-mailroom
Email triage proof of concept: one Jev call with 11 narrow questions per message, combined in Python into kind and topic labels.
Overview
jev-mailroom is a mailbox triage proof of concept. A fake IMAP server feeds a listener, the listener sends each email to Jev in one batched call with eleven questions, and plain Python turns the answers into labels that a small dashboard shows. It only reads and labels mail; nothing sends, replies or moves money.
The design is shaped by two properties the README calls out: questions in one request are answered independently and cost about the same as one, and the model cannot do arithmetic, compare dates or count. So it asks many narrow questions and keeps every threshold and weight in Python. Labels use two axes: kind (invoice, payment confirmation, account statement, promotion, newsletter, other) and category (education, electricity, telecom, banking, airline, other), so combinations like promotion/banking are expressible.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | kind: what is the email doing? | invoice · payment_confirmation · account_statement · promotion · newsletter · other |
| Choice | category: what is the email about? | education · electricity · telecom · banking · airline · other |
| Yes / no | states_amount_owed: is a figure presented as money owed? | yes · no |
| Yes / no | from_billing_entity: is the sender a biller rather than a person or marketer? | yes · no |
How it works
- Fixture emails are served by a local IMAP stub
- The listener sends one Jev call with 11 questions per email
- Python combines answers with thresholds into kind and category labels
- Results go to results.jsonl and a dashboard on port 8000
Strengths
- Many narrow questions for roughly the cost of one call
- All arithmetic and thresholds stay in auditable Python
- Read-only design with no side effects
- Offline mode for working on the pipeline without API calls
Caveats
- Proof of concept using synthetic fixtures and a fake IMAP server
- Requires a TypeSafe API key
- Licence not stated
Getting started
Set TYPESAFE_API_KEY (or ~/.typesafe.key), run ./jev.sh start and open http://localhost:8000/dashboard.html.At a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- Local services (IMAP stub, listener, dashboard)
- Has code
- yes
Use cases and integrations
How curated lists describe it
Email triage PoC: reads a mailbox over IMAP and classifies each message by what it is and what it's about, using TypeSafe System One (Jev) — 11 questions in a single call, decided in Python.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide per email?
Eleven typed answers, including what kind of email it is, what it is about and several billing signals, which Python combines into labels.
Why ask so many questions?
Questions in one request are answered independently and cost about the same as one, so narrow questions are cheap and easier to threshold.
Can I run it without a real mailbox?
Yes. It ships fixture emails and a fake IMAP server; you only need a TypeSafe API key.
Related projects
Open-source AI email assistant; listed as using Jev as an optional classifier for email intent and triage.
ProjectproductionTypeScriptChinese-language Zotero AI reading assistant that uses Jev judgments to classify papers in your library.
LibraryproductionJavaScriptPrivacy-first personal knowledge management system, listed as integrating Jev for document classification and tag routing.
PluginproductionTypeScriptClassifies tax PDF pages into 261 IRS forms and 7 page kinds with one Jev request per page and a confidence gate.
ProjectproductionTypeScriptConfig-driven IMAP inbox classifier with a terminal UI where Jev answers yes/no per category to tag, move, flag or notify.
ProjectbetaPythonRust tool that asks Jev which PDF pages genuinely need OCR, extracting text pages locally and sending only the rest to OCR.
ProjectbetaRust