Voice AI Product Tutorial A product from Omind
Welcome Browser TTS
Voice AI Product Tutorial · v1.03

Master Omind Voice AI in 30 minutes.

A complete training programme — 20 chapters, 5 modules, 2 knowledge checks. Build, configure, operate, and measure AI voice agents at any scale.

~30 minutes · audio + captions · resume any time
A product from Omind
In this guide

Five modules · twenty chapters

1
Foundations
Studio tour, call architecture, workspaces & roles.
2
Build
Agent setup, prompting fundamentals & deep dive, dynamic variables.
3
Configure
Voice, STT, LLM, knowledge base, tools, transfers, widget.
4
Operate
Phone numbers, Quick Dial, Predictive Dial, live monitoring, logs.
5
Measure
Post-call analysis, webhooks, reports, API.
2 knowledge checks
Mid-guide and final assessment to lock in what you learn.
🌙
Total Calls
5,284
+842 this week
Success Rate
87%
Based on latest data
Avg. Duration
2.3 min
Per call average
Transfers
412
7.8% transfer rate

Welcome back, Maya

This is the dashboard you'll see every time you sign in — total calls, success rate, average duration, and transfer rate at a glance. The four sidebar sections — Main, Outreach, Analytics, Settings — group everything in the platform so you always know where to look. The sidebar also collapses to icon-only mode to give you more screen space. Cost details aren't on the dashboard; they live in Reports.

Three layout patterns to recognise

Once you spot these, every page in Omind Voice AI makes sense.
Split list / detail
Agents, Phone Numbers — pick from a left list, edit on the right.
Full-width dashboard
Reports, Quick Dial — KPIs on top, charts and tables below.
Focused detail
A single call log, a campaign run, an API key — one focal record.
Spot the pattern · find anything in seconds.

The Omind Voice AI real-time pipeline

Seven stages · end-to-end under 500ms.
📞
Telephony
SIP trunk · Vonage / Twilio / custom
🎙️
VAD
Speech vs silence
🔇
Noise cancel
Filter ambient
📝
STT
Deepgram Nova-3
🔄
Turn detect
Whose turn?
🧠
LLM
GPT-5 Mini
🔊
TTS
Deepgram Luna
End-to-end · <500ms

Or — collapse it into one model

Speech-to-speech realtime: fewer stages, lower latency, less per-stage control.

Staged pipeline (default)

STT → LLM → TTS as separate stages. You pick the provider for each. Best when you need fine-grained control — voice cloning, specialist transcribers, model swaps.

Provider choiceTunable per stage~500ms

Realtime model

GPT-4o Realtime or xAI Realtime — one voice-native model handles speech in, speech out. Lower latency, more natural prosody, less plumbing — but no per-stage swaps.

Lowest latencyNatural prosodyLess control

Workspaces · clean separation per team

Switch in the sidebar. Members and data are scoped to each workspace.
My Workspaces
N
Northshore Dental
12 members · Pro
A
Acme Corp
3 members · Starter
P
PropertyGroup
8 members · Growth
A
Admin
Full control of the workspace.
✓ Billing & plan
✓ Members & roles
✓ Phone numbers
✓ Everything in Developer
D
Developer
Build and configure agents.
✓ Create & edit agents
✓ Run campaigns
✓ Manage SIP & webhooks
✓ Everything in Member
M
Member
Read-only access.
✓ View call logs
✓ View transcripts
✓ View reports
✗ No configuration changes

Create Agent

Four ways to start. Pick whichever matches your use case.
AI Generator
Describe your use case — Omind Voice AI drafts a complete prompt and greeting message you can edit.
Fastest
📋
Sample Prompts
Browse our template library — fully configured agents for common use cases.
Library
📝
Custom
Start from a blank slate and write everything yourself.
Full control
📥
Import
Drag-drop a .json agent config — from a backup or another workspace. Validates secrets before import.
Restore / Clone
Maya · Northshore Appointments

Agent detail · eight tabs

