Why I built Chief

Most inbox tools help you do more. I wanted the opposite: fewer things competing for attention, without ever hiding something I actually need to answer.

Chief is a personal AI chief of staff that learns how I work from my Gmail and calendar, then gives me a calm, evidence-backed view of what needs me. Its win condition is not engagement. It is that I need the inbox less.

What it does

Chief runs as an always-on personal assistant and turns a noisy workday into a small set of decisions:

  • a morning brief covering what changed, what needs a decision, who is waiting, and what matters before each meeting;
  • an inbox “Membrane” that separates what needs me from what can stay quiet, while keeping every item inspectable;
  • Telegram delivery and mailbox-grounded Q&A so I can ask about recent mail and calendar context without opening another dashboard;
  • an approval queue for bounded mailbox actions, with every decision recorded;
  • an “It noticed” shadow loop that looks for commitments or cadence changes worth surfacing, but stays quiet unless the evidence clears a high bar;
  • an Understudy ledger that measures whether Chief predicted my decisions correctly before it earns more authority.

Chief treats incoming email as untrusted data, not instructions. Uncertain or high-stakes items fail toward visibility. Writes are narrowly scoped and approval-gated. Actions pass through one gateway with authorization, policy, egress, and audit checks, and the audit chain is tamper-evident.

How I built it

Chief is a TypeScript monorepo with a long-running Node.js service, a lightweight web surface, and shared packages for core contracts, data, agent behavior, adapters, and evals.

The service connects to Gmail and Google Calendar, stores encrypted state and memory in Supabase Postgres with pgvector, runs on Google Cloud Run, uses Gemini models through Vertex AI, and delivers briefs and decisions through Telegram. Deterministic checks own routing, thresholds, permissions, retries, and audit behavior; models are used only for bounded synthesis and judgment.

The product is built around narrow seams and fail-closed behavior: OAuth tokens are envelope-encrypted, third-party text is data-marked, outbound domains are allowlisted, new-recipient sends are refused, and an append-only hash chain records what Chief read, proposed, and did.

How I used Codex and GPT-5.6

Codex powered by GPT-5.6 was my primary engineering collaborator during Build Week. I used it to map the product into testable slices, navigate the cross-package architecture, implement and review TypeScript changes, write regression tests, run adversarial security reviews, diagnose live deployment failures, and keep the runbook honest about what was actually deployed.

The human-owned decisions stayed explicit: build for subtraction instead of engagement, start read-first, fail closed at trust boundaries, never let inbound mail become authority, require approval for writes, and keep sensitive inference in shadow mode until real evidence justifies showing it.

Challenges

The hard part was not generating a summary. It was making an assistant trustworthy enough to live beside a real inbox.

Prompt injection had to be treated as a system property, not a prompt tweak. Always-on scheduling had to survive restarts without duplicating briefs. OAuth and restricted Gmail scopes had to stay narrow and revocable. The assistant also had to resist the urge to sound clever: if it is unsure, it says so; if nothing needs me, it stays quiet.

What I am proud of

Chief is a coherent end-to-end system rather than a chatbot demo: live adapters, persistent memory, a web and Telegram experience, approval-gated actions, privacy controls, deterministic evals, and an operational Cloud Run path all share the same contracts.

The most important accomplishment is the trust model. Chief can explain what it noticed, show the evidence, record the decision, and do nothing when the safe answer is to wait.

What I learned

The best personal assistant is not the one that talks the most. It is the one that earns the right to subtract.

I also learned that “agentic” should not mean nondeterministic. Models are useful for synthesis and judgment; permissions, state transitions, spend limits, privacy boundaries, and auditability belong in ordinary code.

What's next

Next is deeper dogfooding on the builder's inbox, calibrated onboarding for the first two users, and measured promotion of shadow features only after their precision is proven. Self-serve signup, broad integrations, and autonomous action can wait until the trust receipts say they should exist.

Built With

Share this project:

Updates