Voice Simulation
Define a voice agent, create caller personas with voice-specific settings, generate scenarios, run parallel call tests with evaluations, and diagnose failures with Fix My Agent.
Define a voice agent, create caller personas with voice-specific settings (accent, speed, background noise), generate test scenarios, run parallel call tests with built-in evaluations, and diagnose failures with Fix My Agent.
| Time | Difficulty | Package |
|---|---|---|
| 20 min | Intermediate | Platform UI |
- Future AGI account → app.futureagi.com
- A phone number provisioned with your voice provider, or the provider API key and Assistant ID (the web bridge is used when no number is set)
- Voice provider credentials (Vapi, Retell, Bland.ai, or Others)
There is nothing to install. Voice Simulation runs entirely from the dashboard: agent definition, personas, scenarios, and call execution all happen in Simulate.
Tutorial
Define your voice agent
Go to app.futureagi.com → Simulate → Agent Definition → Create agent definition.
The creation wizard has three steps.
Step 1: Basic Info
| Field | Value |
|---|---|
| Agent type | Voice |
| Agent name | voice-support-agent |
| Select language | English |
Step 2: Configuration
Voice agents require provider and contact details:
| Field | Value |
|---|---|
| Voice/Chat Provider | Select Vapi, Retell, or Bland.ai. Others has no API key or Assistant ID fields, so it cannot use observability or outbound calls |
| Authentication Method | API Key |
| Provider API Key | Your provider’s API key |
| Assistant ID | Your assistant/agent ID from the provider |
| Country Code | Your country code (e.g. +1) |
| Contact Number | The phone number for inbound/outbound calls |
| Inbound/Outbound | Inbound (Future AGI places the calls to your agent; Outbound has the agent initiate calls and requires API key + Assistant ID) |
Step 3: Behaviour
| Field | Value |
|---|---|
| Prompt / Chains | You are a helpful customer support agent for TechStore. You assist customers with orders, returns, and product questions over the phone. Always be professional, empathetic, and solution-oriented. Keep responses concise: this is a voice call, not a chat. If you cannot resolve an issue, offer to transfer to a human agent. |
| Knowledge Base | (optional) Select a KB for grounded responses |
| Commit Message | Initial voice agent prompt |
Click Create. You should see the agent definition saved as v1.
Tip
To iterate on your agent’s prompt, open the agent definition and click Create new version. Each version gets a commit message for tracking.
Enable voice observability (optional)
Open the agent definition → Create new version → Configuration, and toggle Enable observability (Requires API key) to monitor your voice agent’s calls. The toggle stays disabled until you fill in both Provider API Key and Assistant ID.
Once enabled, Future AGI auto-creates an Observe project named after your agent. After you run simulations (step 5) or your agent receives real calls, voice provider logs are automatically imported into this project. No SDK setup or manual instrumentation is needed.
To view voice traces, go to Tracing (left sidebar under OBSERVE) and select the auto-created project. You should see each voice call logged with metadata such as call duration, status, and transcript.
Tip
Once voice traces are flowing, you can track latency, token usage, and cost trends in the Charts tab, and set up alerts when metrics cross your thresholds. See Monitoring and Alerts for the full setup.
Create caller personas
Go to Simulate → Personas → Create your own persona.
Voice personas have Behavioural Settings (Personality, Communication Style, and voice-only Accent) and Conversation Settings (voice-specific settings including speed, background noise, and sensitivity sliders).
Create these three personas (select type Voice for each).
cooperative-caller
| Section | Field | Value |
|---|---|---|
| Basic Info | Name | cooperative-caller |
| Basic Info | Description | A calm, patient customer who explains their issue clearly and follows instructions step by step |
| Behavioural | Personality | Friendly and cooperative |
| Behavioural | Communication Style | Direct and concise |
| Behavioural | Accent | american |
| Conversation | Conversation Speed | 1.0 |
| Conversation | Background Noise | No |
| Custom Properties | patience_level | high |
frustrated-caller
| Section | Field | Value |
|---|---|---|
| Basic Info | Name | frustrated-caller |
| Basic Info | Description | An impatient caller who has tried to resolve this twice, speaks in short sentences and may threaten to cancel |
| Behavioural | Personality | Impatient and direct |
| Behavioural | Communication Style | Assertive |
| Behavioural | Accent | american |
| Conversation | Conversation Speed | 1.25 |
| Conversation | Background Noise | Yes |
| Custom Properties | patience_level | low |
confused-caller
| Section | Field | Value |
|---|---|---|
| Basic Info | Name | confused-caller |
| Basic Info | Description | A non-technical caller unsure what information to provide, asks for clarification frequently |
| Behavioural | Personality | Anxious |
| Behavioural | Communication Style | Questioning |
| Behavioural | Accent | american |
| Conversation | Conversation Speed | 0.75 |
| Conversation | Background Noise | No |
| Custom Properties | tech_literacy | low |
Tip
Voice-specific settings (not available for chat personas):
- Accent: 51 options including american, australian, indian, french, german, and many more
- Conversation Speed: 0.5 (slow) to 1.5 (fast)
- Background Noise: yes or no
- Finished Speaking Sensitivity: 1-10 slider (how quickly the persona starts talking after the agent pauses)
- Interrupt Sensitivity: 1-10 slider (how easily the persona stops talking when the agent starts speaking)
Click Create on each. You should see all three personas listed as Voice type with their accent and speed shown as tags.
Create a scenario
Go to Simulate → Scenarios → Create New Scenario.
Select Workflow builder and fill in:
| Field | Value |
|---|---|
| Scenario Name | broken-device-return |
| Description | A customer received a laptop with a cracked screen and wants to start a return. They have their order number but don’t know the return process |
| Choose source | Select voice-support-agent (Agent Definition) |
| Choose version | v1 |
| No. of scenarios | 20 |
In the Persona section, leave Add by default on to auto-add all active personas, or turn it off and click Add persona to select specific ones.
Click Create. You should see the scenario listed with the 20 generated test cases attached.
Create and run the simulation
Go to Simulate → Run Simulation → Create a Simulation.
The creation wizard has four steps.
Step 1: Add simulation details
| Field | Value |
|---|---|
| Simulation name | return-flow-voice-test |
| Choose Agent definition | voice-support-agent |
| Choose version | v1 |
| Description | Testing return flow with 3 caller personas |
Step 2: Choose Scenario(s)
Select the broken-device-return scenario.
Step 3: Select Evaluations
Click Add Evaluations and under Groups, select a group of built-in conversation evals for broad coverage (e.g. Conversation Coherence, Conversation Resolution, and Task Completion). Eval groups are workspace-specific, so the exact name and count of evals in your group may differ from this walkthrough.
Step 4: Summary
Review your configuration and click Run Simulation.
Future AGI places calls to your agent in parallel. Each call runs to completion before the result is logged. You should see the executions grid fill in as calls complete.
Review results and Fix My Agent
Once the run completes, the results page shows three tabs:
- Call Details: per-call transcripts, CSAT scores, and evaluation scores
- Analytics: evaluation score distributions across personas
- Optimization Runs: results from prompt optimization runs
Click any transcript to read the full conversation. Look for turns where the frustrated persona escalated, turns where the confused persona stopped understanding, and whether the cooperative persona reached a successful resolution every time.
For example (illustrative: your run’s actual transcripts and scores will differ), the frustrated-caller call on the broken-device-return scenario scored low on Conversation Resolution: the agent confirmed the order number but never told the caller what to do next, and the caller hung up after asking “so what happens now?” twice with no answer.
Fix My Agent: click the Fix My Agent button to open the diagnostic drawer. The platform analyzes the call transcripts and evaluation scores from this run and surfaces two categories of recommendations:
- Fixable Recommendations, organized into two tabs:
- Agent Level: prompt and behavior improvements you can apply directly (e.g. missing empathy phrases, unclear escalation paths)
- Branch Level: domain-specific issues grouped by conversation topic or flow (e.g. return policy gaps, billing confusion). Each recommendation highlights which specific calls are affected, so you can trace issues back to exact conversations
- Non-Fixable Recommendations: system-level issues that require infrastructure changes (e.g. missing integrations, data access limitations), plus a human comparison summary showing where a human agent would have handled the situation differently
- Overall Insights: a synthesis of patterns across all calls
For the low-scoring call above, the Agent Level tab surfaced this recommendation: “Add an explicit next-step statement after confirming the order number (e.g. ‘I’ll email you a prepaid return label within the hour’).” Click Apply Fix to create a new agent version with the recommendation merged into the prompt, then rerun the broken-device-return scenario against the new version. On the rerun, the same persona’s Conversation Resolution score moved from failing to passing, since the agent now states the next step before the call ends.
Optimize My Agent: inside the Fix My Agent drawer, click Optimize My Agent to auto-generate improved prompt variants.
- Enter a Name for the optimization run
- Choose Optimizer: select from available optimizers (e.g. Bayesian Search, MetaPrompt, ProTeGi, GEPA, PromptWizard, Random Search)
- Language Model: select the model for optimization
- Click Start Optimizing your agent
Review results in the Optimization Runs tab. Compare generated prompt variants and their scores to decide which version to promote.
Tip
For reliable Fix My Agent suggestions, run at least 15 calls and include as many evaluations as practical (minimum: 1).
You can now define a voice agent, create caller personas with voice-specific settings, run a simulation with evaluations, and use Fix My Agent to surface failure patterns and optimize prompts.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Enable observability toggle stays greyed out | Provider API Key or Assistant ID field is empty | Fill in both fields, the toggle unlocks once both are set |
| Calls fail to connect when the simulation runs | Contact Number or Country Code doesn’t match the number provisioned with your voice provider | Re-enter the number in Agent Definition and verify it matches your provider dashboard exactly |
| Simulation shows 0 calls after starting | No personas are attached to the scenario: Add by default was off with none selected manually | Turn on Add by default, or manually attach personas in the scenario editor |
| No voice traces appear in Tracing after the run | Enable observability wasn’t toggled on before the simulation ran | Toggle it on in the agent definition’s Configuration step and rerun the simulation |
| A call transcript is garbled or full of dead air | Background Noise is on or Finished Speaking Sensitivity is set too low for the persona | Turn off Background Noise or raise the sensitivity slider, then rerun the scenario |
| Fix My Agent recommendations feel generic or come back empty | Too few calls ran for the model to find a pattern | Increase the scenario count or persona set and rerun with at least 15 calls |
| Optimize My Agent doesn’t appear in the Fix My Agent drawer | No Fixable Recommendations were generated for this run | Rerun with more calls or broader evaluation coverage so the analysis has enough data to act on |
Next: run the same optimization loop through the SDK in Prompt Optimization.
Questions & Discussion