The assistant you described.
Already working.
You asked for an AI chief of staff that lives on your phone, hears you, checks your calendar, and acts on your behalf with your approval. Instead of telling you I could build it, I built the core of it. This page is the walkthrough.
Walk out of a meeting late. Say one sentence.
That was a demo. This is the code.
Behind the visuals is a real agent I wrote in TypeScript: Claude choosing tools against a governed tool layer, with a human approval gate enforced in the runtime. Here's an actual captured run against the live Anthropic API, condensed to fit this page. The full transcript ships in the repo.
you I'm running 10 minutes late for my 3pm with Dana, see if we can push it 30 minutes. → tool get_calendar_events {"date":"today"} ← get_calendar_events: 5 events → tool find_contact {"query":"Dana Whitfield"} ← find_contact: 1 contact match(es) aide I found the meeting: your 3pm is "Product roadmap review" with Dana Whitfield (Northwind Partners). Heads up: pushing it 30 minutes would put it 3:30–4:00, which lands flush against your 4pm Board prep hard hold. I'll proceed with the 3:30 shift and text Dana since that's her preferred channel, unless you say otherwise. → tool move_meeting {"event_id":"evt_004","new_start":"…T15:30:00","tentative":true} ⛔ CONFIRMATION GATE · the agent wants to: Move "Product roadmap review" from 3:00 PM to 3:30 PM (tentative) Approve? [y/n] y ✓ approved by user → tool draft_message {"channel":"sms","body":"Hi Dana, Alex here. Running about 10 min behind…"} → tool send_message {"draft_id":"draft_1"} ⛔ CONFIRMATION GATE · the agent wants to: Send SMS to Dana Whitfield Approve? [y/n] y ✓ approved by user ← send_message: sent aide Done. I moved the 3pm Product Roadmap Review with Dana Whitfield to 3:30–4:00 (marked tentative) and texted her to confirm. One flag: that new end time lands right up against your 4pm Board prep hard hold, so there's no buffer. 20.1s · 5 model call(s) · 16094 tokens · ~$0.0412
The gate isn't a prompt asking the model to behave. It's control flow: the send and the calendar write cannot execute without a human yes, and every read, draft, approval, and send lands in an audit trail. Decline a draft with a note and the agent revises and resends. I'll screen-share the repo and run it live on the call.
Why this ships in weeks, not quarters
A frontier model, not a science project
Claude, on the Anthropic API or inside your AWS account via Bedrock. No model training and no RAG pipeline, because your calendar and contacts are live API calls. That subtraction is where the speed comes from.
One governed tool layer, every surface
In the production build, these five tools live on an MCP server (the open standard for agent tools) serving the phone, the web dashboard, and the texting surface alike. Add "book travel" once and every surface gets it the same day.
Trust is code, not vibes
Approval gates the model can't bypass, tentative moves until the other person confirms, and a full audit trail. The same human-in-the-loop pattern my RepBot runs in production today, booking real appointments.
Three weeks to a real loop. Then a real product.
The full vision (mobile, web, voice, autonomous decisioning, dashboards) is a serious product. The way to de-risk it is to ship the working loop first and let it earn every expansion.
The loop is real
Your assistant gets a phone number. Text or dictate to it from anywhere and it runs the late-meeting scenario against your live calendar, gates and audit included, closing the loop when the other person replies. You use it daily from week three.
A product, not a demo
The iOS app via TestFlight with true conversational voice under a two-second budget, more scenarios (schedule, cancel, daily brief), per-action autonomy rules, and the web dashboard. Two to five executives.
Scale and earned autonomy
Counterparty-aware autonomy, proactive conflict fixing, admin and governance, executive dashboards, and the messaging-platform decision made with data instead of guesses.
Kyle Bartlett · Bartlett Labs
I build and ship production agent systems. RepBot, my multi-tenant, HIPAA-ready AI voice receptionist, is the closest living relative of what you're after: it books appointments, sends SMS, and keeps a human approval step in the loop, in production today. Before going independent I was the AI Lead at Anker, where I ran enterprise AI adoption and governance and built over 300 business automations.
I work daily in Claude Code, TypeScript, and MCP, which happens to be exactly the stack this product wants. Everything on this page, the demo, the working agent, and the plan, was built in four days.
More at Portfolio.BartlettLabs.io, or reach me directly at kyle@bartlettlabs.io.
Give me 30 minutes.
I'll bring the working code and run it live, walk you through the one architecture decision that shapes everything (what "iMessage" really means for the build, and the three honest ways to get there), and leave you with a scoped plan that puts the working loop on your calendar in two to three weeks.
Straight to my inbox: kyle@bartlettlabs.io