The problem
Task managers fail for the same reason gym memberships do: they require you to go to them. The moment capturing a task costs more effort than remembering it, people stop capturing tasks.
Households and small companies have the same shape of problem — things get agreed in passing, in a message or out loud, and then never make it into any system at all.
What we built
Command Centre is multi-tenant, where a tenant is either a family or a company. Every member of a tenant gets their own assistant — a Telegram bot with its own name and persona — that reads their messages and voice notes, works out what is a task or a reminder, and files it.
A web dashboard shows the tenant’s tasks and reminders. Billing runs through Stripe subscriptions per tenant.
The capture surface is deliberately somewhere people already are. Nobody has to open an app, and nobody has to learn a syntax.
Decisions
Transcription runs locally
Voice notes are transcribed on the server with whisper.cpp. Audio never leaves the
machine. Only the resulting text is sent onward for interpretation, and that goes to the
tenant’s own API credential rather than a shared one.
That is a slower and more awkward build than posting the audio to a hosted transcription service. It is the right call anyway: voice notes inside a family are about as personal as data gets, and “we never send your audio anywhere” is a claim worth engineering for.
One assistant per person, not per tenant
A shared bot would have been simpler. But the assistant reads personal messages, and personal messages belong to a person, not to a household. Per-member assistants keep the boundary where people expect it.
Tenants are families or companies, on the same model
Rather than build two products, both are the same tenant type with different defaults. A family and a small company want the same thing — shared visibility of what needs doing — and the differences are configuration, not architecture.
- TypeScript
- PostgreSQL
- Telegram Bot API
- Claude API
- whisper.cpp
- Stripe