1. Instructional vs Deterministic
Describe what to do and let the agent find the words. Script exact words only for legally required disclosures.| DETERMINISTIC — AVOID | INSTRUCTIONAL — PREFER |
|---|---|
| Say “Hello! Can I speak to [[ userName ]] Sir?” | Greet warmly and verify if speaking with [[ userName ]] |
| If the user says “yes” | If the user confirms or agrees to paying |
| Say “No problem. Thank you for your time.” | Thank them politely and end the call |
| Say “That’s a really important point.” | Acknowledge their concern warmly before proceeding |
2. Be Descriptive in Your Conditions
Vague conditions create undefined behavior. Specific conditions tell the agent exactly what counts.| VAGUE | DESCRIPTIVE |
|---|---|
| If the user says yes | If the user agrees to making the payment today |
| If the user says no | If the user explicitly declines to pay |
| If the user is interested | If the user asks for more details or agrees to proceed |
| If the user is done | If the user says they have no further questions |
| If the user is unclear | If the user’s response doesn’t answer whether they want a callback or not |
3. Nudge Once Before Ending
Never end a call the moment a user says no. Acknowledge, reframe once, offer an alternative, then close. This applies to nearly every outbound flow. Pattern:- Make the request.
- If the user agrees: proceed to the next step.
- If the user hesitates or gives a soft refusal (“bad mein”, “abhi busy hoon”, “thoda time chahiye”):
- Acknowledge their concern.
- Reframe from a different angle.
- If the user still refuses:
- Offer an alternative (callback, different option, better time).
- If still no: accept gracefully, update disposition, end warmly.
- If the user gives a hard refusal (“not interested”, “don’t call again”):
- Accept immediately. No nudge. Update disposition and end politely.
- Maximum 2–3 nudges per conversation. After that, close.
- A soft refusal (“bad mein”) is not the same as a hard no — handle them differently.
- Never nudge after an explicit hard refusal — it damages trust.
4. Never Repeat Verbatim — Rephrase and Shorten
Each re-ask must be shorter and more direct than the last. Add the Zero-Loop Policy to your global prompt. ADD TO GLOBAL PROMPT: “Zero-Loop Policy: Never repeat the same text verbatim. If you need to ask again, rephrase it — shorter and more directly. Each re-ask must be noticeably shorter than the previous attempt.”| ATTEMPT | WHAT THE AGENT SAYS |
|---|---|
| First ask | ”Can I check — are you still interested in discussing the repayment options for your loan?” |
| Second ask (user said “hmm”) | “Would you like to look at repayment options?” |
| Third ask (still unclear) | “Should I continue, or would you prefer a callback?” |
5. Handle Fillers Explicitly
Without an explicit rule, the LLM treats “hmm”, “accha”, “theek hai” as agreement and races ahead. ADD TO INTERACTION GUIDELINES: “Fillers: If the user says “hmm”, “accha”, “theek hai”, “haan”, or similar without giving a clear answer, treat it as ambiguous — rephrase and ask again. Do not treat fillers as confirmation or agreement.”6. Stop and Wait — Explicitly
The LLM will rush through multiple steps in one response unless told to stop. Say it explicitly after any question that branches. Example: “Ask the user for the location of the issue — a landmark or street name. Stop and wait for the user to respond. Read the location back to the user and ask them to confirm it is correct. Stop and wait. Do not record the location until the user confirms.”7. Be Prescriptive, Not Vague
Every condition needs an explicit outcome. Gaps in the instruction become gaps in behavior.| VAGUE — AVOID | PRESCRIPTIVE — PREFER |
|---|---|
| ”Ask the user to confirm their PAN verification." | "Ask the user to confirm their PAN. If the format is invalid, explain the correct format and ask again. After 2 failed attempts, offer a callback." |
| "Handle payment objections." | "If the user disputes the amount, acknowledge their concern, do not argue, and move to the Escalation state." |
| "Close the call." | "Thank the user, confirm the next step (payment date or callback time), and end the call." |
| "Ask about the issue." | "Ask the user to describe the issue briefly. Confirm the issue type back to them before proceeding.” |
8. Acknowledge Before Moving On
Acknowledge what the user said and ask the next question in the same turn. Splitting them creates dead air.| DEAD-AIR — BAD | FLOWING — GOOD |
|---|---|
| Agent: “That’s great to hear.” [waits] | Agent: “That’s great to hear — what’s been working well for you?” |
| User: [nothing] | |
| Agent: “I understand your concern.” [waits] | Agent: “I understand your concern — could you tell me a bit more about what happened?” |
| User: [nothing] |
9. Sequence Over Prohibition
“Don’t do X before Y” is weaker than “do Y first, then X.” The LLM responds better to sequences.| PROHIBITION — WEAK | SEQUENCE — STRONG |
|---|---|
| ”Never name a product before calling the tool." | "Call tool:lookup_product first. Only after the tool responds may you suggest a product." |
| "Don’t ask for location before confirming the issue type." | "Confirm the issue type first. Once confirmed, ask for the location." |
| "Don’t close the call without asking if there is anything else the user needs. Wait for their response. Only call end_interaction after they confirm they are done." | "Before ending the call, ask if there is anything else the user needs. Wait for their response. Only call end_interaction after they confirm they are done.” |