JOHNBOT / v3
A personal chief of staff · built on Claude · runs all day, every day

The assistant that shows receipts.

01

A turn is an attempt.

02

A case is a promise.

03

Done is a receipt.

Most assistants answer questions and forget you the moment the chat ends. John Bot owns outcomes. It watches, plans, works, verifies — around the clock — and interrupts exactly once, with one button, when a decision is genuinely yours. Everything it claims to have finished, it can prove.

§01

One loop, closed all the way

Everything John Bot does — a message from you, a schedule firing, an email arriving, a server misbehaving — enters the same loop, and nothing leaves it without an ending.

SIGNAL
a message, a schedule, a watcher hit, a health check
CASE
an objective with done-criteria and a wake time
ATTEMPT
a Claude turn works the case
VERIFY
evidence checked, never just claimed
DONE
receipt on file — or retry, or one tap for John
The invariant behind it: every open case has a wake time, a running attempt, or John's name on the blocker. A deterministic check enforces this around the clock — work that used to quietly stall now goes loudly red. On day one, it surfaced eighteen forgotten threads. By morning, the bot had triaged seventeen of them itself.
§02

What it does

Fourteen capabilities, one temperament: do the work, prove the work, spend John's attention like it's the scarcest resource in the system — because it is.

Outcome ownership

Cases, not chats

Ask for a follow-up on Friday and it doesn't just agree — it opens a case with an objective, a definition of done, and a wake time. The case survives restarts, failures, and weeks of silence. It cannot close without proof.

How it worksEvery case carries done-criteria and a verifier. Marking one “done” without an evidence row on file is refused at the database layer — the code physically won't allow an unproven claim.
One-tap approvals

Your yes, made cheap

Outbound email used to mean copy, paste, send — your labor. Now the bot drafts, stages the exact payload, and hands you two buttons. Approve, and it sends, verifies the message ID, watches the thread, and closes the loop. Your part takes two seconds.

How it worksSends execute in a separate service under its own system user, holding credentials the AI process can't read. Each Approve button is bound to a single-use cryptographic token for that exact payload — edit the draft and the old button dies.
Watchers

Your inbox, watched — safely

A reply from someone who matters, sitting unread for four business hours, becomes a case within the half hour — nights and weekends included. No more “luck of the next check-in.”

How it worksWatchers are read-only and deterministic. Raw email text never touches an AI turn that holds tools: a quarantined, tool-less summarizer distills it first, so a malicious email can't instruct its way into the system. Hostile-email attack tests run in the build suite.
No silent loss

Failure has an owner

Before v3, a failed morning brief was simply skipped — forever, and silently. Now every kind of failure has exactly one owner that retries it, and anything that exhausts its retries lands in front of the right fixer instead of vanishing.

How it worksSchedules own their own retries with backoff. Proactive triggers re-arm if their work dies. Cases wake themselves. And exactly one owner per failure class means nothing ever double-delivers to your phone.
Self-healing

It fixes itself first

Twenty-nine health checks watch everything from disk space to expiring TLS certificates to its own watchers. Every possible red has a named owner: a mechanical fix it tries itself, an AI medic that investigates, or — rarely — you.

How it worksA single registry declares every check, its cadence, and its owner; the build fails if any check could go red unowned. Incidents close only on observed green — the system never takes its own word that something is fixed.
Structured results

Machine answers, human messages

Every proactive run ends with a structured verdict — acted, silent, blocked, or needs-you — so delivery, retries, and metrics run on data instead of parsing prose. You only ever see the human sentence.

How it worksNew message formats run in “shadow” for a week — validated silently on live traffic — before they're enforced. If a format ever regresses, a watchdog reverts it automatically and says so.
The daily digest

Proof of work, every evening

One message a day: what finished (with receipts), what fixed itself, what's staged and waiting, what it's watching, what it spent, and one batched list of the things only you can unblock. The invisible 99%, made visible.

How it worksThe digest is composed entirely from database rows — no AI writes it, so it cannot exaggerate. A quiet day sends nothing at all.
The scoreboard

99% is a number, not a vibe

Autonomy is measured nightly: verified completions over eligible work, human touches per outcome, silent losses (target: zero), cost per verified result — all against a baseline captured before the rebuild began.

How it worksEvery case is classified at birth — autonomous, one-tap, or yours-only — so the denominator is honest. No model participates in computing the score.
Commitment audit

Its word, checked against its deeds

When the bot says “I'll check tomorrow,” a deterministic audit verifies a real obligation was created — a schedule, a case, a watch. A promise with nothing behind it becomes a case within fifteen minutes.

How it worksEvery outgoing message is scanned for forward-promise language and cross-referenced against the turn's actual tool calls. The least visible failure — quiet forgetting — now has a tripwire.
Feedback loop

