HeyPilot: Multi-Tenant Voice AI Platform for Customer-Facing Teams
A multi-tenant voice AI SaaS for customer service, outreach campaigns, and appointment workflows, with a no-code assistant builder, white-label widgets, a KVKK encryption layer, IYS-ready consent capture, and a real credits ledger, running in production at heypilot.com.tr.
HeyPilot is the platform a business reaches for when "let's build a voice AI" turns into "let's not stitch together VAPI, OpenAI, ElevenLabs, Deepgram, Cloudflare, and a database layer ourselves". It runs in production at heypilot.com.tr as a Turborepo-based monorepo with separate admin and customer Next.js apps sitting on top of a Prisma and PostgreSQL backbone, shared packages for the integrations and the compliance layer, and a billing system that tracks every credit reservation through to settlement.
The product targets four kinds of buyers: SMBs and enterprises in Turkey running customer support, sales follow-up, or appointment-heavy operations; agencies that resell a white-label voice AI layer to their own clients; in-house operations teams modernizing customer contact workflows with AI as a force multiplier for human agents; and consent-sensitive industries (clinics, real estate, automotive service, logistics, professional services) that have to meet KVKK retention rules.
The voice and assistant layer:
- A no-code assistant builder covering name, avatar, system prompt, first-message behavior, voicemail handling, silence timeout, and end-call detection, with live test calls through VAPI from the same screen
- Pluggable LLM and voice routing across OpenAI, Anthropic Claude, Google Gemini, and Groq for the brain; ElevenLabs, Play.ht, Azure, Cartesia, Deepgram, and Vapi-native voices for TTS; Deepgram, AssemblyAI, Azure, Google, and 11labs for transcription
- Knowledge base support with PDF, DOCX, and TXT document ingestion attached to assistants
- Tenant-owned phone numbers with SIP trunk configuration (gateway, port, protocol, auth), inbound assistant or squad routing, and outbound dialing through the campaign engine
Outreach and customer lifecycle:
- Campaign wizard with day and time-window scheduling, retry strategy and interval, squad mode, and timezone-aware dialing
- Lead records that store contact details with KVKK-grade encryption and carry a versioned acknowledgment trail (text version, timestamp, IP, user-agent), so campaign execution can be gated on consent at the application layer
- CSV import and manual lead entry into the customer app
- Mid-call appointment reservations triggered by VAPI tool calls, with notes, source tracking, and notification fan-out
Multi-tenant and white-label:
- Per-tenant subdomains, custom domains provisioned through the Cloudflare DNS API, isolated VAPI credentials, and full brand customization (logo, colors, default timezone and language)
- Admin, super-admin, and user roles with per-user visibility filters and an audit log that records create, update, delete, and login events with IP and user-agent for forensic review
- Iframe-safe JavaScript widget for voice and chat with configurable position, colors, pre-chat form, allowed-origin whitelist, per-widget rate limiting, and visitor metadata capture
- Tenant-level email templates with version history, event triggers, and SMTP delivery through a hardened provider abstraction
Compliance and security:
- KVKK data protection through AES-256-GCM encryption on lead phone numbers, HMAC-SHA256 phone hashing for lookup, transcript sanitization on the webhook ingestion path, and a configurable PII retention window
- Lead-level consent capture with versioned acknowledgment text and signed metadata, wired so the data model is ready for IYS consent-state enforcement
- NextAuth v5 with JWT sessions, Credentials and Google OAuth providers, bcrypt password hashing, and Redis-backed rate limiting on auth and provider-credential endpoints
- AES-256-GCM for tenant VAPI credentials and encrypted lead PII, with HMAC validation on incoming webhooks
Billing and analytics:
- Tiered plans (Starter through Enterprise plus a Custom tier) with per-tier voice minute and chat message allocations, overage pricing, and add-on purchases, all recorded as ledger entries
- Credits reserved when a call starts and settled by webhook on completion, with detailed cost breakdowns (transport, STT, LLM, TTS, VAPI markup) per call
- Per-campaign and per-assistant call volume, duration, success rate, and cost trends, plus a searchable, filterable call log with transcripts and recording links
Stack and operations:
- Turborepo with pnpm workspaces and shared packages covering database, auth, UI, types, internationalization, VAPI, email, Cloudflare integration, and a dedicated compliance primitives package for the KVKK layer
- Prisma migrations with rollback companions for every schema change, including the dedicated KVKK phone-encryption layer
- PM2-managed Node processes behind an Nginx reverse proxy in production, Cloudflare for DNS and edge protection, Docker Compose for local Postgres and Redis, and a shell-scripted remote deploy
- next-intl powering Turkish and English UI with per-tenant default locale
- A prompts library with vertical-specific demo assistants that prospects can spin up in minutes
The trade-off compared to building a voice AI stack from scratch is straightforward: the integrations, the encryption layer, the billing logic, and the multi-tenant boundaries are already wired up.
