Owner & engineer (Software Is Nothing, LLC) · 2026–present
Executive AI Assistant: local-first & data-sovereign
A self-hosted executive assistant that triages email, drafts replies in your voice, and waits for one-click approval. Every LLM call routes through a single local gateway, and a send-safety boundary defaults to "cannot send."
What it is
A white-label, data-sovereign executive assistant built to run on hardware its owner controls. No customer data leaves for a third-party AI cloud unless explicitly allowed. It ingests email, triages it, drafts replies, runs them through an automated quality gate, and delivers a digest for one-click approval with a 30-second undo before anything is actually sent. It's built for European companies that want what an AI assistant can do without their data leaving the building; a live, access-controlled demo is deployed for an Innsbruck-listed industrial company.
How it's built
- Backend: Python 3.12 + FastAPI, APScheduler (persisted job store) for the recurring pipeline, SQLModel on SQLite with a documented one-variable migration path to Postgres.
- Dashboard: Next.js 15, deployable via Docker Compose alongside the backend.
- Connectors: 17 business integrations (web analytics, payments, ads, CRM, support, HR, and a bank-statement parser), so the assistant can answer from the company’s own live data, not just its inbox.
- Single AI path by design: every LLM call goes through one local LiteLLM gateway function. The codebase has no other outbound path to any AI provider, cloud or otherwise. That's an architectural rule, enforced in one place, so "where does our data go" has exactly one answer.
- Send-safety boundary: sending is off by default (a per-deployment flag) and every outbound send funnels through a single caller module: one audited chokepoint that can actually put a message on the wire. The dangerous capability is opt-in, not opt-out.
- One golden image: no per-customer code forks. All branding and customization is config/theme-file only (env-var-driven CSS custom properties), so a new deployment is a config change, not a rebuild.
Why it's here
What matters most for putting AI in front of real users is making the powerful, irreversible action safe by default: a single audited AI path, a send boundary that fails closed, and a human approval step with an undo window. The same instinct runs through everything else here.