Accounting-Ops launched today. I scaffolded the whole thing, tore it apart and reworked it into a three-level isolation model (workspace, entity, user), squashed six phase-zero bugs, pushed a polished landing and dashboard shell, and deployed live at accounting-ops.magicunicorn.dev. Thirty-three files for the refactor alone, twenty more for the UI pass. That was the arc. I've wanted a proper accounting service for a while and today it actually existed.
Meeting-ops absorbed the most commits by a wide margin. The headline was always-on recording: full audio capture that doesn't drop, a capture-only mode that skips browser inference on iOS and Android, and a server reprocess path that picks up chunks when the browser can't keep up. I also wired session attachments to Garage storage, added a move-between-orgs feature with cascade and Qdrant re-tagging, and consolidated the LLM consumers onto Qwen 3.6 35B-A3B, killing the Gemma+Vision split. The hyphenated domain got a 301 redirect too.
Listing-ops chased a few operational things: attribution at listing creation, payouts attribution with a clarity fix, a scheduler reprice-eval spam hotfix, version reads from pyproject instead of dist-info metadata, and the multi-tenant Phase 2 closure. The mobile CSS pass touched twenty-six files. End-of-day sweep on the roadmap and multi-tenant status kept things tidy.
I also wired session attachments to Garage storage, added a move-between-orgs feature with cascade and Qdrant re-tagging, and consolidated the LLM consumers onto Qwen 3.
Contact-ops spent the day on scaffolding and docs. I rewrote the README, developer guide, user guide, architecture doc, integration guide, and Claude orientation. Keycloak bootstrap scripts, an ADR on client topology, and a scopes matrix landed alongside the scaffold. It was mostly writing and organizing rather than shipping features, which is how these things usually start.
On the infrastructure side, uc-cloud renamed the traefik extension directories from traefik/ to traefik-commander/ and traefik-bigboy/ for per-node naming symmetry and path disambiguation. Small plumbing, but the kind of thing that makes future ops less confusing.
Forty-eight commits across five repos. Accounting-Ops went from zero to live, meeting-ops got its always-on spine, listing-ops tightened attribution and mobile polish, and contact-ops grew up a bit. The day added up to infrastructure that actually starts working.
Real product captures — click any to enlarge.