IntelligentOldMan: turning a live inbox into agent-ready knowledge

IntelligentOldMan is my experiment in answering a uncomfortable question: how much of your inbox judgment can you hand to an autonomous system without losing accountability? Not “summarize my mail” — classify intent, validate the result, store it for retrieval, and let agents reason over the whole mailbox later.

Architecture at a glance

The pipeline is event-driven. New mail arrives through Microsoft Graph webhooks. A Spring Boot service pulls the message, runs intent classification through a local LLM, validates the structured output against a schema, and persists embeddings alongside metadata in PostgreSQL with pgvector. Infrastructure is provisioned on Azure with Terraform — the boring parts matter when you're iterating on model behavior weekly.

Why local LLM classification first

Email content is sensitive. Starting with a local model for intent extraction keeps the first pass inside a boundary I control before anything hits a cloud completion API. The tradeoff is operational — you own latency, versioning, and failure modes — but that's exactly what I wanted to learn.

What's still hard

Validation loops that know when to escalate to a human. Retrieval that returns the right thread context, not just semantically similar paragraphs. Agent tools that can act on classification without over-automating replies. The stack is familiar; the judgment boundaries are not.

← All writing · Canonical URL for cross-posts: tommarler.com/writing/intelligentoldman-architecture/