Business Dashboard
A local-first control centre for running a business day to day: email, calendar, and task logic each handled by an automated worker behind one admin UI, instead of switching between a mail client, a calendar app, and a to-do list. The source is closed, so this page describes the system rather than linking out to it.
What it's for
The idea is a single place to supervise the recurring, rules-based work of running a business, rather than one more inbox tab: triaging and drafting email, keeping a calendar in sync, and running the small business logic (reminders, follow-ups, status checks) that otherwise lives in someone's head or a spreadsheet. Each of those is modelled as a task an automated worker can pick up, not a manual chore.
Email triage & drafting
Sorting, labelling, and drafting replies to routine email, with a human approving anything that goes out.
Email into structured data
Turning an inbox into a spreadsheet, a task list with its own done/not-done interface, or another structured view, the same underlying extraction feeding whichever output the task calls for.
Calendar management
Keeping a calendar in sync, scheduling meetings, and flagging conflicts before they become a problem.
Contacts & CRM
A record of who a business talks to and what was last discussed, instead of that context living in someone's inbox.
Client timelines
Every email, call, invoice, and meeting for a client threaded into one running timeline, so the full relationship history is a scroll, not a search across four tools.
Invoicing & expenses
Generating and tracking invoices, and logging expenses, as tasks with their own status rather than loose paperwork.
Banking, read-only
A bank feed connected through a read-only banking API: balances and transactions visible for reconciling against invoices, with no ability to move money.
Reminders & follow-ups
Recurring or conditional nudges (chase an unpaid invoice, follow up after a meeting) that fire on their own.
Document handling
Filing and retrieving the contracts, receipts, and reports a small business accumulates.
Reporting & KPIs
A rollup of the numbers that matter, generated from the same task data rather than a separate manual report.
Alerts & notifications
Surfacing what needs a human's attention now, instead of requiring someone to go looking for it.
Business planning & research
Pulling together market or competitor research into a working draft plan, a starting point to edit rather than a blank page.
Online marketing
Drafting and scheduling posts and campaign copy across a business's channels, with a human reviewing before anything publishes.
Personal tasks & scheduling
The same task and calendar model applied to someone's personal side, not just the business one, so both live in one place instead of two.
An assistant for a CEO's day
The point of all of the above together: one running view of what needs a decision today, prioritised, instead of a founder piecing that together from six different tools each morning.
Not all of these are built yet; the point of the architecture is that each one slots in as another task type behind the same worker and provider abstraction, instead of becoming its own bolted-on integration.
How it's built
A TypeScript monorepo split into clean architecture layers: a Fastify API for task management, a scheduler process that periodically syncs enabled tasks, and a worker process that executes them through a provider abstraction.
Markdown-defined tasks
Task metadata (agent, provider, schedule, enabled state) lives in YAML frontmatter, not a database row edited by hand.
Queue-backed execution
Enabled tasks are enqueued through Redis and BullMQ rather than run inline on a request.
Provider abstraction
A deterministic local stub for offline development, and a hosted LLM provider when a key is present, behind the same interface, so email/calendar providers slot in the same way.
Workflow runner
Supports task, loop, branch, retry, and cancellation semantics, not just a single request/response call.
React admin UI
One dashboard shell for viewing and toggling tasks, talking to the Fastify API underneath.
Documented API
Swagger UI mounted directly by the backend, generated from its own route definitions.
Why it's not linked out yet
This one stays private for now: the task orchestration core above is built and working, but the email and calendar integrations it's meant to supervise aren't wired in yet, and it isn't deployed publicly the way api-test-gateway and the control plane are. I'm keeping the code itself closed until there's a public deployment worth pointing at.