Communication intelligence for a solo consultancy.

OFC Orchestrator captures iMessages, SMS, email, and calendar events — then routes, classifies, and archives everything with a 3-tier LLM pipeline. Built as a one-person ops backbone.

8 Containers
13 Cron Jobs
80+ Endpoints
3-Tier LLM Routing

Five data sources. One ingest pipeline.

Every communication channel flows through webhook ingest into staged messages, where the classification pipeline takes over.

iMessage
chat.db poll / 30s
Android SMS
ADB bridge
Gmail
OAuth2 / 60s
Google Drive
OAuth2 / 300s
Calendar
OAuth2 / 300s
▼ ▼ ▼ ▼ ▼
Webhook Ingest
Batch ingestion with SHA-256 dedup and contact resolution
Staged Messages
Quarantine for unknown contacts, noise filtering (80+ patterns)
Classification
3-tier routing pipeline with org assignment and confidence scoring

Rules first. LLM second. Judge third.

Each message passes through an escalating classification pipeline. Most get routed instantly by regex. The rest go through two LLM stages.

1
Tier 1

Rule-Based

12 org patterns defined in routing-rules.json. Regex matching against sender, content, and contextual hints. Instant assignment — no LLM needed.

Instant
2
Tier 2

LLM Classification

llama3.2:3b categorizes unmatched messages every 10 minutes. Assigns topic, org guess, and confidence score. Messages above 0.75 get auto-routed.

Every 10min
3
Tier 3

Judge Validation

qwen3-coder:30b reviews uncertain cases (0.4–0.75 confidence) every 30 minutes. Cross-references conversation context and contact history to make final calls.

Every 30min
80+ noise filter patterns Conversation context analysis Staleness re-evaluation Confidence scoring 12 org rule patterns

Eight containers. Two Fastify services. One compose file.

Everything runs on Docker Compose with Caddy as the reverse proxy. Ollama runs natively on macOS for Metal GPU acceleration.

:5678
ingest-server
Fastify — 26 routes, 13 crons, classification, digest, graph sync
:5680
project-api
Fastify — task/project REST API, multi-tenant
:5434
app-db
PostgreSQL 17 + pgvector — 24 tables, 20 migrations
:6381
falkordb
Graph DB — org/contact/project/conversation relationships
:8000
paperless
Document archive + OCR, full-text search, auto-tagging
:5435
paperless-db
PostgreSQL — Paperless metadata store
int
paperless-redis
Task queue for Paperless background jobs
int
paperless-tika
Content extraction — OCR for scanned documents
External (Host)
:11434
Ollama
macOS native — llama3.2:3b, qwen3-coder:30b, nomic-embed-text
:443
Caddy
Reverse proxy — auto HTTPS, TLS termination
Routes 26 files
Endpoints 80+
Cron Jobs 13 active
Tables 24
Migrations 20
API Keys SHA-256

Six capabilities. Zero manual effort.

Built for one person managing multiple clients. Every feature runs autonomously once configured.

Daily Digest

Per-user emails at 6 PM Denver time with HMAC-signed triage links. Promote, dismiss, or map contacts in one click. Admin aggregate for unvetted messages.

Semantic Search

pgvector embeddings via nomic-embed-text (768-dim). Full-text and vector hybrid search across the entire archive. RAG question-answering endpoint.

Contact Registry

Phone, email, and chat ID mapped to orgs. Quarantine for unknown contacts. Admin approval flow with contact proposals. Global SHA-256 message dedup.

Graph Intelligence

FalkorDB maps org, contact, project, and conversation relationships. 3-phase sync every 120s. Entity context queries via /api/graph-context.

Google Workspace

OAuth2 integration for Gmail threads, Drive file changes, and Calendar events. All captured, indexed, and fed through the same classification pipeline.

Triage Actions

HMAC-signed email links for one-click actions. Promote, dismiss, map contacts, approve proposals. One-time nonce with 48h TTL. No login required.