← All projects

Voice AI product

AI Voice Receptionist

Zallo Receptionist—multi-tenant AI phone agent with NestJS APIs, Supabase, Vapi/Twilio, Stripe billing, and dual Next.js portals.

AI Voice Receptionist

The challenge

SMBs needed always-on inbound call handling that books and answers from real business data—while a platform team needed safe multi-tenant onboarding, billing, and ops tooling. Without a coherent voice ai product foundation, AI Voice Receptionist stakeholders faced fragmented tools, slow handoffs, and limited visibility—classic failure modes Tekvers designs against.

The solution

AI Voice Receptionist: Zallo Receptionist—multi-tenant AI phone agent with NestJS APIs, Supabase, Vapi/Twilio, Stripe billing, and dual Next.js portals. Always-on front-desk model that books against real availability and FAQs. Tekvers delivered a maintainable voice ai product system for AI Voice Receptionist using NestJS, Next.js, Supabase, TypeScript, with phased rollout, operator workflows, and documentation suited to long-term ownership.

Approach

Tenant isolation & dual surfaces

Platform users (`platform_users`) manage tenants, phone numbers, applications, billing catalog, and voice-ops via admin-api/portal. Tenant members use client-api/portal with granular permissions for calendar, CRM, FAQs, calls, team, and branding—statuses spanning onboarding / active / suspended.

Voice tool-calling against live data

Inbound Twilio/Vapi calls hit `POST /api/webhooks/vapi`. The API resolves the tenant by phone number, builds per-tenant assistant config (`VapiAssistantBuilder`), and executes tools: `listServices`, `listProviders`, `checkAvailability`, `bookAppointment`, `findAppointments`, `cancelAppointment`, `rescheduleAppointment`, `searchFaqs`, plus transfer/unavailable handling. End-of-call reports persist transcripts and outcomes.

Billing, CRM, and suite-ready modules

Stripe plans/features/addons with tenant checkout and customer portal; contacts with import/export, tags, segments, and lead stages; public booking links; Google/Microsoft calendar OAuth connectors; marketing site apply → `POST /api/public/tenant-applications`.

Deliverables

  • ▸Multi-tenant admin-api + client-api (NestJS 11 CQRS) with documented route catalog
  • ▸Admin and client Next.js portals for platform ops and tenant configuration
  • ▸Supabase PostgreSQL schema with Auth JWT and RLS policies
  • ▸Vapi webhook pipeline with dynamic per-tenant assistant and booking/FAQ tools
  • ▸Twilio SMS/voicemail webhook paths and phone-number assignment flows
  • ▸Stripe subscription catalog, entitlements, and tenant self-serve sessions
  • ▸CRM, scheduling, FAQ knowledge base, SMS/email, API keys, and webhooks modules
  • ▸Docker Compose + Caddy deploy path; marketing site with apply/pricing/industries

Outcomes

  • ▸Always-on front-desk model that books against real availability and FAQs
  • ▸Centralized tenant lifecycle for platform operators (applications → phones → active)
  • ▸Monetization path via Stripe plans and feature entitlements
  • ▸Clear SKU boundary: Receptionist compose stack vs sibling ERP code in-repo

Impact

Businesses stop losing inbound demand to missed calls—Zallo Receptionist handles the first conversation with tool-backed booking and FAQ answers, while humans take over on transfer. Platform teams run many tenants from one Tekvers-built multi-tenant voice product.

Tech stack

NestJSNext.jsSupabaseTypeScriptVapiTwilioStripe

Want something similar?

I build production systems like AI Voice Receptionist—from architecture through launch. Tell me what you need.

Contact me →