Everything you can configure for this agent.
Maya · Northshore Appointments
ID: agt_3K7n2pYbN8wL
📝 Instructions
🗒️ Debrief Prompt
🧠 AI Model
🎙️ Voice & Speech
🛠️ Tools
⚙️ Advanced
▶ Simulate
📞 Call Me
You are Maya, the AI appointment coordinator at Northshore Dental Group. You help patients book, reschedule, and cancel appointments, and you answer common questions about clinic hours, insurance acceptance, and procedures. Be warm, concise, and professional. Always read back the patient's name, phone number, and appointment time before confirming. Transfer any insurance dispute or billing question to the front desk.
Persona, tone, guardrails, read-back, and escalation — covered next chapter.
Hi, you've reached Northshore Dental. This is Maya, the AI assistant — how can I help today?
Default stack: GPT-5 Mini · Deepgram Luna · Nova-3 — change any stage in AI Model or Voice & Speech.
▼ Test in browser before going live

Anatomy of a strong system prompt

Seven sections, every time.
1
Persona & role
"You are Maya, the appointment coordinator…" Be specific.
2
Tone
Warm, professional, concise. State it explicitly.
3
Response guidelines
Short and conversational — never lecture. Avoid jargon.
4
Guardrails
What the agent must never do — share PII, make medical claims, promise what it can't.
5
Battle cards
"Are you a real person?" "Pricing pushback." Pre-loaded answers for hard moments.
6
Read-back protocols
Phone, email, address — read back, ask "Did I get that right?" before continuing.
7
Escalation & handoff
When to transfer, when to end, what to say while handing off.
Anatomy → behaviour

Read-back protocols

The single most important habit for production agents.

Phone numbers · group in 2s and 3s

Caller
Oh seven seven one zero five five five nine zero two.
Agent
Let me read that back: oh-seven-seven-one-oh · five-five-five · nine-oh-two. Did I get that right?

Email · spell with NATO phonetic

Caller
It's m dot patel at northshore.
Agent
So that's M as in Mike, dot, P-A-T-E-L, at, N-O-R-T-H-S-H-O-R-E dot com. Correct?

Battle card example · "Are you a real person?"

Agent: "I'm Northshore's AI assistant — but I can help you with most appointment and clinic questions. If anything needs a human, I'll transfer you straight away."

First message and the iteration loop

The first message recipe

  • Name the company
  • Identify the assistant by name
  • Ask how you can help — open-ended
  • Keep it under 3 seconds when spoken
"Hi, you've reached Northshore Dental. This is Maya, the AI assistant — how can I help today?"

Iterate with Test Agent

  1. Open Test Agent · Voice mode
  2. Try the happy path
  3. Then the awkward edges — confused caller, interruptions, pricing pushback
  4. Listen for moments where it sounds wrong
  5. Edit · save · test again
⚡ Most prompts are at v5 before they're production-ready.

Same anatomy · two industries

Dental clinic vs. real estate agency.

Maya · Dental

Northshore
Job: Book, reschedule, cancel appointments. Answer FAQs.
Guardrails: No clinical advice. No billing disputes without verification. No PII without checks.
Read-back: Patient name · phone · appointment time.
Escalate: Insurance disputes & billing → front desk.
First message: "Hi, you've reached Northshore Dental. This is Maya — how can I help today?"

Alex · Real estate

PropertyGroup
Job: Qualify enquiries. Answer listing questions. Book viewings.
Guardrails: No prices outside listing range. No market predictions. No viewing without calendar check.
Read-back: Property reference · viewing date/time · contact details.
Escalate: Offers, negotiations, contract questions → human (warm transfer).
First message: "Hi, this is Alex from PropertyGroup, happy to help with your enquiry."
Same seven sections · different domain

Three common mistakes

Too short
A two-line prompt produces a vague agent. Aim for a few hundred words, structured.
No escalation path
Without a clear handoff rule the agent will either over-promise or refuse useful help.
Vague tone
"Be helpful" is not a personality. Show, don't tell — give examples of phrases the agent should use.

Dynamic variables · one prompt, every caller personalised

Template (system prompt fragment)

Hi {{patient_name}}, this is Maya from {{clinic_name}} calling to confirm your appointment on {{appointment_date}} at {{appointment_time}} with {{doctor_name}}.

Resolved at call time

