The customer sends over a manuscript. It is written in prose, it reads well, and it was written by someone picturing the call going well.
A call script is a different object. It is a state machine with defined exits, tool contracts and a voice that has to survive being said out loud to someone who is doing something else while they talk. The difference between the two is almost always what the manuscript does not say: what the agent must never say, where the phone number it collects is supposed to end up, and what happens when the customer answers something else entirely.
Those gaps are what breaks in production. Here are ten moves that close them.
1. Don't write the script until you know what is missing
This is the rule it is most tempting to break, because a manuscript plus ordinary common sense is always enough to produce something that reads finished. A script written over unresolved gaps is worse than nothing: it looks reviewable, so it gets reviewed for tone instead of for the missing exit, and the defect turns up on a live call rather than on the page.
Sort everything you were handed into three piles: what the manuscript actually says, what is reasonable to assume but should be confirmed, and what is not there at all. Show the list before you ask anything. Then the customer answers only what is genuinely missing instead of repeating what they already sent — and the list shows them how thin a normal brief is.
Never fill a gap with something plausible. If it stays open because nobody knows the answer, it goes into the delivery as an open question.
2. Start with the endings
Before you write a single line, list every way the call can legitimately end. Then work backwards to the branches that lead there.
The order is the whole trick. Endings written last end up unreachable, because by then the flow is already laid out and nothing routes to the case you just thought of. An outbound call almost always has more endings than the brief implies:
- goal reached
- customer declines
- wrong person
- no conversation possible
- customer wants another channel
- callback agreed
- transferred to a human
Each needs one line and a hangup, and each is owned by exactly one place in the script. Two definitions of the same ending means two different goodbyes for the same situation.
3. One mandate, and only one
The mandate should fit in a single sentence, with a defined success state and a clear boundary for what is out of scope.
Two mandates in one script gets you two jobs done halfway. If the agent is meant to both follow up an offer and map demand for something new, that is two calls — and usually two agents. If you can't read the script start to finish in one sitting, the mandate is too broad, not the script too long.
4. Write states, not paragraphs
The most common weakness in an otherwise well-written script is that it is one long paragraph. Give every step in the flow five fixed fields: id, purpose, instructions, example lines, and exits with conditions.
map_need
Purpose: find out whether the customer has an active policy with a competitor. Instructions: Ask one question, wait for the answer, confirm briefly, move on. Do not comment on the provider the customer names. Example lines: "Do you have insurance with anyone else at the moment?" Exits: Has a competitor → next step. Has nothing → skip the offer. Won't answer → exit "declines".
Two things you get for it. You can change one state without touching the rest, and a missing exit becomes visible on the page instead of a place where the call quietly stalls.
5. Anything in quotation marks is said out loud
Keep one convention throughout: what sits inside quotation marks is spoken verbatim. Everything outside is instruction to the model. Never mix the two in one sentence.
That means no markdown, no bullets, no emoji and no parentheses inside the lines. A stage direction in brackets inside the quotes gets read aloud. Numbers, dates, amounts, phone numbers and opening hours are written the way they are pronounced — "twelve ninety-nine", "Friday the fourth of September", "nine to four on weekdays". Numbers are the hardest thing a voice agent handles anyway, so they deserve to be spelled out.
And sweep for placeholders before you deliver. A [company name] or {{customer_name}} that never got filled in is read out exactly as it stands.
6. One sentence at a time, one question per turn
Customers interrupt. That isn't rudeness, it is how phone calls work — and when they do it, whatever the agent hadn't said yet disappears. What never reached the caller is not in the conversation afterwards, not for the model either.
So: one or two sentences per turn, and one question. A double question gets one answer, and you won't know which half it belongs to. Write an explicit interruption rule as well: stop, listen, answer what came, don't resume the sentence.
The opening line is where this costs most, because it is the one sentence every caller hears.
7. Give the example lines a variation rule
Example lines without a rule get read as a manuscript. Anyone who hears two calls notices immediately, and it is the fastest route to an agent that sounds like an answering machine.
Write the rule in: the example lines are inspiration, not a script — vary the wording, and never repeat the same sentence twice in one call.






