Dispatch 245
Week ↗

Sunday was meeting-speaker-detection-and-everything-else day

Sunday. 45 commits across 7 repos. That number tells the whole story: I built speaker diarization into meeting-ops and then spent the rest of the day plumbing it through, while a handful of other repos got t…

Commits
45
Systems
7
Read
3min
Product capture

Ops-Center — admin command dashboard.

Sunday. 45 commits across 7 repos. That number tells the whole story: I built speaker diarization into meeting-ops and then spent the rest of the day plumbing it through, while a handful of other repos got the usual polish.

The headline was meeting-ops. I added a full speaker identification pipeline: a SpeechBrain ECAPA model with optional Pyannote 3.1 as a microservice, a new 006 migration for speaker library tables, ORM models, backend API endpoints at /api/speakers/*, and a frontend Speakers page with a SpeakerTagger component. The lifecycle hook identifies speakers before embed_meeting fires. I also wired up the provider registry so LocalSpeakerSvcProvider replaced the old diarization placeholder. Then I went in and fixed the actual runtime bugs: segments with inline embeddings weren't being identified correctly, the identify endpoint needed to fire from the async request handler (not a sync one), and after rewriting transcript_diarized the flag_modified call was missing. Four fixes on the same system, which is how I always do it: ship the feature, discover the edge cases, patch them.

Test coverage went in alongside the speaker work: SpeakerLibrary and SpeakerTagger Vitest suites, plus RAGChat and Digests tests. The multi-org scoping migration from the earlier Phase 2 was already baked in, so the speaker layer inherited that organization boundary for free.

I added a full speaker identification pipeline: a SpeechBrain ECAPA model with optional Pyannote 3.

Project-ops got six minor version bumps in one day. CSV export popover with date-range and status scope for every dashboard page (contacts, documents, my-tasks, organizations, projects, users). Bulk activate/deactivate/delete on organizations. Pinned tasks on the My Tasks page using localStorage scope. Kanban empty-state polish for zero tasks and zero filter matches. A print stylesheet for the project detail page, plus a print stylesheet nit in v1.6.58. It's the kind of quiet compounding that makes the tool actually feel solid without making any noise.

Listing-ops was the heavyweight refactor. A unified ToolSet for the agent loop, 1,786 lines added across 25 files in core. The API routes and MCP went through it. Then the runtime forward-ref errors from the Codex ToolSet refactor showed up across auth, DB, and router deps (31 lines added, 51 removed, 8 files). Fixed those. Restored the pre-commit hook and frontend baseline. Wired attachments and structured SSE event types on the agent panel. Added a Sign out button. Fixed the auth callback redirect (was returning a JSON blob, now goes to /). Added the eBay OAuth flow with a Connect-eBay UI component. And fixed prod /api routing because the frontend was hardcoded with a prefix that doesn't exist in production. Listing-ops ate the biggest diff today by far and came out cleaner.

Ops-center got three identical federation backports: peer auth fixes lifted from deploy/commander. Crisis-management-ops got docs linked to project-ops PROJ numbers and a frontend scaffold for Sentry source-map uploads, 645 lines added across five files. Majiks.kids got the remaining onboarding polish: personalized songs UI shell and API, checkout success page, library pages, playlists, parent/children, new-song form, settings, public pages for albums, playlists, and a single playlist detail page. And majiks.kids got onboarding flow with parent, pricing, privacy, and terms pages. magicunicorn.tech got a single cache-bust for version.json fetch on the meeting minutes page.

Also today: the usual Sunday sprawl.

All of it adds up to a day where meeting-ops got its missing speaker layer, listing-ops got a real agent loop, and the rest of the fleet got the polishing that makes it feel less like prototypes and more like tools people use.

Also in the frame

Real product captures — click any to enlarge.

majiks
listing ops
uc cloud