Hi Sarah Patel, this is Maya from Northshore Dental calling to confirm your appointment on Wednesday 6 May at 2:30pm with Dr Ahmed.
✓ Variables substituted before the call dials.
📊
CSV upload
Each column → variable. Each row → one personalised call.
API request
Pass variables in the outbound call request body.
📚
Data Collections
Pre-loaded datasets mapping phone numbers to attributes.

Configure the model stack

Mix and match LLM, TTS, and STT providers — swap any stage without touching the others.
Providers: Open AI · xAI · Groq
🤖
OpenAI
GPT-5 Mini
DEFAULT
🤖
OpenAI
GPT-5 · GPT-4.1
xAI
Grok 4 · Grok 3
🎯
Realtime
GPT-4o · xAI
FocusedCreative
ShortLong
On
Service Tier (OpenAI) — Default Auto Flex Priority  ·  Turn Detection (realtime) — Silence-Based Meaning-Based + Eagerness: Auto · Patient · Balanced · Responsive
Also available: ElevenLabs · Rime · Murf · Cartesia · Sarvam · Inworld
🎵
Deepgram
Luna · warm
DEFAULT
🤖
OpenAI
TTS HD
xAI
Ara · expressive
Voice preview available for Deepgram · OpenAI · xAI. Select any voice and click Play Voice to hear it before saving.
Also available: Sarvam (Indian langs) · Cartesia (90+ langs) · OpenAI STT
🎯
Deepgram
Nova-3 · 36+ langs
DEFAULT
xAI STT
stt-1
🤖
OpenAI
gpt-4o-transcribe
Standard
Removes background sounds
Enhanced ✓
+ filters background voices
Telephony Optimized
Phone line audio · voice agents only

Knowledge base · agent-grounded answers

Upload PDF, TXT, or DOCX. Omind Voice AI indexes them automatically.

Uploaded files

Use uploaded files
📄
clinic-hours-2026.pdf
86 KB · PDF
📄
insurance-accepted.docx
214 KB · DOCX
Uploading…
Supports PDF · TXT · DOCX · drag-and-drop or browse

How RAG works in a call

  1. Caller asks: "Do you accept Aetna?"
  2. Agent embeds the question
  3. Vector search hits insurance-accepted.docx
  4. Top passages join the LLM context
  5. Agent answers — grounded, not guessed
⚡ Adds ~80ms · Toggle "Use uploaded files" off for agents that don't need it.

Tools tab · three sections

Call Control · Actions · Integrations
Call Control
📞
End Call
Hangs up cleanly when the conversation is finished.
📵
Detecting Answering Machine
Identifies voicemail; switches behaviour automatically.
Actions
🔀
Transfer Call
Cold or warm transfer to a human or another number.
📅
Look Up Availability
Checks open slots for appointment-style flows.
Confirm Appointment
Books a slot once the caller agrees.
Integrations
🔌
Custom Functions
Register webhooks the agent calls mid-conversation — covered next.
Tools turn talk into action.

Custom function · webhook

Definition

check_appointment_slot
Check open slots for a date/time at Northshore Dental.
https://api.northshore.com/calendar/check
{ "date": {"type": "string"}, "time": {"type": "string"}, "doctor": {"type": "string"} }

Live during the call

Caller
Can I see Dr Ahmed on Wednesday afternoon?
Agent
→ check_appointment_slot(date="2026-05-06", time="afternoon", doctor="Dr Ahmed")
Agent
← 2:30pm and 3:45pm available
Agent
Dr Ahmed has 2:30pm or 3:45pm open on Wednesday — which works better?
SSRF-protected 10s timeout Host allowlist

Transfer Call · configuration options

Cold or warm · with whisper, hold music, and exit delay.

Cold transfer

Faster

Agent says goodbye and bridges directly. No briefing.

1
Agent: "Connecting you now."
2
Caller bridged to human. Agent leaves.

Warm transfer

Recommended

Agent calls destination first, whispers context, then bridges caller in.

1
Dial destination · play on-hold music
2
Whisper: "I have Sarah — insurance question…"
3
Bridge caller. Three-way message plays. Agent exits.

Transfer settings

