The anatomy
Every prompt our build pipeline writes has the same spine. Write yours in it too:- Identity & purpose — who the agent is, who they’re calling for, and one sentence on what the job is. Say explicitly: you are making an outbound call — the person did not call you.
- The single goal of this call — four or five numbered steps, ending in “thank them and end.”
- Voice & persona — personality traits, then speech characteristics.
- Good vs bad lines — ten or more scenarios from this call, each written as: the scenario, the bad response, the good response, and a one-word reason. Triple-check every good response word by word — in our experience, a lot of problems stem from here.
- The facts — the sharable facts as a short list, with a guard: only share what’s relevant to what they ask. Don’t dump the whole list.
- Call flow — numbered steps with a literal Urdu line to say at each, and branch arrows: if they say yes → Step 2.
- Handling the hard callers — worked mini-dialogues for: confirm, mishearing, opt-out, not interested, busy, wrong number, payment dispute, already paid, suspicious caller.
- Closing — the goodbye line plus the end_call tool.
- What NOT to do — a plain list of the forbidden moves: no re-pitching after a no, no reading the caller’s number back, no goodbye without end_call.
- A short footer — the hard rules once more, in a few lines at the very end. Models pay the most attention to the end of the prompt, and on a long call the rules at the top fade.
A full working prompt
Here is that anatomy in the flesh: our most refined outbound prompt, production-tested — an event-invitation campaign for the Zameen.com Property Expo. Base yourself around it. Copy it, then adapt the facts, the name, the gender, and the flows — don’t write from a blank rules skeleton.The full prompt — Zameen.com Property Expo invitation
The full prompt — Zameen.com Property Expo invitation
The opener
The opener has four parts and earns the first five seconds: salaam and verify the person, your name and the business, the reason, permission to continue.السلام علیکم، کیا میں عائشہ صدیقی سے بات کر رہی ہوں؟ میں Shifa Clinic سے ثناء بات کر رہی ہوں۔ کل کی appointment confirm کرنی تھی، ایک منٹ بات کر سکتی ہوں؟Roman Urdu for us burgers: Assalam o alaikum, kya main Ayesha Siddiqui se baat kar rahi hoon? Main Shifa Clinic se Sana baat kar rahi hoon. Kal ki appointment confirm karni thi, aik minute baat kar sakti hoon? On outbound, the opener is where you earn the person’s trust. Value their time: every word the agent speaks should deliver precise value on why they should keep talking.
Write for the ear, not the eye
- Brief above all. One or two short lines per turn. Cut every word the listener doesn’t need. A whole call is ideally four to six turns.
- Ask one thing, then stop. Never say goodbye in the same breath as a question.
- State each hard fact once. Re-reciting the venue, price, and date every turn is the single most robotic thing an agent can do.
- Ration politeness. At most one short acknowledgment per reply. Most replies need none. Never جی جی. Never بہت اچھا as a reaction — nobody says it when a person agrees. It sounds like a teacher grading homework.
- Don’t narrate internal actions. No “نوٹ کر لیا”, no “save کر لیا”.
- Busy caller? Get shorter, not longer.
- Misheard? Say it differently and shorter — never repeat the identical line.
- Numbers, dates, and times as words: “بیس اور اکیس جون”، “رات نو بجے تک”. If you must say a phone number, space the digits with ”,,” so the voice pauses between them. Never read the caller’s own phone number back.
- No markdown, no emoji, no ”/”. Write یا or اور instead of ”/”. These read fine and speak terribly.
The Urdu rules
- Nastaliq script only. English loan words Pakistanis naturally say in English stay in Latin: appointment, booking, free, call, message, order, confirm-as-a-noun.
- The two-way test: if Pakistanis genuinely say the word in English, keep it Latin so the voice pronounces it in English. If it’s a word people would naturally speak in Urdu, use the Urdu — end → آخر, next week → اگلے ہفتے, date → تاریخ, confirm-the-verb → پکا.
- Pakistani names go back to Nastaliq — the agent’s own name and any caller name from the record: بلال, عائشہ, not “Bilal”. A Pakistani first name in Latin pronunciation sounds robotic to a Pakistani ear. Brand and venue names keep their Latin form: Zameen.com, Expo Centre.
- Gender is load-bearing. Female agent: کر رہی ہوں. Male: کر رہا ہوں. Set the build’s
genderto match your voice. - Plain words over bookish ones: آنا not تشریف آوری, مفت not بلامعاوضہ. And no Hindi register — ضرورت, not جھنجھٹ.
- No honorific guessing. Don’t assume صاحب. Prefer the bare name unless the record carries gender.
Bad and good, side by side
These pairs are section 4 of the full prompt above, in the prompt’s own order — every one is about that call. The model studies them and copies the shape of the good lines. Write yours about your own call’s failure modes. The Roman Urdu is written for ease of reading for us burgers. In your actual prompt, write the examples in proper Urdu — the output stays stable when the model never has a reason to output any format other than the one you specified. 1. Match the agent’s gender — عائشہ is female; a masculine verb form breaks the voice instantly.- Bad: میں زمین ڈاٹ کام سے عائشہ بات کر رہا ہوں۔ — Main Zameen dot com se Ayesha baat kar raha hoon.
- Good: میں زمین ڈاٹ کام سے عائشہ بات کر رہی ہوں۔ — Main Zameen dot com se Ayesha baat kar rahi hoon.
- Bad: ہم آپ کو ایک تقریب میں مدعو کرنے کی غرض سے رابطہ کر رہے ہیں۔ — Hum aap ko aik taqreeb mein madu karne ki gharz se rabta kar rahe hain.
- Good: آپ کو ایک property expo کی دعوت دینی تھی، بالکل free ہے۔ — Aap ko aik property expo ki dawat deni thi, bilkul free hai.
- Bad: جی بالکل free ہے جی۔ بہت اچھا جی، تشریف لائیے گا جی، تقریباً کتنے لوگ ہوں گے جی؟ — Ji bilkul free hai ji. Bohat acha ji, tashreef laiye ga ji, taqreeban kitnay log hon ge ji?
- Good: بالکل free ہے، کوئی ticket نہیں۔ تقریباً کتنے لوگ آئیں گے؟ — Bilkul free hai, koi ticket nahi. Taqreeban kitnay log aayen ge?
- Bad: نہیں آ سکتے؟ ارے کیوں نہیں، آپ کو آنا چاہیے، بہت اچھا موقع ہے، سوچ لیں۔ — Nahi aa sakte? Are kyun nahi, aap ko aana chahiye, bohat acha mauqa hai, soch len.
- Good: کوئی بات نہیں جی، پھر کسی اگلی بار سہی۔ وقت دینے کا شکریہ۔ — Koi baat nahi ji, phir kisi agli baar sahi. Waqt dene ka shukriya.
- Bad: آپ کا نمبر ہمارے record سے آیا ہے۔ — Aap ka number hamaray record se aaya hai.
- Good: آپ نے کبھی زمین ڈاٹ کام پر گھر یا plot دیکھے ہوں گے، وہیں سے رابطہ ہوا ہے۔ اگر آپ نہ چاہیں تو میں ابھی نمبر نکلوا دیتی ہوں۔ — Aap ne kabhi Zameen dot com par ghar ya plot dekhe hon ge, wahin se rabta hua hai. Agar aap na chahen to main abhi number nikalwa deti hoon.
- Bad: …کتنے لوگ آئیں گے؟ شکریہ، اللہ حافظ۔ — …kitnay log aayen ge? Shukriya, Allah hafiz.
- Good: …گھر والوں کے ساتھ تقریباً کتنے لوگ آئیں گے؟ — …ghar walon ke saath taqreeban kitnay log aayen ge?
- Bad: every turn re-recites the whole block — Expo Centre، جوہر ٹاؤن، بیس اور اکیس جون، داخلہ free…
- Good: say the venue, dates, and times once. After that, answer only what they asked.
The hard callers
Write a worked mini-dialogue for each, with these rules underneath:- Busy or “call later” is not opt-out. Offer a short callback, ask for a better time, end politely. Don’t continue the pitch.
- Wrong number or wrong person: apologize briefly and end immediately. Someone else answering is a callback, not a sales opportunity.
- Already paid, already knows, already done: thank them and stop. Do not re-demand or re-pitch.
- After an opt-out, confirm removal and end. No “ہم رابطہ کریں گے” — never imply future contact.
- Suspicious caller (“where did you get my number?”): name the business, then tie it to their own action — “you gave this number when you placed your order.” Never a vague “it’s in our system.”
- One gentle nudge after a no. Then let go.
- Never invent what the record doesn’t hold. If a
{token}’s value is missing, stay generic — and never speak the token aloud.
Ending the call
Speaking a closing line does not hang up the phone — only the end_call tool drops the line. Every closing, opt-out flow, and “remove me” example in your prompt must show goodbye plus end_call, or the call stays connected and the callee hears silence. One gotcha: the runtime watches for farewell words to decide a call is wrapping up. A bare شکریہ or اللہ حافظ mid-call can read as a goodbye — save them for the actual close.The four layers
Your prompt isn’t the only text the agent sees. Four layers stack, in order:instructions— the stored prompt. Everything above is about this.additionalInstructions— per-call text, appended after the prompt at dispatch. It never touches the stored assistant, and it comes after the prompt, so it wins on conflicts with the prompt by position. If it must beat the base prompt, say so explicitly.variables— the per-call record, rendered as a labelled block with its own standing orders: use it only where the conversation naturally needs it, don’t read it like a list, don’t repeat it, never read the phone number aloud. Write your prompt’s{tokens}against these keys.greetingInstructions— steers the first line only, and only wheninitialGreetingis on. It doesn’t persist as a rule for the rest of the call.
