Samuel BatesAI Solutions Manager, DoorDash Most AI dies in the demo. I build the kind that ships.

I build production AI for operations teams, lead the people who run it, and teach organizations to adopt it. At DoorDash: an AI support workspace other teams now run their own agents in, an outsourced support team working live cases in it, and 800+ people trained. Before any of this, I led a crisis-response team as an EMT.

See the work Résumé PDF
  • 200+ PRs merged in 2026
  • 800+ people trained
  • 3 promotions in 4 years
  • 2 Excellence Awards

Claude Code power userAnthropic's Claude Code team: “You're one of Claude Code's top users”

01 Lab

Demos you can walk around in.

Demos that run in your browser, and two open tools for working with AI agents.

The Arcade

Four titles where you can watch an AI think, in vanilla JS on raw canvas: one plays a maze game and shows its reasoning, one plays you at Four in a Row and shows its search, a flock of UFOs learns to fly, and a lander teaches itself to touch down on a mesa.

How it worksEvery game is a module on one small engine: a fixed 60-step loop, a fixed screen scaled to yours, and sound synthesized live. No libraries, no sound files, no build step.

Answer Finder

The bar at the bottom of this page. A 4 MB model on your own device matches your question to one of 62 answers I approved. Nothing is generated, so it can't make things up.

How it worksA small embedding model turns your question into a vector, and the closest of 494 sample phrasings picks the answer. When nothing is close enough, it says so instead of guessing.

  • On-device
  • 4 MB
  • No generation

Training wheels

A Claude Code plugin for someone's first pull request. A skill walks them through branch, commit, pull request and merge in plain words, and a hook keeps the agent to the git commands a first pull request needs, so nothing it does can't be taken back.

How it worksThe hook reads every shell command before the agent runs it. Git runs only from a short list. The classic ways to lose work get a one-line reason and a safer command, and anything the hook can't read exactly is refused too.

  • Claude Code plugin
  • Hook + skill
  • No dependencies

Field guide evals

An eval harness with its failures left in: a made-up field guide for trail volunteers, 100 questions with hand-checked labels, and five checks scored by code. The grounded baseline passes 26 of 40 questions it never saw, and the gallery shows the other 14.

How it worksThe guide, the rubric and the questions were committed before any code. Each version is tuned on one set and runs once on a set it hasn't seen, and only those scores get quoted. A set studied to find the next fix stops counting as held out, so a new one is written after each freeze.

  • Python
  • Held-out sets
  • Failure gallery

03 Selected work

Six builds, one rule: it isn't done until people use it.

Each one started as friction I'd lived with or a team brought to me. I built the tool, wired the measurement, and stayed through adoption. They're internal, so you get schematics instead of screenshots. Open any card for the case study.

2025 · Program + business case

Partner API Migration

A POS partner sunset its API. I sized the loss, wrote the funding case, and ran the program that kept nearly all of the revenue, under budget.

  • 4 funding options modeled
  • Nearly all revenue kept
  • Under budget

2025–26 · Program + live workshops

AI Enablement, Run Like a Product

From a leadership-summit workshop to an org-wide series where people from the business demo production work they shipped.

  • 800+ people trained
  • 70–100+ per session
  • Excellence Award

2025–26 · Full-stack product

Merchant Mapping Engine

Turned a multi-day spreadsheet workflow into a real-time product, and fixed the driver-level bugs that stall teams for weeks.

  • Days → real time
  • React + Fastify on Snowflake
  • Package owner

2025–26 · Production platform

Workforce Operations Platform

One real-time view of queues, service levels and staffing across outsourced vendors, replacing a legacy SaaS tool.

  • Live Snowflake data
  • Erlang C staffing math
  • Validated by an outside ops lead

2025–26 · Production AI agent · Tech lead

Specialist Support Chatbot

Agents said “wall of text, then abandon.” I rebuilt the answers into a format they act on, and other agents adopted the template.

  • Six-section answer format
  • Shorter answers, same accuracy
  • Template reused by other agents

2026 · Financial model + dashboard

Cost-Per-Task Model

The org's first model of what a unit of support work costs, in-house and at vendors, so automation gets judged against real money.

  • Exec validated
  • Weekly refresh
  • Reconciled before publish

2025 · Program + business case

Close Esc

Partner API Migration

A POS partner sunset its API. I sized the loss, wrote the funding case, and ran the program that kept nearly all of the revenue, under budget.

Timeline
8 months
Revenue retained
Nearly all
Budget
Under
Escalations
Daily → a few a week

Context

A major POS partner deprecated its v1 API with a large base of active stores still on it, and significant monthly merchant revenue exposed if they didn't move in time. Organic outreach was moving a small fraction of them each week, nowhere near the deadline.

What I built

I co-authored the funding request: sized the risk, modeled four investment options, and recommended white-glove vendor support for the highest-revenue stores. Then I designed the operating model end to end (CRM-routed queues, a fixed follow-up cadence, daily outreach targets, training and escalation paths) and built the dashboard that ran the program, with the full funnel and the revenue at every stage in one view.

