Skip to content
Menu
All work

AI concierge: reliable automated booking

Before a 300-user launch, I ran a five-agent code audit that found 12 critical bugs. The assistant itself is designed to answer most requests without calling a model at all.

file
C-06
for
Coworking operator, with an agency partner
role
Tech lead, AI-process lead
period
2026
status
Shipped
critical bugs found by a 5-agent pre-launch audit
12
users at launch
300
deterministic intent handling before any model call
5 layers

01Context

A multi-location coworking operator wanted members to book meeting rooms and get answers by text message and web chat. I delivered it with an agency partner, on a team of about six.

My role was tech lead and AI-process lead: architecture, code review, the agent tooling the team built with, the pre-launch audit and a set of critical fixes. Most of the code was written by another developer, and I don't claim it.

02The problem

It had to be cheap per message, fast over SMS, correct across time zones, and safe to put in front of 300 members on day one. Calling an LLM for every "book room 2 at 3" fails the first two. Shipping without a hard review fails the last.

03What we built

  • A five-layer intent cascade: exact match, partial, fuzzy, semantic, then an LLM fallback. Deterministic layers go first; the model is the last resort.
  • A model fallback chain. A default model through a router, a second model, then a direct provider API. A Postgres-backed rate limiter and guardrails sit in front.
  • Stateful booking. A booking takes four to six turns and tracks 15+ state variables. Members can correct mid-flow ("actually make it 5pm") or switch intent.
  • An agent toolchain for the team. I turned 15 Claude Code skills into a shared skill library with a master orchestrator, so every developer's agents worked the same way.

04The hard parts

The pre-launch audit. I ran five analysis agents in parallel across 80+ files, then confirmed each finding. 12 critical bugs held up. One example: positional arguments passed in the wrong order silently corrupted date-range booking queries. Nothing crashed. Bookings would just have been wrong.

Concurrency. Two messages from the same member can arrive together. I added distributed locking and thread-safe sessions so they can't race each other.

Time. Booking corrections, bookings that cross midnight, and calendar updates that blocked replies. I fixed those, made calendar writes non-blocking, cleaned up session-expiry behaviour and added a Playwright end-to-end suite.

05Numbers

critical bugs found pre-launch
12
5 parallel agents, 80+ files, each confirmed
users at launch
300
March 2026
requests answered without an LLM
~95%
design target
latency for those requests
<10ms
design target
intent layers
5

06What I'd do differently

Instrument the cascade from the first message: log which layer answered each request and how long it took. Then the 95% would be a measured number instead of a target.

Run the multi-agent audit on every release, not once before launch. It was the cheapest bug-finding we did.

07Stack

  • Backend: FastAPI, Postgres, Alembic, JWT and role-based access
  • Channels: Twilio SMS webhooks, web chat
  • Integrations: workspace-management API, Google Calendar
  • Models: Gemini 2.5 Flash via OpenRouter, with fallbacks
  • Frontend: React, Playwright end-to-end tests
  • Ops: Docker, nginx, Cloud Build, Cloud Run

stack · FastAPI · Postgres · Twilio · Gemini via OpenRouter · Cloud Run

Need a senior AI engineer who can own delivery?

Tell me what you're building and where it breaks. I reply to every message myself.

Contract CTO · Principal AI engineering · Forward-deployed AI engineering · Enterprise AI architecture