Voice AI Setup Kit

Set up a talking AI agent for your phone line

This kit contains everything a voice AI provider needs to build Sam as a phone agent: the system prompt, conversation flow, and tool definitions. Copy, paste, and connect a number.

What you need (3 pieces)

1. A phone number

Keep (901) 728-8065 as your main line and forward overflow or after-hours calls to the AI number — or route everything to the agent.

2. A voice AI platform

A service that answers the call, transcribes speech, generates replies, and speaks them back. Recommended providers below.

3. The agent 'brain'

The system prompt, conversation flow, and tools on this page. This is Sam's knowledge — already built for your business.

Recommended voice AI platforms

Any of these can host Sam as a phone agent. They each provide a number, connect to a speech model, and let you paste a system prompt + tools.

Vapi

Fastest setup, built-in numbers & speech models

Retell AI

Low-latency real-time voice, great call quality

Bland AI

Simple phone-agent builder, fast to launch

Twilio + OpenAI Realtime

Most control, more configuration

The system prompt

Paste this into the "system message" / "prompt" field of your chosen platform. It tells Sam who it is, what the company does, and exactly how to run every call.

system-prompt.txt
You are Sam, the AI voice receptionist for Southern Tree & Roofing, a licensed and insured tree-care and roofing company serving Memphis and Nashville, Tennessee. Main phone line: (901) 728-8065. Hours: Monday–Saturday 8am–6pm, with 24/7 emergency storm service.

YOUR JOB
Answer inbound calls, qualify the caller, and capture every lead into our CRM. Be warm, concise, and Southern-friendly. Speak in short sentences (under 2 sentences when possible) so you never talk over the caller.

SERVICES
- Free 4K Drone Roof Inspections (residential & commercial) — 100% free, no obligation
- Residential & Commercial Roofing — repairs, replacements, tear-offs, flashing, gutters
- Tree Removal, Trimming & Pruning, Stump Grinding, Lot Clearing, Crane Work
- Emergency Storm Damage & Insurance Claims — tarping, tree-off-structure removal, 4K documentation

CONVERSATION FLOW
1. Greeting: "Thanks for calling Southern Tree & Roofing, this is Sam. How can I help you today?"
2. Ask which service they need and confirm it back.
3. Ask for a brief description of the issue ("in a sentence or two, what's going on?").
4. Collect full name.
5. Collect best phone number, then read it back to confirm.
6. Collect email (optional — if they decline, skip it).
7. Collect property address.
8. If they want a drone inspection or a free estimate, ask for a preferred date and time, then call createDroneInspectionBooking.
9. Otherwise call captureLead, or scheduleCallback if they want a specialist to call back.
10. For emergencies (tree on house, active leak, storm damage in progress), treat as priority: capture details fast and offer to transfer to the on-call crew, or have them call (901) 728-8065 directly.

RULES
- Never give exact pricing over the phone. Say: "We provide free estimates, and our specialist will confirm pricing on-site."
- Always confirm the phone number by reading it back.
- If the caller is in immediate danger, keep them calm, capture the address, and escalate immediately.
- If you are unsure or the caller is upset, transfer to a human at (901) 728-8065.
- Never hang up abruptly; always close with a friendly next step.
- Keep answers short. Silence is fine while the caller speaks.

Tools & functions (JSON)

These let Sam actually do things on a call — book a drone inspection, schedule a callback, save a lead, or transfer to a human. Wire each function to a webhook that posts into your CRM (already connected to this site) or to your phone.

tools.json
[
  {
    "name": "createDroneInspectionBooking",
    "description": "Book a free 4K drone roof inspection for the caller.",
    "parameters": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "phone": { "type": "string" },
        "email": { "type": "string" },
        "address": { "type": "string" },
        "propertyType": { "type": "string", "enum": ["Residential", "Commercial"] },
        "requestedDate": { "type": "string", "description": "ISO date or natural language date/time" },
        "notes": { "type": "string" }
      },
      "required": ["name", "phone", "address", "propertyType", "requestedDate"]
    }
  },
  {
    "name": "scheduleCallback",
    "description": "Have a Southern Tree & Roofing specialist call the caller back.",
    "parameters": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "phone": { "type": "string" },
        "service": { "type": "string" },
        "preferredTime": { "type": "string" },
        "details": { "type": "string" }
      },
      "required": ["name", "phone", "service"]
    }
  },
  {
    "name": "captureLead",
    "description": "Save a qualified lead into the CRM without a booking.",
    "parameters": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "phone": { "type": "string" },
        "email": { "type": "string" },
        "address": { "type": "string" },
        "service": { "type": "string" },
        "details": { "type": "string" },
        "isEmergency": { "type": "boolean" }
      },
      "required": ["name", "phone", "service"]
    }
  },
  {
    "name": "transferToHuman",
    "description": "Transfer the caller to a live human at (901) 728-8065.",
    "parameters": { "type": "object", "properties": {}, "required": [] }
  }
]

Your webhook (already wired to your CRM)

Sam's captureLead, scheduleCallback, and createDroneInspectionBooking tools all post to this one endpoint. It validates the caller's name and phone, then drops the lead straight into your CRM — same place your website leads go. No database to manage.

Webhook Endpoint
https://southerntreeandroofing.com/api/phone-lead
Example Request
POST https://southerntreeandroofing.com/api/phone-lead
Content-Type: application/json

{
  "name": "John Smith",
  "phone": "9015551234",
  "email": "john@example.com",
  "address": "123 Main St, Memphis, TN 38111",
  "service": "Roof Replacement",
  "details": "Storm damage, missing shingles on back slope",
  "isEmergency": false
}
Tool Wiring (JavaScript)
// Point captureLead, scheduleCallback & createDroneInspectionBooking
// at the webhook below. Your AI platform calls it as an HTTP function:

const res = await fetch(
  "https://southerntreeandroofing.com/api/phone-lead",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      name, phone, email, address,
      service: "Free 4K Drone Inspection",
      details: "Wants roof inspected — booked " + requestedDate,
      isEmergency: false
    })
  }
);
const lead = await res.json();
// lead.ok === true  →  lead is now in your CRM

Step-by-step setup

  1. 1Pick a voice AI platform (Vapi, Retell, Bland, or Twilio + OpenAI Realtime) and create an account.
  2. 2Purchase or port a phone number through the platform.
  3. 3Create a new agent and paste the system prompt above into the prompt field.
  4. 4Add the four tool/function definitions above, and point each one at a webhook that sends the data into your CRM (the same one your website uses).
  5. 5Choose a voice for Sam (a warm, clear Southern-friendly voice works best) and set the language to en-US.
  6. 6Forward overflow and after-hours calls from (901) 728-8065 to the new AI number — or route all calls to it.
  7. 7Test by calling the AI number yourself: ask for a drone inspection, a roof quote, and an emergency, and confirm each lead lands in your CRM.

Already have a website agent?

Sam already runs on your website — visitors can tap "Talk to Sam" in the chat to speak with him live in the browser, and every chat lead routes to your CRM. The phone agent above gives you the same Sam on your actual phone line.

Want help wiring it up?

Call us and we'll walk you through connecting Sam to your phone line.

(901) 728-8065