Dashboard

0 recordings loaded

Sentiment trend (last 14 days)

Disposition breakdown

Agent leaderboard

AgentCallsAvg sentimentScore

Top customer issues (AI-detected)

Coaching insights preview

See all →
WhenDirAgentCampaignIn-groupPhoneDuration DispoSentimentScoreAI
No calls match your filters.

All agents

Agent Total calls In Out Sales Avg duration ≥ 5 min ≥ 10 min ≥ 20 min Avg sentiment Coaching score Script adherence Top issue

Performance over time

Skill radar (avg across calls)

Recurring coaching themes

Script adherence breakdown

💡 AI Coaching insight for this agent

All call recordings

When Phone In-group Duration Dispo Sentiment Score Adherence AI

Coaching insights by agent

For each agent with AI-analyzed calls, click Generate to produce a strategy grounded in the coaching data across all their calls — with an evidence-based estimate of close-rate lift if they follow the recommendations.

Agent Coaching criteria Strategy Discovery Pitch Potential lift Actions
No AI-analyzed calls yet. Analyze some calls first, then come back and generate insights.

Executive summary

✓ Strengths

▲ Growth areas

Discovery playbook

Pitch playbook

Objection playbook

4-week coaching plan

Metrics to track

🏆 Team Performance

Rank every agent, spot rising stars, surface who needs coaching, and benchmark the team against itself.

🏅 Leaderboard

Badges:
Rank Agent Metric Achievements vs team avg Trend

🚀 Rising stars

🎯 Needs coaching

Skill benchmark — team avg vs top performer

QA score distribution

Team QA + sentiment over time

Effort vs outcome (talk time → sales)

Team-wide coaching hotspots

Coaching themes that show up across the most agents — the biggest levers for team-wide improvement.

Compliance snapshot

Analysis coverage

→

Calls per day (inbound vs outbound)

Calls by hour of day

By agent

AgentCallsInOutSales Total talkAvg talk ≥ 5 min ≥ 10 min ≥ 20 min

By in-group (inbound)

In-groupCallsSales Total talkAvg talk ≥ 5 min ≥ 10 min ≥ 20 min

By campaign (outbound)

CampaignCallsSales Total talkAvg talk ≥ 5 min ≥ 10 min ≥ 20 min

Dispositions

StatusCount% of total

By list (outbound)

ListCampaignCallsSales Total talkAvg talk ≥ 5 min ≥ 10 min ≥ 20 min

Deals & pipeline

Every unique phone number rolled into a deal timeline. Sort by activity, close likelihood, or last touch.

ContactStatusCallsLatest disposition Total talkBest sentimentLast touchAgent
No deals — load some calls first.
CONTACT

—

Sentiment trend across all calls

Call timeline (newest first)

📌 Coaching assignments

Calls assigned to reps for review. Assign from any call's detail page.

Assigned toCallTaskStatus Assigned byAssignedCompleted
No assignments yet. Open any call and click "Assign as coaching" to create one.

✂ Snippets library

Curated moments from your calls — save great objection handles, discovery openers, or coaching examples. Great for onboarding playlists.

No snippets yet. Open any call, use the audio player to find a moment, and click Save as snippet.

🛡 Compliance Dashboard

Define trigger phrases (forbidden words agents must NOT say, or required disclosures they MUST say). We scan every transcript automatically and flag violations.

Violations over time

By agent

AgentViolationsCallsRate

Rules

No rules yet. Click + Add rule to define your first trigger phrase.

Recent violations

DateAgentRuleSeverityContext
No violations detected. 🎉

📋 Custom Scorecards

Design your own QA rubric — categories, weights, and pass criteria. Assign to a campaign and the AI scores every call against it.

No custom scorecards yet. Click + New scorecard to build your first rubric.

Scorecard editor

Loading campaigns...
The AI will score calls in the selected campaigns using this scorecard. Empty = scorecard is defined but not yet used.

Categories

Weights should total 100. Each category becomes a 0–100 score, then weighted-averaged into the final call score.

—

Calls by duration bucket

Dispositions

By agent

AgentCallsSalesTotal talk

By disposition

DispositionCalls%

Call log

WhenDirAgentPhone DurationDispoSentiment AI

Agent scripts / talk tracks (per campaign)

Different campaigns can have different scripts. Pick a campaign below to edit its script, or pick Default for the fallback used when no campaign-specific script is set. Choose the industry so Auto-format with AI uses the right framework for that vertical. Upload a PDF, Word doc, or text file to import — formatting from the original is preserved.

Shapes the auto-format prompt — Debt uses a Credit Pull → Program Savings flow, Solar uses site survey → savings math, etc.
For a script not in the loaded call data.

Admin overview

System-wide metrics for every account on this ProDial Insight server.

Recent signups

Most active accounts

All client accounts

"Sign in as" swaps your session for the client's so you can view and modify their settings, scripts, webhooks, and dashboards. A banner appears at the top of the page while impersonating — click "Return to admin" there to switch back.

UsernameEmailRoleSign-in AccountCreatedAnalysesActions
No users yet.

🏢 Client CRM

One card per client account. Track their server infrastructure, monthly hosting cost, contact info, and open tickets.

No client accounts yet.

Client

Contact info

Servers & IPs

Total monthly server cost
$0.00

🎫 Tickets for this client

👤 Team members

Every admin and developer on this server. Add new team members, change their roles, or remove access.

🛡 Admins

🎫 Developers

Team ticket workload

Open tickets currently assigned to each team member.

🎫 Ticket board

Track every open task across all clients. Developers can update ticket status; admins can create, edit, assign, or delete.

OpenAI usage & costs

Estimated spend across all accounts using this server's OpenAI key.

Per-user breakdown