The hard part

Deciding where not to spend. White-glove help for every store would have cost far more for little extra revenue, so the plan put the vendor pod on the highest-revenue stores and left the long tail to lighter-touch outreach. Then the pod had to handle a tricky migration without flooding the team with escalations, so I built its training (guides, screenshots, videos, an FAQ) and coached its lead.

Outcome

Nearly all of the at-risk revenue kept, delivered under budget. Escalations fell from daily to a few a week, and the training behind the migration earned a Merchant Services Excellence Award.

  • Business case
  • Operating model
  • Snowflake
  • Sigma
  • Salesforce
  • Vendor pod

2025–26 · Program + live workshops

Close Esc

AI Enablement, Run Like a Product

From a leadership-summit workshop to an org-wide series where people from the business demo production work they shipped.

People trained
800+
Session size
70 to 100+
Recognition
Excellence Award
Measured by
Who reaches each step

Context

Most AI training produces a good afternoon and no change in how work gets done. I co-designed and co-facilitated the first workshop, for senior leaders at the org's leadership summit, then built an org-wide series for an operations organization.

What I built

A four-phase framework leaders reuse, with a hands-on lab where each leader shipped a working AI solution in the room. Then a series where every session ships something people keep using: a skill, a template, a shared team setup. Session four was a builder showcase: people from the business demoed production work they had shipped, and I checked each merge record before describing their work to their executives.

The hard part

Access and hands-on work in the same session deliver neither. A domain owner showed me that midway through, so one planned session became four parts, starting with access and five words: repository, branch, commit, pull request, merge. The line that unlocks a non-technical room is reversibility: everything can be undone, and you're not an admin. When the first attendee hit a wall in the access flow, the path was corrected with screenshots that afternoon, and every access request was granted by the next morning.

Outcome

800+ people trained, a Merchant Services Excellence Award for the leadership workshop, follow-on AI projects in several of the teams that attended, and a series built to count who gets through each step.

Read the full write-up

  • Curriculum design
  • Live facilitation
  • AI coding agents
  • GitHub
  • Adoption metrics

2025–26 · Full-stack product

Close Esc

Merchant Mapping Engine

Turned a multi-day spreadsheet workflow into a real-time product, and fixed the driver-level bugs that stall teams for weeks.

Turnaround
Days → real time
Stack
React + Fastify + Snowflake
Ownership
Declared package owner
Now
Inside the workforce platform

Context

Merchant-to-account mapping lived in spreadsheets, with turnaround measured in days.

What I built

A dual-stack product: a React frontend, a Fastify backend-for-frontend, and Snowflake underneath. I'm the declared package owner, and it now lives inside the broader workforce platform.

The hard part

The bugs a team loses weeks to, fixed at the driver level: a snowflake-sdk browser-auth race that looped and opened multiple tabs (solved with promise-based connection locking), a typed callback that silently terminated the warehouse connection, and a silent row cap on the AI query service (solved with split queries and a truncation banner).

Outcome

Records flowing through production across the merchant programs it maps, with most phase-1 features live.

  • React
  • Fastify
  • snowflake-sdk
  • Prometheus
  • GraphQL

2025–26 · Production platform

Close Esc

Workforce Operations Platform

One real-time view of queues, service levels and staffing across outsourced vendors, replacing a legacy SaaS tool.

Data
Live Snowflake
Staffing math
Erlang C
Validated by
An outside ops lead
Releases
Weekly

Context

Support ran many queues across multiple outsourced vendors on a legacy SaaS tool, and the numbers that mattered were spread across systems that didn't agree with each other.

What I built

A production workforce platform that pulls those sources into one operating surface: dashboard pages covering queue health, SLA, and Erlang C staffing on live Snowflake data. Micro-frontend architecture, plus a typed component library published to the internal registry.

The hard part

Numbers people trust. The upstream systems didn't agree on names, so exact matches were rare; fuzzy matching closed nearly all of the gap. Later, a “fresher” copy of a source table turned out to drop the column one metric depended on, and a drop-in swap would have silently pushed that metric to 100%. A column-by-column parity check caught it, and it now runs before any table swap.

Outcome

An operations lead outside the team independently validated the numbers against the legacy system. The platform has shipped on a weekly release cadence through 2026.

  • React 18
  • TypeScript
  • Zustand
  • Snowflake
  • Recharts
  • Erlang C

2025–26 · Production AI agent · Tech lead

Close Esc

Specialist Support Chatbot

Agents said “wall of text, then abandon.” I rebuilt the answers into a format they act on, and other agents adopted the template.

Answer format
Six fixed sections
Answer length
A fraction of before
Accuracy
Held
Template
Reused by other agents

Context

I built a production AI agent for merchant support specialists, and it had an adoption problem. The feedback from the floor: “wall of text, then abandon.”

What I built

