The system prompt is everything
Your agent’ssystem_prompt is the complete definition of how the call will go. The AI receives nothing else — no product docs, no account history, no implicit context. Everything the AI knows and everything it says comes from this prompt.
A well-written prompt produces calls that are on-brand, on-topic, and reliably structured. A vague prompt produces inconsistent calls that drift off topic.
Rule 1 — Always define the opening line
The most common mistake is writing a prompt that explains the agent’s role but doesn’t tell it what to say when the call connects. When a call is picked up, the AI needs to speak first. If you don’t tell it exactly what to say, it will improvise — and that improvisation is often awkward.{{recipient_first_name}} to personalise the greeting.
Rule 2 — Define scope boundaries
Tell the agent what it should and should not handle. Without this, the AI will attempt to answer anything a caller asks — often poorly.Rule 3 — Use {{context}} for per-call nuance
The context field lets you pass runtime information into the call without hardcoding it into the agent.
System prompt
Notification request
Rule 4 — End the call explicitly
Tell the agent when and how to end the call. Without this, calls can drag on or end abruptly.Rule 5 — One question at a time
If your agent collects information, instruct it to ask one question at a time. Asking multiple questions in one turn overwhelms callers and leads to partial answers.Using output_schema as a guide
If your agent has an output_schema, reference the fields in the prompt so the AI knows what to collect:
Full prompt example
Here’s a complete, production-quality prompt for an appointment confirmation agent:Prompt checklist
Opening line defined?
Opening line defined?
Does the prompt include the exact words the AI should say when the call connects? Is
{{recipient_first_name}} used for personalization?Scope boundaries set?
Scope boundaries set?
Does the prompt explicitly say what the agent should and should not handle?
Error paths covered?
Error paths covered?
What should the agent do if the caller doesn’t answer, hangs up, or asks something off-topic? These paths should be defined.
Call ending defined?
Call ending defined?
Does the prompt tell the agent exactly when and how to end the call?
All custom variables declared?
All custom variables declared?
Every
{{token}} in the prompt (except built-ins) must be passed in variables at notification time. Check that all tokens are covered.Output schema referenced?
Output schema referenced?
If you have an
output_schema, does the prompt tell the agent what information to collect?