Thumbs that actually teach

React 👍 or 👎 to anything the bot sends and it asks one short question: why? Your answer is captured and routed — into the rule that produced the message, a standing preference, or a tuning case. Ignore the question and it expires silently; the thumb still counted.

How it worksAsks are rate-limited and never nag. Your reasons accumulate as labeled data, and changes they suggest land through review — the bot never silently rewrites its own rules.
Standing authority

Policy in your own words

You write authority in plain prose in your own notes. Fenced grant blocks inside it compile into standing permissions — “routine sends to the accountant are one-tap” — but only after you approve the exact diff, with a tap.

How it worksThe file is hash-gated: an edit changes nothing until approved, an unparseable edit freezes last-known-good and goes red. The governed system cannot write its own permissions.
Dead-man's switch

Watched, even in silence

Two machines heartbeat each other. If the server goes quiet, the Mac notices. If the Mac goes quiet, the server says so. Whole-machine silence — the failure that hides every other failure — is no longer invisible.

How it worksHeartbeats are data, not alarms; only sustained mutual silence escalates, so a sleeping laptop never pages anyone.
Memory

Remembers like a colleague

Standing facts with provenance and expiry dates, full-text recall across every conversation ever, and a human-editable “mind” — identity, mandate, priorities — that you keep in plain markdown files.

How it worksNothing is ever deleted; facts are superseded, never erased. Facts learned from external sources are labeled untrusted and rendered apart from your own words.
Delegation

Work bigger than a moment

Research, multi-file builds, long investigations — the bot spawns background workers that survive restarts and report back when done. It even builds parts of itself this way, with changes landing only through approved review.

How it worksDelegated workers run gated — no recursion, memory floors, attempt caps — and their reports return as ordinary turns, so everything stays on the same audited rails.
§03

How it's built

Three layers, two services, one database. The AI is the mind; everything that must never be wrong is deterministic code with a test pinning it.

The Mind

markdown files in John's vault
IDENTITY.md · Mandate.md
Who the bot is and what it's for — edited in prose, loaded into every turn.
Authority.md
What it may do on its own. Compiles into enforceable grants only after a tapped approval.
Now.md · Cash.md · daily notes
Current priorities and context. The human stays the source of truth.

The Runtime

one Python service · EC2 · SQLite
turn engine
Every input — chat, schedule, watcher, health event — becomes a turn: one call to Claude, fully audited, budget-capped, wall-clock-bounded.
case ledger
Outcomes live in SQLite: cases, evidence, attempts, approvals, metrics. A crash loses at most one attempt, never the promise.
sentinel
29 owned health checks, AI medics, mechanical tier-0 repairs, the due-case dispatcher, and the watchers — the always-on nervous system.
deterministic spine
Escalation, digest, scoreboard, and delivery are model-free code. The AI thinks; it does not get to grade its own homework.

The Surfaces

where you meet it
Telegram
Chat, voice memos, photos, approve/reject buttons, reactions. Reaching you is data — moving to Slack one day is one row, not a rewrite.
bridge-exec
The send-hand: a separate system user holding credentials and approval state the AI process cannot read or forge.
web console
A live dashboard of cases, turns, and health behind TLS and auth.

Honest about enforcement

Every safety control is labeled for what it really is. Mistake-prevention stops a confused AI; adversary-resistance stops a manipulated one. The credential isolation, scrubbed environments, single-use approval tokens, and quarantine are the second kind. The rest is the first — and the documentation says so plainly, because a safety story you can't audit is theater. One rule survives everything, verbatim: nothing external-facing sends without John's explicit yes. A tap is a yes.

§04

The numbers

V3 began by measuring the before — so the after means something.

404
tests as referee
up from 174 — every rule is a test
14 / 14 days
threads stuck waiting on John in the baseline — 8 were sends that are now one tap
18 → 1
forgotten cases surfaced by the no-orphan invariant on day one; the bot triaged the rest itself
0
the silent-loss target — due work with no wake time, no attempt, and no owner. enforced, not aspired to
13
AI agents built v3 in one evening — reviewed, test-gated, deployed live without downtime
every “done” since v3 carries a receipt a verifier checked
§05

The 1% that stays human

The goal was never zero involvement. It was zero labor. What remains for John is exactly the set of things that should never be automated:

  • TAPApproving a prepared send — two seconds, payload-bound
  • CHOOSEDecisions of taste and judgment, presented with a recommendation
  • AUTHLogins, OAuth consents, anything with a password
  • SIGNMoney, contracts, people — the genuinely human
  • NEVERCopying drafts, remembering follow-ups, re-running failures, checking whether a thing actually sent