2026
In progressMastermind
A personal system that tracks where my time actually goes and clears the busywork out of the way — running entirely on my own machine.
A walkthrough is being recorded — it will appear here when it goes up.
Mastermind started from a personal complaint: I couldn't tell where my week had gone. Email and calendar events land in one local store, each one gets scored for importance and urgency, and what comes out is a ranked view of what actually needs me — plus a daily record of where the time went. Underneath sits LocalAI, the engine layer handling connectors, triage, and search.
The design constraint that shaped everything was a hard $0 operating cost. That rules out the easy answers: no hosted model API, no managed embeddings, no rented search. What's left is more interesting to build — deterministic rules doing the first pass, a small local model for the ambiguous cases, and SQLite's full-text search doing the job a vector database usually gets hired for. The constraint forced me to actually solve the problem instead of paying to route around it.
It also means privacy is a property of the architecture rather than a promise. Full message bodies are never stored, retention caps at 30 days, and every write permission — labels, drafts, send, calendar — is off by default. Nothing leaves the machine, because there's no code path that would let it.
What I built
- Rule-first triage: deterministic term matching handles security alerts, job digests, and social noise before any model runs — the local model is only invoked for messages the rules can't confidently classify.
- Two-model split on Ollama — a 4B quantized model for high-volume triage, a 9B for quality passes — keeping latency low without giving up judgement on hard cases.
- Search built on SQLite FTS5 across email, events, tasks, and notes, deliberately chosen over embeddings so search stays free, fast, and offline.
- Privacy enforced in configuration and code: no full-body storage, 30-day retention, and every write scope plus cloud inference off by default.
- Incremental Gmail and Calendar sync on a scheduled job, exporting a daily brief as Obsidian-compatible Markdown.
- Exposed as an MCP server, so any agent can query the store through a typed tool surface instead of a bespoke integration.