Speak Before Execution
Whisper MessagePrompt
On-hold Music
Three-way MessageStatic
Disconnect After Handoff
Agent Exit Delay5 s
How many seconds the agent stays on the line after handoff before dropping — a small delay ensures the transfer completes smoothly.
Ringing Timeout30 s
Transfer Attempts2

Test Agent · two modes

Chat for fast iteration. Voice for the real thing.

Live transcript

Connected
You
Hi, I'd like to book a cleaning.
00:02
Agent
Of course — could I get your name and a phone number?
00:04
You
Sarah Patel, oh seven seven one zero five five five nine zero two.
00:08
Agent
Let me read that back: oh-seven-seven-one-oh, five-five-five, nine-oh-two. Did I get that right?
00:13
Test Agent
💬 Chat
🎙️ Voice
Listening…

Speak naturally — your microphone is captured in real time.

Omind Voice AI Web Widget

Embed once. Visitors talk to your agent from your website — no phone, no app.
N
northshore-dental.com
ServicesTeamContact

Friendly dentistry, all under one roof.

From cleanings to crowns, our team has been caring for Northshore patients for over 20 years. Book online or speak with our AI assistant — available around the clock.
👋 Click the mic to talk to Maya
One snippet · voice + chat · same agent

Simulate · test without dialling

An AI caller talks to your agent — no real phone, no minutes consumed.
Providers used
Agent LLM
GPT-5 Mini (OpenAI)
Caller LLM
gpt-4o-mini (OpenAI)
always fixed
Analysis LLM
gpt-4o-mini (OpenAI)
always fixed
Agent TTS
Deepgram Luna
Caller TTS
tts-1-hd / nova
always fixed
Knowledge Base
LlamaIndex · vector search

New Scenario

Anxious patient — reschedule
Nervous patient, first visit
Reschedule Wednesday 2:30pm appointment
12

Post-Call Analysis

Score: 8 / 10
Goal achieved
✓ Yes
Tool usage
look_up_availability called ×2
Strengths
Read-back protocol followed correctly. Warm tone maintained throughout.
Improvements
Confirmation step was skipped before booking. Add "Did I get that right?" to prompt.

Debrief Mode · Structured prompting

Structured prompting with built-in behaviour criteria — next-gen alternative to the single long prompt.
Agent Debriefs
Structured prompting · behaviour criteria
Instructions tab is disabled while Debrief Prompt is active. Turn off Debrief to use the Instructions tab.
DEBRIEF PROMPT TAB
Hi, you've reached Northshore Dental. This is Maya — how can I help today?
Role
Objective
Call Flow
Rebuttals
You are Maya, the AI appointment coordinator at Northshore Dental Group. Be warm, concise, and professional.
Debrief Criteria · 6 groups
Opening & Identity 4 criteria ▾
Proper greeting and introduction DEFAULT
Discloses AI identity when asked DEFAULT
Conversation Quality 5 criteria ▸
Emotional Quality 3 criteria ▸
Accuracy & Data 4 criteria ▸
Each criterion has an enable toggle, a DEFAULT badge when on by default, and an EDITED badge when you've customised the prompt. Six groups total: Opening & Identity · Conversation Quality · Emotional Quality · Accuracy & Data · Safety & Compliance · Situational.

Three ways to get a phone number

Buy new number
Search by country & area code. Vonage default, Twilio available. Live in seconds.
Fastest
🔁
Port your number
Keep the number your customers know. Contact our Telephony team — typically about a week.
Keep your number
🔌
Connect via SIP trunking
Bring your own provider for compliance or pricing reasons.
Advanced

📞 Porting note

Port-in goes through our Telephony team — they coordinate with your source carrier. Typical timeline is around a week, but it depends on your carrier, region, and number type. Some ports take longer. Contact us via the Documentation menu to start.

Connect a custom SIP trunk

Inbound trunk

sip:sayin-in@trunk.northshore.com:5060
198.51.100.0/24, 203.0.113.5
northshore_user
••••••••••

Outbound trunk

sip:trunk.northshore.com:5060
+44 7700 900142
25 simultaneous calls

Quick Dial

