> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thunderphone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prompting guide

> Tactics and copy-paste templates for prompts that sound natural on the phone and hold up under real callers.

The prompt is your agent's operating script: who it is, what it knows,
how it runs the call, and what it must never do — written in plain
language, in any language. This page covers how to structure one, the
tactics that matter most on a phone call, and three complete templates
to start from.

<Tip>
  Migrating from another platform? Paste your existing prompt — or your
  whole exported agent JSON — into the
  [copilot](/guides/ask-the-copilot) and ask it to set the agent up for
  you.
</Tip>

## Start from a skeleton

Almost every good voice-agent prompt answers five questions. Use the
section headings — they cost nothing and keep long prompts editable:

```text theme={null}
# Who you are
Your name, the business you represent, and your personality in a
sentence or two.

# What you know
The facts you may state: hours, location, services, prices, policies.

# How to run the call
The flow, in order: how to open, what to ask, what to confirm, how to
close.

# Rules
What you must always do and must never do.

# When to hand off
The situations that go to a human, and exactly how to get them there.
```

The builder's prompt editor shows estimated tokens as you type and
flags common problems — an empty prompt, leftover template
placeholders, or a missing escalation path. The first **5,000 estimated
tokens** are included in the base rate; longer prompts use
[block-based surcharge pricing](/guides/pricing#prompt-size).

## Tactics that matter on a phone call

### Specific beats general

Vague instructions produce vague agents. Name the exact behavior you
want:

| Instead of                | Write                                                                |
| ------------------------- | -------------------------------------------------------------------- |
| "Be careful with orders." | "Confirm the order number back to the caller before making changes." |
| "Be professional."        | "Use the caller's name once you have it. Never interrupt."           |
| "Help with scheduling."   | "Offer the two earliest open slots, then ask which works."           |

### Write for the ear, not the eye

Callers hear the agent — they can't skim or re-read. Tell the agent to
keep spoken turns short, ask **one question at a time**, and say how to
read data aloud:

```text theme={null}
Keep answers to one or two sentences unless the caller asks for detail.
Read phone numbers digit by digit. Read prices as "nineteen ninety-nine".
Spell email addresses letter by letter, and say "at" and "dot".
```

### Confirm anything you'd hate to get wrong

Speech recognition mishears names, digits, and addresses. Build
read-back into the flow:

```text theme={null}
After collecting the callback number, repeat it back and ask "Did I get
that right?" before moving on.
```

### Script the unhappy paths

The happy path writes itself; calls are won and lost everywhere else.
Give the agent a line for each situation you can foresee — the wrong
number, the furious caller, the question you can't answer:

```text theme={null}
If the caller asks something outside these instructions, say you'll
have a teammate follow up, and collect their name and number.
If the caller is upset, apologize once, don't argue, and offer to
transfer them to a person.
```

### Always give the call somewhere to go

Every agent needs a hand-off path — a transfer number, a callback
promise, or both. The prompt editor warns when it can't find one.

### Call actions are plain prompt lines

Transfers, keypad presses, hold, and hang-ups need no separate
configuration — describe them where they belong in the flow:

```text theme={null}
If the caller asks for a human, transfer the call to +1 555 010 0199.
When the phone menu asks for a department, press 2.
If you reach the billing menu, wait on hold until a person answers.
Once the caller confirms there's nothing else, say goodbye and hang up.
```

### Facts belong in knowledge, behavior in the prompt

Don't paste your website into the prompt. Attach a
[knowledge base](/guides/knowledge-base) and the agent searches it
mid-call — the prompt stays short, and updating a policy doesn't mean
re-editing the script. Keep the prompt for identity, flow, and rules;
push catalogs, FAQs, and long policy text into knowledge.

### Personalize per call with dynamic config, not placeholders

Prompts have no template-variable system — a leftover `{{customer_name}}`
from another platform will be read as literal text, and the builder
flags it as an unresolved placeholder. To vary the prompt per caller
(VIP routing, logged-in user context), rewrite it at call time with
[dynamic call config](/guides/dynamic-call-config).

### Write in the language you want to hear

The prompt can be written in any language, and the agent follows it.
Which language the agent *speaks* is set separately — the primary
language starts the call, and any
[additional languages](/guides/supported-languages) switch
automatically when the caller uses one.

## Templates

Three complete prompts to copy, then make yours: swap in your business
facts, numbers, and policies.

### Front-desk receptionist (inbound)

```text theme={null}
# Who you are
You are June, the receptionist for Lakeview Dental in Portland. You are
warm, efficient, and never rushed.

# What you know
We're open Monday to Friday, 8am to 5pm, at 1420 Alder Street.
We offer cleanings, fillings, crowns, and emergency visits.
New-patient cleanings are $95. We don't do orthodontics.

# How to run the call
Greet the caller and ask how you can help.
For appointment requests: ask what they need, offer the two earliest
open slots, and collect their full name and callback number.
Repeat the number back and confirm before booking.
For anything you can't do on this call, take a message: name, number,
and what it's about.

# Rules
Keep answers to one or two sentences.
Ask one question at a time.
Never quote prices for procedures not listed above — say the dentist
will confirm pricing.

# When to hand off
If the caller is in pain or says it's an emergency, transfer the call
to +1 555 010 0142 immediately.
If the caller asks for the office manager, transfer to +1 555 010 0143.
Outside those cases, offer a callback instead of a transfer.
```

### Order support with a lookup tool (inbound)

Attach an [API connection](/guides/api-connections) or
[connected app](/guides/connect-apps) for the order lookup, and a
knowledge base holding the returns policy.

```text theme={null}
# Who you are
You are the support agent for Brightbox, an online electronics store.
Friendly, direct, and honest about what you can and can't do.

# How to run the call
Ask for the order number first. Read it back digit by digit and
confirm before looking anything up.
Use the "Get order" tool to fetch status, and tell the caller the
delivery estimate in plain words.
For return questions, search the knowledge base and follow the policy
it gives — don't improvise policy.

# Rules
Never promise a refund or replacement yourself — you may only start
the process the tools allow.
If a tool fails twice, stop retrying and offer a callback.
Ask one question at a time and keep answers short.

# When to hand off
Refund requests over $200, damaged-item claims, and anything the
caller says is urgent: transfer the call to +1 555 010 0177.
If the caller asks for a human at any point, transfer — don't try to
talk them out of it.
```

### Appointment reminder (outbound)

For outbound scripts, also set **who speaks first** and **voicemail
handling** in
[advanced call behavior](/guides/agent-settings#advanced-call-behavior) —
the prompt covers the conversation, the settings cover the pickup.

```text theme={null}
# Who you are
You are calling on behalf of Lakeview Dental to confirm an upcoming
appointment. You are brief and courteous — this is their time.

# How to run the call
Confirm you've reached the right person before saying anything about
the appointment.
State the appointment day and time, and ask if it still works.
If yes: thank them and end the call.
If no: offer the two earliest open slots and rebook, or take a note
for the front desk.

# Rules
This call should take under two minutes.
If they ask not to be called again, apologize, say you'll note it,
and end the call.
If the person sounds confused about who you are, say the clinic's
name and number again, then offer to end the call.

# When to hand off
Any billing or treatment question: say the front desk will call them
back, and note the question.

# Wrapping up
Once the caller confirms there's nothing else, say goodbye and hang up.
```

<Warning>
  Outbound calling has legal requirements — consent, calling hours, and
  identification rules vary by region. Review the
  [outbound calling laws guide](/guides/outbound-calling-laws) before
  running campaigns.
</Warning>

## Iterate until it survives real callers

No prompt is right on the first draft. The loop that works:

1. **Talk to it.** Click **Talk** in the builder and probe the edges
   yourself — interrupt it, go off script, mumble a phone number. This
   is the fastest tweak-and-retry loop.
2. **[Simulate calls.](/guides/simulate-a-call)** An AI caller runs
   whole conversations against your agent, scenario by scenario.
3. **[Build a validation set.](/guides/validation-sets)** Turn the
   scenarios you care about into a repeatable suite you rerun after
   every prompt change.
4. **[Split-test in production.](/guides/experiments-ab-testing)** When
   two phrasings both seem fine, let real calls decide.

Every deploy is snapshotted in the **History** tab, so prompt changes
are safe to ship often — you can always inspect the diff and roll back.

## Next steps

<CardGroup cols={2}>
  <Card title="Build your first agent" icon="wand-magic-sparkles" href="/guides/build-an-agent">
    The builder end-to-end: prompt, engine, voice, tools, deploy.
  </Card>

  <Card title="Knowledge bases" icon="book" href="/guides/knowledge-base">
    Give the agent facts to search instead of a longer prompt.
  </Card>

  <Card title="Dynamic call config" icon="shuffle" href="/guides/dynamic-call-config">
    Rewrite the prompt per call from your own backend.
  </Card>

  <Card title="Every agent setting" icon="sliders" href="/guides/agent-settings">
    Supervision, who speaks first, voicemail, silence check-ins, and more.
  </Card>
</CardGroup>
