Skip to content

fast-classifier v0.1.0

Latest

Choose a tag to compare

@ahmadatallah ahmadatallah released this 03 Jul 19:45

The first release of fast-classifier — a deterministic, rule-first email classifier for Fastmail: sweep newsletters, file everything into labels, flag what needs action. Dry-run first. Never deletes.

Born from a live session that organized a real 6,551-email inbox (3,849 newsletters swept, 5,573 emails filed into 14 labels, 87% rule coverage) — hardened into a typed, tested library with a CLI and an MCP server.

📚 Docs: https://ahmadatallah.github.io/fast-classifier/

Highlights

  • Safety as architecture — mutating commands are dry-run until --execute; the provider interface has no delete methods and the JMAP layer runtime-asserts no destroy ever leaves the process; >100 planned mutations prompt for confirmation; append-only TSV audit gives resumable runs.
  • Build your rules from your own inboxanalyzesuggest (generic domain catalog + interactive unknown-domain walk, --write scaffolds your config) → plan (coverage % + top unmatched senders) → iterate.
  • Two transports — JMAP direct (default, full power) and Fastmail's official MCP endpoint, behind one MailProvider interface with an in-memory provider for tests.
  • MCP server modefast-classifier-mcp exposes 11 tools over stdio for agents; writes gated behind --allow-execute, forced dry-runs marked forcedDryRun: true.
  • Needs-action scoring — weighted keyword language packs (English default, German opt-in), unread and personal-sender-awaiting-reply heuristics.
  • Report tooling — every report as JSON, CSV (--csv, --csv-field), or a terminal table (--view via tennis).

381 tests, no network in any test. Install from a clone (bun ≥ 1.1) — see the quickstart. npm package planned.