Sorted by highest cost. Click column headers to re-sort.
User Analyses Minutes Input tokens Output tokens Whisper $ GPT $ Total $ Last analysis
No analyses have been run yet.

Pricing assumptions

Rates below match OpenAI's public per-model pricing. Costs are estimates — the client uses ~4 characters/token, and Whisper cost is derived from the transcript's last timestamp. Actual spend may vary by ±10%.

Server-wide OpenAI settings

Every account on this server uses the same OpenAI API key to transcribe and analyze calls. Only admins see or manage these settings.

Account

Signed in as

Call detail

Recording

Sentiment timeline

✨
No AI analysis yet
Click "Re-analyze with AI" at the top to generate the agent scorecard, coaching opportunities, and suggested improvements for this call.

Speech metrics

⚠ Deal-risk signals detected

Topics discussed

Script adherence breakdown

Step Status Notes

Transcript

Coaching opportunities

Suggested improvements

Customer objections + how to handle them

Script adherence

AI call summary

ProDial connection

Live ProDial mode Enables real ProDial calls (via non_agent_api.php or the custom endpoint below). Turn this on once your server URL, API user, and password are filled in.
Just the base URL — we'll append /dialer/non_agent_api.php automatically. You can also paste a full .php URL if your install uses a custom path.
Resolves to: —
Only needed if the location field in recording_lookup returns relative filenames.
★ Recommended path (works even on locked-down hosted ProDial): Upload prodial-recordings.php to your ProDial server and use it instead of non_agent_api.php. It queries recording_log directly and returns JSON — no recording_lookup validation to fight with. See the "Custom recordings endpoint" section below.
If using non_agent_api.php: Fill in at least one of Agent user, Lead ID, Phone number, or Recording ID below. Be aware that hosted ProDial providers sometimes disable recording_lookup regardless of parameters — if that's the case, use the custom endpoint above instead.
Date range applied to whichever filter(s) you set below.
ProDial agent_user login (not display name).
Returns every recording tied to one specific lead.
Digits only, no punctuation. Some installs accept % as a wildcard.
Exact match for a single recording row.
Browsers block direct calls to ProDial because of CORS. Run a tiny proxy on your machine and point this field at it. Supports three formats:
• http://localhost:8787 — local reverse proxy (path is forwarded as-is)
• https://example.com/fetch?url= — query-string style (target URL encoded and appended)
• https://example.com/fetch?url={url} — placeholder style
Resolves to: —
Need a proxy? Pick one:

Option A — PHP (easiest, no install). Upload prodial-proxy.php to the same folder as non_agent_api.php on your ProDial server. Then set the CORS proxy URL above to
https://elite.prodial.io/dialer/prodial-proxy.php?url=

Option B — Python (runs locally, no install if Python is already on your PC). Open a terminal in the folder containing prodial-proxy.py and run:
python prodial-proxy.py --target https://elite.prodial.io
Then set the CORS proxy URL to http://localhost:8787.

Option C — Node.js. Install Node 18+ from nodejs.org, then run node prodial-proxy.js --target https://elite.prodial.io and point the proxy URL at http://localhost:8787.

This app calls non_agent_api.php with the functions recording_lookup and agent_stats. Your ProDial user needs modify_non_agent_api permission. Credentials are stored on the ProDial server alongside this page.

Calls data endpoint (single source of truth)

Point this at prodial-call-export.php on your ProDial server. That one script powers everything: the Calls tab (via ?format=json, automatic), the Reports tab (below), and the CSV download. No separate recordings endpoint needed.

Powers the Calls tab (via ?format=json) and the CSV download.
Server-side aggregation for the Reports tab. Same token.
Same token used by both endpoints.
Include auto-dialer system calls (VDAD, VDCL) Off (default) → only human-handled calls. On → matches ProDial's raw Export Calls Report exactly, including predictive dial attempts.

OpenAI (Whisper + GPT) admin only

Server-wide OpenAI settings. All accounts on this server use this same API key to transcribe and analyze calls — clients don't see or manage this panel, only admins.

Calls to OpenAI go directly from your browser to api.openai.com. If the key field is empty, the app uses pre-generated demo analysis so you can explore the interface without spending tokens.

No admin has been set up on this server yet

Click below to claim admin rights for your account. This button only works while no other admin exists — as soon as one is set, the button stops working for everyone else.

Account & server storage

You're signed in with your own account. All settings and previous AI analyses are stored on the server under your username, so opening the URL on any device or browser shows the same data.

CRM integration

Push each AI-analyzed call summary to your CRM. Supports ForthCRM (debt settlement), HubSpot, GoHighLevel, Salesforce, and a generic webhook mode. Fires automatically when a call gets analyzed, or manually via the 📤 Send to CRM button on any call.

Empty = no CRM sync.
e.g. https://api.forthcrm.com
Stored per-account. Sent as Authorization: Bearer <key>.
When on, every completed analysis auto-fires to your CRM.

🌐 Multi-language transcription

Whisper auto-detects the call language and stores it on every transcript. When enabled, non-English calls are also translated to English so your AI analysis, coaching, and search all work uniformly across your team's languages.

Doubles Whisper cost on non-English calls (one pass to transcribe, one to translate). English calls unaffected.

Webhooks

Post a JSON payload to a URL you control whenever a selected event fires. Each webhook is per-account. Body shape: { event, timestamp, user, payload }. Requests are sent from your browser using no-cors, so your endpoint doesn't need to accept CORS.

AI analysis cache

Every analysis is saved on the server and restored automatically on the next page load — you only pay OpenAI once per call.

API debug log

The exact outgoing URL and raw response from ProDial. Updates when you click Test connection.
Click “Test ProDial connection” to populate this.