Test your AI phone script before it calls customers

Run your test scenarios against every version of your calling script, listen to the recordings, grade each run, and prove a fix did not quietly break something else.

App
Bland AISlack BotOperationsSalesResearch & MonitoringAI Reports
PromptCreate

Build me a test bench app for the AI phone script I run on Bland AI, so I can prove a script change works before I point it at customers. It is for the person writing and iterating the script, not a manager reading aggregate stats, so the centre of the app is a side by side comparison of two script versions running the same scenarios, with the transcripts as the evidence. Nothing runs on a schedule; I open the app and press Run.

Version library. Keep a library of script versions. Each version stores a name, the freeform task text the calling agent should run, a note about what changed, the created date, and a status of draft or promoted. I create a new version by duplicating an existing one and editing the text, and I can view any older version's text unchanged. Bland's Send Call accepts either freeform task text or a conversational pathway id but never both, so this bench always stores and dispatches task text and never sends a pathway id.

Scenario panel. Keep a panel of test scenarios I write once and reuse against every version. Each scenario has a name, a description of the caller behaviour I want to simulate (a prospect who interrupts constantly, someone who asks for pricing in the first ten seconds, a voicemail pickup that never picks up), the test phone number to dial in E.164 format such as +14155551234, and any extra grading questions specific to that scenario. Scenarios only ever point at my own test numbers, and the app should validate the E.164 format when I save one.

Running a version. A Run button on a version dispatches every selected scenario with Send Call, using that version's task text, the scenario's test number, and record set to true so a recording exists afterwards. Tag each call with the version id and scenario id in the call metadata so results can be matched back. Bland rejects a second call to the same phone number inside a ten second cooldown, so the dispatcher must space calls to the same number at least fifteen seconds apart: show me a queue with a countdown for the calls that are waiting, let calls to different numbers go out in parallel, and surface any dispatch rejection on the run instead of silently dropping it. After dispatch, poll Get Call Details until the call completes and store the transcript, status, duration and completion time on the run. Use List Calls to reconcile any run the app lost track of, and optionally show the per call timeline from Event Stream on the run detail.

Reading and listening to a run. Each run opens a detail view with the full transcript, an audio player fed by Get Call Recording, the dispatch and completion timestamps, and the exact task text that version used at the time of the run. Recordings only exist because every dispatch sets record to true; if a recording is genuinely missing, say so plainly rather than showing a broken player.

Grading. Grading uses Analyze Call against a checklist of yes or no questions I maintain, for example did it state the callback number, did it book a time, did it avoid promising a discount. Store every question's answer on the run and derive an overall pass or fail from them. Bland bills call analysis per question, so before any grading run show me a clear warning with the estimated cost, calculated as calls multiplied by questions, and make me confirm. Never grade automatically on completion and never silently regrade: if I re-run grading, keep the previous result in the run's history.

My own verdict. I can override any grade with my own pass or fail plus a note. Keep both the automatic result and my override, show clearly which one is in force, and keep the full history of verdicts so I can see how a scenario has moved from version to version.

The compare view is the heart of the app. I pick version A and version B and get a matrix with scenarios down the side and the two versions across the top. Each cell shows the verdict in force and the per question results underneath. Highlight regressions, meaning the scenario passed on A and fails on B, and fixes, meaning it failed on A and passes on B, as visually distinct states so a change that fixed one case while breaking another is impossible to miss. Clicking a cell opens the two transcripts side by side, aligned so I can read where the conversations diverge, with both recordings playable. If one version has no run for a scenario, show the gap and give me a button to run just that cell.

Slack summary and promotion. From any run set I can push a summary to a Slack channel I choose using Send a Message: the version name, the scenarios run, pass and fail counts, the regressions and fixes against the version I compared it to, and my notes. Promoting a version to a live campaign is a deliberate action in the app that flips its status to promoted and records who promoted it and when; if I have not sent a Slack summary for that version yet, prompt me to before promoting.

Persist versions, scenarios, checklist questions, runs, per question results, overrides and promotions so the complete history survives between sessions and I can always go back to a run from three versions ago and read exactly what was said.

What does this prompt do?

  • Keeps a library of script versions and a panel of test scenarios you write once, like a caller who interrupts constantly, someone who asks for pricing in the first ten seconds, and a voicemail pickup.
  • Press Run and the app places real test calls to your own test numbers using the script version you picked, spacing the calls out so a second call to the same number is not rejected.
  • Every call comes back with a transcript and a recording you can listen to, graded against your own checklist, and you can override any grade with your own pass or fail.
  • Puts two versions side by side on the same scenarios so you can see exactly what a change fixed and what it broke, then post a run summary to Slack before you promote a script.

What do I need to use this?

  • A Bland AI account with calling credits
  • A phone number you can answer yourself for test calls, written in full international format like +14155551234
  • The script text for at least one version to start from
  • A Slack workspace, if you want run summaries posted to a channel

How can I customize it?

  • Edit the grading checklist, for example whether the caller stated the callback number, booked a time, or avoided promising a discount
  • Add your own scenarios for the edge cases that matter to you, and point each one at a different test number
  • Change the gap between dispatched calls and pick which Slack channel receives run summaries

FAQs

Does this call real customers?
No. Every call goes to the test numbers you enter yourself, so you can pick up and play the part of the caller you are testing against.
Do the test calls cost money?
Yes. The calls themselves use your Bland AI credits, and grading is billed for every checklist question on every call, so the app shows you an estimated cost and asks you to confirm before any grading run.
Why does the app wait between calls?
Bland AI rejects a second call to the same number placed within ten seconds of the first, so when several scenarios point at the same tester number the app queues them and spaces the dispatches out.
Can I listen to the calls, not just read them?
Yes. Every test call is placed with recording turned on, so each run has an audio player next to the transcript.
What if I disagree with the automatic grade?
You can mark any run pass or fail yourself and add a note. The app keeps both the automatic result and your override, and shows which one counts.
Can I see whether a change broke an older scenario?
That is the point of the side by side view. Pick two versions, see the same scenarios run against both, and the app highlights which cases the change fixed and which ones it broke.

Related templates

Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Clear your Guru verification backlog in one weekly app

A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.

Guru
Slack Bot
App

Stop shipping script changes and hoping

Prove a fix worked on every scenario before your AI voice agent calls a single customer.