I put a voice agent on the phone for a Pilates studio
A few weeks ago I shipped a voice agent that handles the phone for two Pilates studios โ so the owners never had to hire a receptionist at all.

A few weeks ago I shipped a voice agent that handles the phone for two Pilates studios โ so the owners never had to hire a receptionist at all.
Here's the stack, unglamorous as it is:
- Vapi handles the voice layer: text-to-speech, speech-to-text, call orchestration.
- Vonage provides the Portuguese phone number and SIP trunking.
- An AWS Lambda webhook takes the live conversation context and calls OpenAI with a small tool set: check class availability, book, reschedule, escalate to human.
- Bookings flow into the same PostgreSQL backend (medallion: raw โ core โ mart) that powers our Metabase dashboards.
- Pulumi provisions all of it in Python โ no click-ops.
Cost to run: a rounding error for the business.
Value: no receptionist overhead, no missed calls, and hours per week the owners get back to spend on teaching and growing the studio.
Over the next two posts I'll share three non-obvious things I learned shipping this โ starting with the one that surprised me the most: the model is the easiest part.
Have you shipped any Gen-AI in production yet? What was the unexpected complexity?
P.S. New tech post every Wednesday.
#GenAI #AppliedAI #Serverless