← All work

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 — with every LLM call routed through a single local gateway and a send-safety boundary that defaults to "cannot send."

PythonFastAPILiteLLMNext.js 15SQLModelAPSchedulerDocker

What it is

A white-label, data-sovereign executive assistant built to run on hardware its owner controls — no customer data leaving 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.

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.
  • 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

It's a compact study in the thing that matters most for putting AI in front of real users: 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.

← All work