Skip to content
Jason Lim
Back to projects
Live voice AI agent

Order Status Voice Agent

Conversational voice AI for order status lookups

Voice AIConversational AIMulti-tenant ArchitectureData Integration

Business Problem

Order status is the single most repeated question in e-commerce support: high volume, low complexity, and fully answerable from data the business already has, making it a strong fit for a voice agent and a poor use of a human agent's time.

Customer / User Context

Built for two distinct users: the end customer calling to check an order in one of five languages without navigating a phone menu, and the recruiter or engineer evaluating the project with well under two minutes to judge whether it demonstrates real integration and architecture skill rather than a scripted demo.

Approach

The agent greets the caller, confirms which of three demo stores they ordered from, accepts a preferred language, then asks for an order number or checkout email. It calls a look_up_order webhook tool registered directly on the agent, which queries a live Postgres table on Supabase scoped to that store, and reads the result back in natural spoken language: processing, shipped with carrier and tracking number, or delivered.

Architecture

A single shared orders table and a single shared webhook tool serve three separate demo stores, with store passed as a required parameter on every lookup rather than standing up three separate deployments. The ElevenLabs agent calls the look_up_order tool, which hits a stateless FastAPI endpoint on Vercel that queries Supabase Postgres with row-level security enabled and an explicit grant to the service role.

01

Business Workflow

Caller states store and language, then order number or checkout email

02

Data Sources

Supabase Postgres orders table, 30 seed rows across 3 stores, RLS with service_role grant

03

System Architecture

ElevenLabs Conversational AI agent calls the look_up_order webhook tool

04

Deployment

Stateless FastAPI backend and widget on Vercel

05

Business Outcome

Voice to tool to live database to spoken response, verified end to end

Technology Stack

ElevenLabs Conversational AIFastAPIPythonVercelSupabase (Postgres)

Business Outcome

The full path, voice to tool to live database to spoken response, works end to end and is verified against real Supabase rows rather than mocked data. The agent handles three demo stores and five languages through one shared schema and one shared tool, and the project is documented well enough, via a case study and a self-service integration guide, to be legible to someone outside the build in under a minute.

Lessons Learned

Every major failure hit while building this got found and fixed rather than worked around, and each one was a different category of mistake: a tool that was silently never attached to the agent because it lived in the workspace tool library but not in the agent's own tool_ids; a valid API key rejected by an outdated client library; Postgres RLS policies that were configured correctly but useless because the base table grant to service_role was missing, since RLS alone doesn't grant table access; and turn-taking settings that needed retuning so the agent stopped interrupting callers or looping on unclear answers.

Deployment

FastAPI backend and widget both deployed on Vercel, with the agent itself hosted on ElevenLabs and reachable via a standalone web widget or an ElevenLabs dashboard test call. There's no real phone number: Twilio integration was a deliberate cost decision, not a limitation hit by accident, and the agent's spoken promise to hand off to a human on a failed lookup is not yet backed by a real handoff.