Upload a CSV → dispatch a personalised outbound batch.
Batches
12
+3 this week
Dialled
5,284
+842 today
Connected
3,847
72.8% answer rate
Running
2
Active now
BatchAgentProgressStatusSchedule
April Reminders · NorthshoreMaya
576/847
RunningNow
Insurance RenewalsMaya
102/300
RunningNow
Patient Survey · MayMayaScheduledTue 09:00
New patient onboardingMaya
450/450
CompletedYesterday
847 personalised calls · automated.

CSV → calls in three steps

1 · Upload CSV

phone,patient_name,appointment_date,appointment_time,doctor_name +447710555902,Sarah Patel,2026-05-06,14:30,Dr Ahmed +447831200134,Tom Brennan,2026-05-06,15:00,Dr Patel +447900122481,Aditi Rao,2026-05-07,10:15,Dr Ahmed

2 · Pick agent & schedule

3 · Watch it run

14:42
Sarah Patel · ✓ confirmed
14:38
Tom Brennan · ✓ rescheduled to Friday
14:31
Aditi Rao · voicemail · will retry
14:28
→ dialing next…
Personalised per row Cancellable Live progress

Predictive Dial · the campaign engine

Timezone-aware · DNC-compliant · disposition-tracked.
🌍
Timezone-aware dialing
Every prospect called within their local 9am–9pm. No after-hours violations.
🚫
DNC enforcement
Built-in DNC list. Upload your own. State-level exclusions and holiday filtering.
⚙️
Cadence controls
Retry limits, retry intervals, dialling rate caps. Prevent over-dialling.
🏷️
Custom dispositions
Interested · Not Interested · Callback · Wrong Number · No Answer.
📅
Callback scheduling
Agent collects time, contact re-enters the queue automatically.
📧
Automated reports
Scheduled campaign reports delivered by email.

Campaign in flight

Insurance Renewals · 18,420 contacts

Active
Active dials
38
Answer rate
28.4%
Drop rate
1.2%
Pacing
3.5×

Disposition mix · last 24h

Interested32%
Callback Scheduled18%
Not Interested22%
No Answer21%
Wrong Number7%

Compliance & pacing

Local 9–9 enforced✓ ON
DNC scrub✓ Daily
State exclusions3 states
Holiday skip✓ ON
Max 3 retries · 4h apartCadence

Live Dialer Status Report

One row per active campaign · auto-refreshes every 5 seconds.
Campaign
Active Prospects
Callable Prospects
Renewals · Q2 2026
Maya · running
12
2,418
Appointment Reminders · May
Maya · running
8
643
Lead Follow-ups · West
Alex · running
5
1,206
NPS Survey · April cohort
Maya · finishing
2
17
Auto-refresh · 5s Use during campaign launches to confirm the queue is moving and no campaign is stuck.

Call Logs

Every call · three channels · searchable and exportable.
📞 Phone
🌐 Web
💬 Chat
Call IDDirectionAgentCustomer NumberDispositionTime & DurationDetails
cl_a8b2… InboundMaya+44 7710 555 902Booked14:42 · 3:42👁 view
cl_a8b1… InboundMaya+44 7831 200 134Resolved14:38 · 1:12👁 view
cl_a8af… InboundMaya+44 7900 122 481Transferred14:31 · 5:08👁 view
cl_a8ae… OutboundMaya+1 415 555 0934Voicemail14:28 · 0:42👁 view
cl_a8ad… InboundMaya+44 7700 408 217Resolved14:22 · 2:55👁 view
cl_a8ac… InboundMaya+44 7889 663 005Transferred14:18 · 4:21👁 view

Call Details

Three tabs · Transcriptions · Conversation Analysis · Call Details

cl_a8b2 · +44 7710 555 902 · 3:42

Booked
📝 Transcriptions
📊 Conversation Analysis
ℹ️ Call Details
1:24 / 3:42
Caller
Hi — I'd like to book a cleaning.
00:02
Agent
Of course. Could I take your name and a phone number?
00:05
Caller
Sarah Patel, oh seven seven one zero five five five nine zero two.
00:11
Agent
Let me read that back: oh-seven-seven-one-oh, five-five-five, nine-oh-two. Did I get that right?
00:18
Caller
Yes, that's right.
00:23
Agent
I have Wednesday at 2:30 with Dr Ahmed available — does that work?
00:27

