How to Build Effective Prompts for AI-Powered Conversational Agents
Introduction
Creating effective conversational agents on the Wolkvox platform depends largely on the quality and structure of the prompts that define them. This guide presents best practices identified from analyzing our most successful prompts, those proven to generate natural, accurate conversations with excellent customer experience.
Fundamental architecture of the prompt
Recommended base structure
Every effective prompt should follow this hierarchical structure:
# Prompt objective
## Important data from the conversation
# Conversational flow
## Special instructions
## Additional data
## List of restrictions
Definition of the objective
Critical Element: Always start with a clear and specific statement of purpose.
Recommended format:
# Prompt objective
- Attend a conversation for [specific purpose]
- Your name is **[Name]**, and you are [role/specialization]
- Maintain a tone [characteristics of the tone]
Successful example:
- Attend a conversation to make the payment commitment
- Your name is **Sara**, and you are **an expert virtual advisor** who is deeply familiar with financial processes.
- Maintain a formal, patient and respectful tone at all times
Personalization and humanization
Identity of the agent
Essential elements:
- Specific name: Create a clear identity (Sara, Natalia, Isabel, etc.)
- Professional role: Defines specialization and authority
- Company: Clearly establishes the organization it represents
Bridging expressions and handling of silences
Essential Practice: Implement bridging expressions that maintain conversational flow and handle transitions naturally.
Expressions of temporal transition
## To save processing time:
- *eeh...*
- *Well...*
- *let's see...*
- *allow me a moment...*
- *one second please...*
- *I'm going to validate...*
- *let me check...*
Conversational pick-up expressions
## To resume after interruptions:
- "Now, as I was telling you..."
- "Returning to your current situation..."
- "Continuing with the reason for the conversation..."
- "As I was saying before..."
- “Continuing with what we were reviewing...”
Expressions for handling silences
## To break awkward silences:
- "Are you there?"
- "Can you hear me okay?"
- "Do you have any questions about what we just reviewed?"
- "Is this clear to you?"
- “Do you need a moment to think about it?”
Expressions of confirmation and validation
## To maintain engagement:
- "I understand..."
- "Perfect..."
- "Clear..."
- "It's clear to me..."
- "Very good..."
- "Correct..."
Dynamic variables
Recommended implementation:
- Client name: $va_pred_client_name
- Last name: $va_pred_apellido_cliente
- Debt value: $opt1_letters
- Deadline: $kind_date
Structured conversational flow
Step-by-step methodology
Objective of the methodology
The technique involves writing the prompt as a numbered, hierarchical sequence of instructions. Each major step is marked as X.0 (phase), and specific tasks within that phase are numbered as X.1, X.2, etc. This forces the model to execute tasks in order and facilitates traceability, testing, and maintenance.
Numbering and formatting rules
- Allowed levels: use up to 3 levels (e.g. 2.1.1) — more depth makes reading more difficult.
- Convention: The first digit is the phase; the second is the substep. E.g.: 1.0, 1.1, 1.2, 2.0, 2.1.
- Each step should be a simple instruction (imperative verb + object).
- If a step expects structured output (e.g., variables), state this explicitly and provide the output format.
- Use clear variable identifiers (e.g., $destination_route, $requested_date) and specify types (date, city, number).
- Include a NO-MATCH step that returns a code or action when insufficient information is found.
Conditional validations and flows
Critical Element: Clearly defines the necessary validations:
### Internal validation:
You must verify that the digits said by the customer are equal to: $last_3_digits
### Possible outcomes:
- **Correct digits** 👉 [CODTITULAR]
- **Incorrect digits** 👉 [CODEQUIVOCADOCC]
Completion codes
Essential Practice: Use unique codes for each closure type:
- [CODEXITOSO] - Successful payment commitment
- [CODYAPAGO] - Customer has already made the payment
- [CODAGENT] - Transfer to human agent
- [CODNEGATIVE] - Customer refuses to pay
Interrupt Handling
Universal Protocol
Mandatory implementation:
## Universal Prompt for Customer Interruptions
1. Listen to the customer's question or comment
2. Respond in a concrete and friendly manner
3. Immediately resume with a bridging sentence:
- "Now, as I was telling you..."
- "Returning to your current situation..."
- "Continuing with the reason for the conversation..."
 
Practical example
**Example**:
You are at step 2 saying, "Are you sure you can make the payment?"
Customer interrupts: "Where are you calling from?"
Answer: "I'm calling you from Bancoomeva"
He continued: “Continuing with the reason for our conversation... Do you confirm that you will be able to make the payment?”
Additional data and restrictions
Information on demand
Principle: Only provide additional information when explicitly requested by the client.
## Additional information (only if requested by the client)
- **What is the objective of the conversation?**
👉 It helps with the redeferral of your credit card payments.
- **Where are you calling me from?**
👉 We're calling you from Banco de Bogotá
Clear restrictions
Essential elements:
## List of restrictions
- Do not repeat previous steps or confirmations
- Do not proceed to the next step if the previous one has not been completed.
- Do not answer questions outside the context of the conversation.
- When you don't have an answer, say honestly that you don't have that information.
Date management and validations
Processing of natural dates
Recommended implementation:
The client can use natural language to refer to dates:
- "tomorrow", "the day after tomorrow", "on Friday", "later", "today"
Your task is to interpret these expressions and check if they are within: $diascomprendidos
Examples:
- If it says "tomorrow" and tomorrow is in $days included, it is valid
- If it says "Friday" and "Friday" is contained in $days included, it is valid
User-friendly date format
Date formats come in (Ymd), tell them naturally:
- 2025-05-09 → "for May 9 of this year"
- 2025-05-09 → “for the 9th of this month”
Reasons and objections
Typical causes
Recommended structure:
## TYPIFIED CAUSES FOR NON-PAYMENT
- **Unemployed holder**:
- How long have you been unemployed?
- Are you actively looking?
- Have you claimed the settlement?
- **Lack of money**:
I understand. Keep in mind that nonpayment may result in additional interest.
Logic of objections
## NON-TYPIFIED NEGATIVES
- **First attempt**: I'm sorry you might be having difficulties...
- **Second attempt**: I completely understand you...
- **Final Attempt**: I respect your decision…
Quality Checklist
Before implementing a prompt, check:
[ ] Clear and specific objective
[ ] Well-defined agent identity
[ ] Structured step-by-step flow
[ ] Interrupt handling implemented
[ ] Dynamic variables configured
[ ] Unique completion codes
[ ] Clearly established restrictions
[ ] Data validations implemented
[ ] Reasons and objections considered
[ ] Consistent tone and personality
