New · v0.2.0 Whole-database encryption, a regulatory-deadline clock, and a cross-inbox study digest. See what’s new →

Stop triaging your inbox by hand.

Email Triage is a self-hosted email automation system that classifies, routes, drafts replies, schedules meetings, and produces aggregated digests — running on infrastructure you control. Sovereign AI by default. HIPAA-class controls throughout. For high-subscription readers, the newsletter digest alone can give back an estimated 60–90 minutes a day — an illustrative estimate for a subscription-heavy inbox, not a measured guarantee.

It's the working reference implementation behind Craig LaForest's fractional-CTO practice — proof of what a sovereign, regulated-grade build looks like in a real inbox, not a product to buy off a shelf.

60–90 min
per day saved by the newsletter digest
30+ → 1
subscription feeds collapsed into one inbox entry
2 min
to scan the daily triage-activity summary
5 sec
end-to-end push → classify → action (design target, not a guaranteed SLA)
Email Triage dashboard

/dashboard — at-a-glance activity, classification stats, recent triage runs

The problem

Email is a structural drain.

Knowledge-worker email has four failures the inbox alone cannot solve.

Signal-to-Noise

A typical professional inbox is 70–80% mail that requires no action. The 20% that needs attention is buried.

Time-to-Action Latency

Important mail sits unread for hours. Time-sensitive items — sponsor deadlines, IRB notices, security alerts — get missed.

Reply-Writing Tax

Every response needs a courteous opening, substantive middle, and closing — even when the middle is "yes, 10am works."

Scheduling Friction

Check calendar, pick 2–3 slots, write proposal, handle back-and-forth. The mechanical part is automatable.

Headline Capability

Sovereign AI by default.

Your email stays inside your network by default, by design. The classifier and drafter run on your own infrastructure — Ollama on a GPU you control. Cloud LLM backends are supported, but only for non-HIPAA accounts or after explicit BAA acknowledgment recorded in code, not policy. For a law firm or legal department, that same boundary is a confidentiality argument: no third-party AI vendor receives your text, so there is nothing for an opposing party to subpoena and no outside disclosure to argue a privilege waiver from.

Local-First Classifier

The classifier runs on your own hardware (local Ollama; Qwen / Llama / Mistral). Email content never crosses a third-party API — so there's no outside vendor to vet, no data-sharing agreement, and no external audit boundary to argue about.

BAA-Gated Cloud Option

OpenAI / Gemini / OpenAI-compatible cloud backends supported. HIPAA-flagged messages skip cloud routing until BAA acknowledgment is recorded in the audit log. Code-enforced, not policy-enforced.

The reply-drafting lookup can't reach the cloud

When it drafts a reply, the system reads your past sent email — the most privacy-sensitive step. That lookup is permanently locked to your own servers; wiring it to a cloud service fails the build automatically. (For your reviewer: the embedding/RAG path is allowlisted local-only, enforced by a static privacy-invariant test.)

How it works

A four-stage pipeline. Every step observable.

New mail arrives. The classifier sorts it. The router applies your rules. Actions fire. Every classification produces an audit row showing which model, what category, how confident, what reasoning, what action.

Pipeline architecture diagram

Key differentiators

What makes Email Triage different.

Operator-Chosen LLM

Local Ollama by default. Cloud backends supported with BAA gating. Hybrid patterns possible. You pick.

HIPAA-Class by Design

A HIPAA profile turns the always-on controls on together — PHI-scrubbed logs, redacted notifications, and a cryptographic audit chain. Stricter gates like recipient verification are opt-in on top. Aligned to (not certified against) HIPAA §164.

Provider-Agnostic

First-class Gmail (Pub/Sub push), Office 365 (Graph), and IMAP (IDLE). Multi-account, multi-provider.

Operator-Controlled Rules

Categories, routes, and actions are user-defined and visible in a web UI. No black-box behavior.

Never Silently Drops Your Mail

Supervised background workers, a durable per-message retry queue, and no-reprocess cursors mean a provider timeout, a restart mid-sync, or a network blip can’t make an inbound message vanish or get triaged twice. A daily health email confirms it’s still working — and stays quiet on a clean day.

Tamper-Evident Audit Chain

Every classification and access lands on a keyed HMAC-SHA256 hash chain across nine tables. An operator-runnable verifier pinpoints where any tampering occurred, and the chain stays verifiable across master-key rotation — something most vendors’ compliance decks can’t show.

Removal Keeps the Record

Deactivating an account or user purges live credentials and stops reading immediately — but the audit history survives. A soft delete, so removing access never destroys the compliance record you may later need to retain or produce.

Calendar-Aware

Reads your calendar, suggests free slots, drafts meeting-acceptance replies with proper iCal threading.

Aggregated Digests

Newsletter digest collapses 30+ subscription feeds into one inbox entry at 7 AM with summarized article cards. Triage-activity digest at end-of-day shows you exactly what the system did with your mail.

Automation-Ready API

