project · in progress
IntelligentOldMan — agentic email intelligence
IntelligentOldMan is my answer to a question most inbox tools dodge: how much judgment can you safely delegate to an autonomous system? Not “summarize my mail” — classify intent, validate the output, persist it for retrieval, and let agents reason over the whole mailbox later.
Problem
Email is unstructured, sensitive, and threaded. Generic LLM wrappers treat every message like a chat prompt. Production needs idempotent ingest, schema-bound classification, observable failure modes, and retrieval that returns the right thread — not just similar paragraphs.
Architecture
- Ingest: Microsoft Graph webhooks → queue → idempotent processing per message.
- Classify: Local LLM with JSON-schema enforcement (category, confidence, urgency).
- Validate: Structured output checks before anything is stored or acted on.
- Store: Chunked content + pgvector embeddings in PostgreSQL for downstream RAG agents.
- Infra: Azure resources provisioned with Terraform — iterate on model behavior without manual drift.
Key decisions
Local LLM for the first pass. Email content is sensitive. Keeping intent extraction inside a boundary I control before any cloud completion API sees raw text was non-negotiable for this experiment.
RAG as a product surface, not a demo. Retrieval quality is evaluated separately from generation. Wrong context is worse than no context — that lesson shaped how chunks, metadata, and thread boundaries are stored.
Stack
- Java, Spring Boot, Spring AI
- PostgreSQL + pgvector
- Microsoft Graph, Azure, Terraform
Status & next steps
Core ingest and classification paths are working; the hard parts remain escalation loops (when to involve a human), thread-aware retrieval, and agent tools that act on classification without over-automating replies.