Hey everyone! 👋 I wanted to share a complete real-world Voice AI build I just wrapped up: Alex, an automated AI Voice Operations Receptionist for a pre-owned auto dealership (National Motors Inc.). If you’re building voice agents for local businesses, lead generation, or appointment setting, here is how the whole stack works under the hood. 🔥 What the Voice Agent Handles Live on Calls: Real-time Inventory Lookups: Queries the live inventory database (make, model, mileage, pricing, stock numbers) and answers caller questions instantly. Test Drive Booking: Captures caller details (Name, Phone, Email, Preferred Date/Time) and logs them directly to a Google Sheet. Instant Email Confirmations: Automatically triggers HTML booking confirmation emails via Gmail right after hanging up. Trade-in & Financing Routing: Collects trade-in specs and guides callers through pre-qualification flows. 🛠️ The Tech Stack: Vapi.ai: Voice Engine (STT/TTS/LLM orchestration with custom system prompts). Make.com: Central Webhook Router handling function tool execution. Google Sheets: Functioning as both a live database for dynamic lookups and a CRM lead sheet. Gmail API: Instant email confirmations. ⚡ Key Takeaways & Common Pitfalls to Avoid: If you’re trying to build something similar in Vapi + Make.com, keep these technical details in mind: Array Indexing Matters: Vapi passes tool calls as a nested array (toolCalls[1]). If you map fields as toolCalls[] inside Make.com, your JSON strings will break, resulting in "No result returned" timeout errors! Routing Function Calls: Always set explicit Filter Rules directly on your Make.com Router modules (e.g., function.name EQUALS book_test_drive) so different tool execution branches don't trigger at the same time. Return Clean Webhook Responses: Always return an explicit 200 OK status with Content-Type: application/json header and a results array containing the toolCallId. Otherwise, the AI assistant will time out waiting for backend confirmation!