Call Details tab · preview

Call ID
cl_a8b2_4f7e2c91
Phone Call
+447710555902 → +447700900142 (inbound)
Duration
3 min 42 s
Disposition
Booked
Disconnection reason
caller_hung_up
Dynamic variables
patient_name: "Sarah Patel"
clinic_name: "Northshore Dental"
Cost details live in Reports — not on the Call Logs page

Post-call analysis

Three things happen automatically — within seconds of hanging up.
1

Sentiment

The full transcript is read and labelled — positive, neutral, or negative — with a per-call confidence score.

😊 Positive · 0.91
2

Outcome extraction

Add extractions in Advanced → "Add Extraction". Each has a Data Key, an Extraction Prompt, optional Choices for classification, and an enable toggle.

appointment_booked · Was an appointment booked?
issue_resolved · Was the caller's issue resolved?
3

Disposition

Calls bucketed into outcomes you control.

Booked · 64% Resolved · 18% Transferred · 12% Voicemail · 6%
100% of calls analysed · automatically.

Post-call webhook

Fires the moment the call ends — keep your CRM in sync without polling.

Configure

https://api.northshore.com/webhooks/call-ended
call.ended call.transferred call.voicemail
3 retries · exponential backoff (2s, 8s, 32s)
whsec_•••••••••••••••••

Sample payload

{ "call_id": "cl_a8b2", "agent_id": "agt_3K7n2p", "from": "+447710555902", "to": "+447700900142", "duration": 222, "cost_usd": 0.18, "disposition": "booked", "sentiment": "positive", "extracted": { "appointment_booked": true, "doctor": "Dr Ahmed", "date": "2026-05-06", "time": "14:30" }, "transcript_url": "https://...", "recording_url": "https://..." }

Reports

Five report types · pick one from the left, drill in on the right.
Report types
📋Call Summary
Aggregate metrics
🏷️Disposition Summary
Counts per disposition
👥Agent Performance
Per-agent totals & cost
🕐Peak Hours
7×24 heatmap
📤Batch Campaigns
Per-batch summary
Agent Performance
Per-agent totals: calls, avg duration, success rate, and cost.
AgentTotal CallsAvg Duration (min)Success RateTotal Cost ($)
Maya · Northshore Appointments2,8472.387.2%$524.18
Lead Qualifier1,6123.171.4%$402.67
Renewal Reminder8251.892.6%$148.50
Web Assistant3184.278.9%$94.21
Cost-by-provider fields are also available in Call Summary for workspace admins.

Omind Voice AI REST API

Everything in this guide — also available programmatically.

Common endpoints

POST/agentscreate agent
GET/agents/{id}/fileslist KB files
POST/calls/outbound_calltrigger call
GET/callslist logs
POST/batch/uploadQuick Dial CSV
GET/reports/dashboardmetrics
📚 Full API tutorials
Each endpoint covered in depth with code samples in the Omind docs portal.

Trigger an outbound call

curl -X POST https://api.omind.ai/v1/calls/outbound_call \ -H "Authorization: Bearer $OMIND_API_KEY" \ -d '{ "agent_id": "agt_3K7n2p", "to": "+447710555902", "variables": { "patient_name": "Sarah Patel", "appointment_date": "2026-05-06" } }'
Generate keys from the API Keys page · workspace-scoped · hashed at rest.

Change Logs · full audit trail

Settings → Change Logs · every agent modification recorded with who, what, and when.
Operations: create update ✓ delete reset
Scope & Parameter
Operation
Prior Value (Deletion)
New Value (Addition)
Maya · Northshore
System Prompt · manash.kundu@fusioncx.com · 2 min ago
update
…always read back the patient's name…
…read back the patient's name, phone number, and appointment time…
Maya · Northshore
Voice Provider · same user · 8 min ago
update
xAI
deepgram
Alex · PropertyGroup
Agent created · dev@propertygroup.com · 1 hr ago
create
agt_9Xm4kLp2…