Welcome to the AI Steve Builder Guide 🎉

Hey everyone! Ready to supercharge your support line? Let’s turn your Twilio phone number into an :robot: AI receptionist that answers calls, remembers repeat callers, and even throws in a dash of French charm (beret optional). This guide walks you through every step—no PhD in coding required.


:hammer_and_wrench: What You’ll Build

  • AI Steve answers inbound calls via your Twilio number
  • Orchestrates call flow and data with n8n (our low-code glue)
  • Powers speech, memory, and context on Ultravox voice AI

Imagine a caller dials in, Steve picks up, says “Bonjour!” (or “Hello!”), asks for name, company, reason for calling, logs that data—and next time greets them by name. All on autopilot.


:package: Prerequisites

  1. Twilio account & purchased phone number
  2. n8n instance (hosted or self-hosted)
  3. Ultravox account (agent ID & API key)

Optional but useful:

  • Railway account (for cheap n8n hosting)
  • Google Sheet (for call logs)


:1234: Step 1: Grab Your Twilio Number

  1. Sign up at Twilio (free trial $15 credit).
  2. Buy a phone number (landline recommended—only ~$3/month).
  3. Under Phone Numbers → Manage → Webhooks, set the Voice webhook URL (you’ll get this in Step 2).

We’ll switch from “Test” to “Production” mode once everything works.


:link: Step 2: Spin Up n8n & Import Workflow

  1. Host options:
  • Quick & easy: 14‑day free trial at n8n.io
  • Budget/DIY: Self‑host via Railway (~$5/month)
  1. Log into n8n and import the Steve Workflow JSON (attached below).
  2. In the Webhook node:
  • Path: /twilio-inbound-steve
  • Method: POST
  • Enable Test Webhook → Listen for Test Event
  1. Call your Twilio number—verify the webhook fires in n8n.

:speaking_head: Step 3: Create Your Ultravox Agent (Steve)

  1. Sign up at Ultravox.
  2. New Agent: Choose a voice (e.g. Hugo for that French flair).
  3. System Prompt: Tell Steve how to behave. For example:
You are AI Steve, a polite receptionist. Ask for the caller’s name, company, and reason for calling. Inform them that Jonathan will call back. Keep it friendly and concise.

More templates in my original guid here:

  1. (Optional) Memory: Add RAG memory via Google Doc or website crawl.
  2. Save → copy your agent-id & api-key .


:electric_plug: Step 4: Wire Ultravox into n8n

  1. In the HTTP Request node for Ultravox:
  • URL: https://api.ultravox.ai/api/agents/{{agentID}}/calls
  • Make sure you put replace your {{agentID}} with the one from Ultravox
  • Method: POST
  • Headers:
    • X-API-Key : your Ultravox API key
    • Content-Type : application/json
  1. Test → ensure a successful connection response.

:laptop: Step 5: Format TwiML with a Code Node

  • This node translates call data into TwiML (Twilio’s XML).
  • Usually works out of the box—just run a test.


:outbox_tray: Step 6: Hook Back to Twilio

  1. In Twilio’s phone number settings, switch the webhook URL to your n8n Production webhook.
  2. Activate your n8n workflow.

Result: Steve picks up real calls.


:test_tube: Step 7: End‑to‑End Testing

Call your number, and you should hear:

  1. “Hello! This is AI Steve—what’s your name?”
  2. “Thanks, —what company are you calling from?”
  3. “Great! And how can we help today?”

Check Ultravox logs to see transcripts & memory in action.

Here’s access to the basic file:


:bar_chart: Step 8 (Optional): Log Calls to Google Sheets

  1. Add a Google Sheets node in n8n.
  2. Map fields: name, company, reason, phone number.
  3. Bonus: Use an OpenAI node to auto‑summarize the call text.

:rocket: Next‑Level Steve Ideas

  • Context‑aware prompts: Ask follow‑ups based on memory.
  • Returning callers: Greet by name automatically.
  • Outbound Steve: Build a workflow for follow‑up calls.
  • Call analytics: Generate summary reports daily.

Here’s access to the more “complex” workflow:


That’s it! :rocket: You’ve built your AI receptionist. Enjoy the extra sleep—you’ve earned it.