Dispatch 263
Week ↗

Friday, May 22: The day the stack learned to count itself

150 commits. Ten repos. Friday. The kind of day that compounds. The headline was contact-ops: I built an entire agent framework from nothing and wired it into a working inbox that actually processes decision…

Commits
150
Systems
10
Read
2min
Product capture

Accounting-Ops — journal.

150 commits. Ten repos. Friday. The kind of day that compounds.

The headline was contact-ops: I built an entire agent framework from nothing and wired it into a working inbox that actually processes decisions. Not a wireframe, not a mock endpoint, but a system where an agent can detect conflicts, propose resolutions, and a human can approve, reject, or snooze them with evidence panels and tiered confirmation. Phase 3 began Friday. By Friday afternoon it was shipping.

The foundation was a BaseAgent class with a registry, a trust ladder, and enough infra that the agents don't burn cash or hang forever: Celery workers, a cost guard with five layers, an outbox, a dead-letter queue, and a circuit breaker. I wired up observability with OpenTelemetry and Prometheus, and I built MCP tools for agent administration, tenancy, and ACLs. The inbox itself got a full UI: three-pane resizable layout, virtualized list, bulk actions, snooze picker, focus mode, structured diffs with per-field choice, evidence panels, confidence dots, agent badges, and a command palette for keyboard users. The backend had Pydantic schemas, service layers for mutations and queries, suppression rules, case file links, an inbox snooze flipper Celery beat task, and 50-plus tests across unit and integration suites.

The headline was contact-ops: I built an entire agent framework from nothing and wired it into a working inbox that actually processes decisions.

I also built the dedup agent, the calibration daemon, a FalkorDB graph sync layer with Cypher, and voice match with voice fingerprints and Qdrant search. Importers for five sources (Google Takeout, LinkedIn CSV, vCard, iCloud CardDAV, Nextcloud CardDAV), photo and voice-sample tools with presigned uploads, Garage S3 storage with lifecycle policies, and a full migration path from schema 0001 through 0026 (note: contact-ops migration 0026 was Phase 4, not Phase 3). The backend was solid. The frontend was polished with a brand pass, a 3D graph viewer, lazy-loaded routes, and mobile support across every surface.

On the accounting side, the work was more about consolidation than novelty. accounting-ops got Phase 2 wiring for categorization, journal, reports, and CPA export, Phase 1.6 encrypted-at-rest credential storage, a real workspace and entities backed by a database, Keycloak OIDC login, live cash position from SimpleFIN, and a mobile-responsive dashboard overhaul that splits assets from credit card debt with per-entity breakdowns. I scaffolded three new MCP connectors (SimpleFIN, eBay Finances, IMAP receipts), two worker services (receipt extraction, reconciler), and a full CPA export service supporting IIF, QBO, CSV, and PDF. The eBay connector scaffold was 4,120 lines across 23 files; the canonical shape commit added another 1,394 lines across 14 files.

Meeting-ops shipped v1.0.0 with bulk import admin controls, a Brigade graph viewer embedded in session details, Parakeet streaming, and a native iOS bootstrap in Swift and SwiftUI.

Also today: docs everywhere. Architecture guides, user guides, ops runbooks, deployment docs, agent framework docs, carddav setup guides, graph recipes, backup scripts, and design documents for Phase C iOS, bulk audio import, and server live streaming.

150 commits is a lot of surface area, but the real story was simpler: contact-ops went from agent framework to production inbox in one day, accounting-ops finished Phase 1 and 2 wiring across five new services, and meeting-ops hit v1.0.0 with iOS bootstrap. Friday was the day the pieces stopped being separate projects and started feeling like one product.

Also in the frame

Real product captures — click any to enlarge.

accounting ops
contact ops
accounting ops