Everything the system does is scriptable, so your own tools or AI agents can drive it. (For your IT team: 27+ JSON endpoints, bearer-token auth, per-token rate limits, HIPAA hard-off. See the API page.)

Killer feature for the high-subscription professional

30+ newsletters → 1 inbox entry.

The newsletter digest pulls every subscription feed from the last 24 hours, has the local LLM extract per-article structure (headline, summary, link), groups by source, and delivers one HTML digest to your inbox at 7 AM.

The Problem

Research clinicians, financial analysts, consultants — anyone whose job requires staying current on a high-volume subscription feed — spend an estimated 60–90 minutes per day on newsletter skimming. Only 5–10% of articles deserve a real read.

The Outcome

From "120 inbox entries the system can't help me with" to "one digest with 90 article cards I can scan in 5 minutes." Click through the 5–10 worth reading. Close the tab on the rest. Daily time recovered: an estimated 60–90 minutes for a subscription-heavy inbox.

Plus a Daily "What Did the AI Do?" Digest

Companion triage-activity digest at end-of-day: counts per category, per-message detail, drafts awaiting review, low-confidence flags for rule tuning. You never lose visibility into what email-triage did with your mail.

Rendered newsletter digest

A daily 7 AM digest — 12 articles across 5 sources, scannable in 5 minutes

See the full digest spec →

Inside the running system

Operator-controlled. Visible. Auditable.

No black-box behavior. Every category, every rule, every operational signal is visible in the admin UI.

Rules editor

/rules — operator-controlled mailing-list, sender, and regex rules that bypass the classifier

Categories admin page

/categories — system defaults + your custom categories with editable descriptions

Operational stats

/admin/stats — classifier latency, cache hit ratio, push watcher health, supervised tasks

What lands in your inbox

A draft, ready for one-click edit-and-send.

Email Triage drafts; you review and send. Nothing leaves your outbox without explicit operator action.

Drafted reply with meeting time suggestions

A drafted reply in the email client's Drafts folder — threaded into the original conversation, calendar-aware, ready for review

Engagement models

Three ways to work with Craig.

The code is open-source and self-hostable on your own. These are engagement models for having a fractional CTO stand it up, harden it for your regulatory posture, and keep it running.

Pilot

Solo practitioners, individual researchers
  • Deployment to a single user / single account
  • Baseline category setup
  • 30-day check-in
  • Outcome: validate fit before scale
Start a Pilot

Standard

Small clinics, research labs, professional-services firms
  • Multi-user deployment
  • Custom category taxonomy + integrations
  • HIPAA review packet
  • Quarterly tuning
Plan a Standard Engagement

See the full service offering →

Use cases

Built for inboxes that matter.

Medical Researcher / PI

High-volume sponsor/IRB/manuscript inbox. HIPAA-aware. Daily digest collapses noise, surfaces what needs response.

Solo Practitioner Clinic

HIPAA-regulated by default. Audit chain on every staff access. Drafted patient correspondence for clinician review.

Fractional CTO / Consulting Firm

Multiple client mailboxes with isolation. Per-client style profiles. Meeting-request intercept across engagements.

Privacy-First Homelab

Podman + Tailscale + Ollama on a GPU you own. Self-service deployment with the same compliance posture as enterprise. Want it hardened for a regulated workload? That's a CTO conversation.

All use cases →

Verify it yourself

Open source. Signed releases. Air-gap-installable.

Everything here is inspectable: the supply chain is auditable and the install is buildable by your own ops team — no engagement required to deploy it yourself.

Public Source

Apache 2.0. Read the code, fork it, audit it.

github.com/Unlimited-Data-Works-LLC/Email-Triage

Signed, Traceable Releases

Every release is cryptographically signed and tied to the exact public build it came from — so you can prove the software you run is what was published. (For your reviewer: cosign keyless-OIDC signature, SLSA-3 provenance, and a separate operator-approval attestation; HIPAA installs verify both before pull.)

ghcr.io/unlimited-data-works-llc/email-triage

Air-Gap Friendly

Hash-pinned embedding-runtime tarball with SHA-256 sidecar. Sideload through the admin UI; same verification as the auto-download path.

See the deployment story →

Latest release · v0.2.0

Under active development — and it shows.

v0.2.0 deepened the compliance evidence and added features built for regulated research. A few highlights:

Whole-database encryption at rest

The entire database is now AES-256 encrypted on disk (SQLCipher), on by default, with a fail-closed boot — HIPAA §164.312(a)(2)(iv).

Regulatory Deadline Clock

Can be configured to watch for the mail that starts an FDA IND / EU SUSAR / IRB clock — detection is opt-in and a human confirms every clock; informational only, never assuming your regulatory liability.

Cross-inbox Study Digest

Track a study across mailboxes in one scheduled digest — no PHI persisted, delivered only to your own inbox.

See everything new in v0.2.0 →

Ready to take your inbox back?

A 30-minute call with Craig covers whether a sovereign build like this fits your environment, your compliance posture, and your team's workflow — and what it would take to stand it up for you.