Rebuilt the prompt architecture around an enforced six-section answer: What This Means, Diagnostic Checklist, Action Matrix, Outreach Script, Still Stuck?, and CRM Reminder. Prose became something an agent can scan and act on.

The hard part

Format is the feature. Agents read under time pressure, so every answer leads with what to do next and keeps the same six sections, every time.

Outcome

Answers shrank to a fraction of their old length while holding accuracy. It led adoption among the internal AI agents, and other agents now reuse the template.

  • Enterprise AI agent platform
  • Prompt architecture
  • Adoption metrics

2026 · Financial model + dashboard

Close Esc

Cost-Per-Task Model

The org's first model of what a unit of support work costs, in-house and at vendors, so automation gets judged against real money.

Validated with
The senior director
Refresh
Weekly
Gate
Reconciled before publish
Privacy
Small groups suppressed

Context

Every conversation about automating support, or moving it to a vendor, ran into the same gap: no one could say what a unit of support work actually cost.

What I built

The org's first cost-per-task model on live warehouse data: cost per touch and per completed task, in-house and vendor, with a lineage tab that shows the exact query and a worked example. After walking the senior director through it, I turned the spreadsheet into a durable dashboard with a weekly refresh.

The hard part

The inputs are compensation data. The dashboard never queries the warehouse; only pre-aggregated figures with small groups suppressed ever leave it, and each weekly refresh has to pass a reconciliation check before it publishes.

Outcome

The org's first defensible number for what in-house and vendor support cost, validated with the senior director and refreshed every week instead of living in a one-off spreadsheet.

  • Snowflake
  • SQL
  • Python
  • Apps Script
  • Static dashboard

04 How I build

I build in Claude Code every day, and I run it like a team.

I give it what I'd give any team: a playbook, shared memory, the right tools, and a review before anything ships. Most of it is public, so you can check the work.

The Claude Code power-user package on a wooden desk: a card from Anthropic's Claude Code team, an orange Claude Code plush wearing a brown hat, an enamel pin, a sticker pack and a black cap with the Claude Code mascot.
Fig. 1 What Anthropic's Claude Code team sent: a card, a plush, a pin, stickers and a cap. Phoenix, 2026.

We're making it official: you're a Claude Code power user.

You're one of Claude Code's top users, and we wouldn't be here without you. Thank you for building with us.

The Claude Code team at Anthropic
  1. Fleet

    Big builds run as a fleet of Claude agents in Claude Code. On Starship Explorer, an orchestrator wrote the design contracts, Sonnet and Opus agents built in parallel lanes on separate files, and nothing merged until a reviewer signed off on types, functional tests, real-GPU screenshots and a frame-time budget. The contracts and gates are in the repo.

  2. Skills

    Work I repeat becomes a skill: a written procedure with its own checks, so every run goes the same way. Mine brief a session, run a retro, red-team a plan, and publish this site's Hill Money Watch digest through a script that rejects any draft that breaks the contract.

  3. Hooks

    Hooks do what shouldn't depend on anyone remembering: each session opens with the project's state already loaded, and every commit is logged for the retro.

  4. Memory

    Decisions, error patterns and fixes carry over between sessions, and a mistake that shows up three times becomes a written rule. I open-sourced the core of it as agent-os: hooks, skills, memory and a session lifecycle for Claude Code.

  5. MCP

    MCP servers give agents real tools instead of guesses: a browser to test in, current library docs, the data a task needs. When nothing fits, I build the server.

  6. Evals

    Model changes pass a test before they ship. On the copilot, a retrieval change had to rescue questions that used to come back empty without pushing a right answer down. The answer bar on this page is scored on questions written before any model saw them: right first 81% of the time, in the top three 93%, and a test fails if an edit lowers either. How it was evaluated.

agent-os, my Claude Code setup All my public repos

05 Background

From the ER to production code in eleven years.

Most engineers don't have this path: ER scribe lead, then EMT and crisis-team lead, then operations, then production code. The pattern: every role ran the operations the next one automated.

Recognition

  • Claude Code power user, 2026: recognized by Anthropic's Claude Code team as one of Claude Code's top users.
  • 200+ pull requests merged in 2026, every one built with AI coding agents, and 211 reviewed from 33 authors.

How I work

  • Measure on the real thing. A test fixture hid four retrieval bugs; the real playbook exposed them.
  • Two agreeing documents are one source. Load the live page before trusting either.
  • “The code exists” isn't “the user can do it.” Before promising what an AI can resolve, list the actions it can actually reach.
  • Count adoption, not attendance. Every session ends with something people keep using, and I track who gets through each step.
  • A fix is done when every copy is fixed. Fetch it back from wherever people actually read it, then check it.

06 Toolkit

What I ship with.

TypeScript, React, Node, Go, Fastify, Snowflake, and Claude Code for building with AI.

Let's build the system that fixes the bottleneck.

Email is the fastest way to reach me.

Phoenix time · UTC−7 all year; Arizona skips daylight saving

Email me Résumé PDF