← INDEX/WORK/PTC-AI-OPERATOR

№ 10 — AGENTIC VOICE AI

PTC AI Operator

An AI operator — Claude Sonnet 4.5 behind an ElevenLabs voice — that answers the marketing line, follows the script, and books the appointment. Trained by mining 3,200 real calls.

TYPEWork improvisation · PTC
YEAR2026
ROLEArchitect · Engineer · Trained on the operators it relieves
STATUSGreenlit & paid · Production cutover — first real bookings landed
SCOPEVoice AI · Claude Sonnet 4.5 · Telephony · Call mining · Integrations

Why this exists

Professional Travel Center’s marketing line rings all day with prospects responding to mail campaigns. Human operators answer during business hours and book about 42% of answered calls into group sales presentations; after hours and on weekends, callers hit voicemail and die there. The fix: one shared platform, two AI agent roles — an Inbound Marketing Operator that answers, qualifies, and books appointments 24/7, and a Customer Service agent that captures member requests with pre-fetched research. The owner greenlit it as a real, paid build.

The part that makes it work is the training data. Before writing a line of agent prompt, I built a Playwright harvester over the company’s call-tracking system and mined ~3,200 recorded calls with outcome labels — then read 79 full transcripts line by line. The result is a script-as-performed: the exact beats top operators run, objections ranked by real frequency, phonetic-alphabet email readbacks, timezone handling, and the wording that loses calls. The AI doesn’t follow the script as written; it follows the script as it actually wins.

The reasoning behind the voice is Claude Sonnet 4.5, run at temperature 0 with six tools — session availability, book, reschedule, cancel, winning-code lookup, do-not-call — so every commitment the caller hears is a tool result, not a guess. A booking exists only when the booking tool returns it, and capacity is re-checked at write time against the live schedule. A drift checker diffs the live agent against the repo (prompt, tools, config) and fails on any difference, so what was tested is what answers the phone. The whole platform — API, dashboard, call harvester, audits, owner-facing PDFs — was built with Claude Code from the first commit in March 2026 to the prompt that is live today. First production call booked a real appointment into the fulfillment system on 2026-08-26.

What I engineered

CALL MINING

A harvester over 3,200 real calls

Playwright automation over the iovox call-tracking layer — login/recon/full-harvest modes, deep-pagination survival, idempotent re-runs. 79 transcripts pulled (booked and lost calls both), objections ranked by frequency, and the human booking baseline measured: 42% of answered calls. That number is the benchmark the AI has to beat.

VOICE

ElevenLabs ConvAI on the live line

The company’s RingCentral marketing number forwards via answering rule to a bridge DID fronting the ConvAI agent — so soft launch is literally a phone-system rule: humans keep business hours, AI takes nights and weekends. Recording-consent and AI-disclosure greeting on every call; off-script callers transfer to a human in hours, queue for callback after.

MODEL

Claude Sonnet 4.5 does the reasoning

Anthropic’s Claude Sonnet 4.5 is the LLM inside the ElevenLabs agent, at temperature 0, with six server tools it calls mid-call. The prompt is the mined script-as-performed plus the owner’s rules; the model handles objections, timezone math, phonetic email readbacks, and reschedules while the tools own every fact. Guardrails: recording consent and AI disclosure up front, a 15-minute call cap, structured not-booked reasons, and a drift check that fails the deploy if the live agent differs from the repo.

BOOKINGS

Real appointments, not demo rows

A direct client for the company’s fulfillment-system API (reverse-engineered from its Swagger spec): customer lookup → create → appointment write, validated against live per-slot capacity. Resilience rule: if the API errors mid-call, the agent completes the booking conversationally and the platform queues, retries, and flags — a caller never hears “our system is down.”

API

The glue layer

Express + TypeScript tool endpoints, Bearer-authed per role, with an HMAC-verified post-call webhook ingesting transcript and recording — conversation_id ties every write together. Session capacity is enforced atomically in a Postgres function, never trusted to the agent prompt.

ISOLATION

Two stores, three enforcement layers

Owner’s hard rule: prospect data and member data never touch. Two separate Supabase projects with separate credentials, row-level security within each, and route guards in the dashboard — isolation by architecture, not policy. Three user roles see exactly their queue and nothing else.

DASHBOARD

Queues + the built-in ROI report

Next.js dashboard with per-role working queues — appointment rosters with capacity, statuses, transcript and audio playback — plus an owner overview comparing the AI against the 42% human baseline: calls answered, bookings, show rate, cost per call.

ROLE 2

The deal-hunter CSR, already built

The second agent’s MVP shipped first: 24/7 member-request intake with pre-fetched deal research and a confirmation-only email — AI output never reaches a customer unsupervised. Its domain model is PTC-Database, my Next.js + Prisma rebuild of the company’s request database.

OWNER OPS

Deliverables an owner can sign

Branded navy-and-gold PDFs — the plan, the scope, the call-mining report, an operator coaching card distilled from the mined calls (now coaching the humans too). Plus compliance built in from day one (recording consent, AI disclosure, TCPA, A2P 10DLC), a one-click Render deploy blueprint, and a written incident postmortem for a DNS outage found along the way.

In the wild

Training pipeline — 3,200 mined calls distilled through a Playwright harvester and pattern mining into the agent's system prompt, benchmarked against the 42% human baseline
THE TRAINING LOOP — 3,200 CALLS → HARVESTER → PATTERN MINING → SYSTEM PROMPT, BENCHMARKED AT 42%
Live call architecture — answer via RingCentral bridge, availability and booking through the Bearer-authed API, instant email and SMS confirmation, HMAC-verified post-call audit
ONE CALL, END TO END — ANSWER → BOOK → EMAIL → TEXT → AUDIT, THREADED ON conversation_id
3,200CALLS MINED FOR THE SCRIPT
79TRANSCRIPTS READ LINE-BY-LINE
42%HUMAN BASELINE TO BEAT
24/7ANSWER RATE VS BUSINESS HOURS
Claude Sonnet 4.5 (Anthropic)ElevenLabs ConvAITwilio · RingCentralPlaywrightExpress · TypeScriptSupabase Postgres · RLSNext.jsPrismaHMAC webhooksResend · SMTPRenderSerper · Brave SearchClaude Code

Forward-deployed engineering in its purest form: standing inside a real business, seeing the phones, the script, and the booking system as one system — then mining the company’s own calls into training data and shipping an AI operator the owner greenlit, funded, and staked real revenue on.