Pulse
Live snapshot across every ingested call
Compliance alerts
Portfolio truth · verified, not just claimed
Collected vs. promised
Book value ⓘ
—
—
Total principal outstanding across every allocated account - the base the Promised and Collected figures are drawn from.
Collected of promised
—
—
Honor rate ⓘ
—
of resolved promises kept
% of resolved promises that were kept - a count, not a share of the rupee amounts above.
Compliance alerts
—
flagged for review · vs. last 7 days
Genuinely reached
—
of allocated accounts
Full reach breakdown - genuinely reached vs. attempted-no-connect vs. never contacted at all
Loading…
Decisions waiting on you
The specific things that have stopped resolving on their own and are waiting on a human call - not a second metrics dump.
Loading…
Agent mix
Operational detail
Loading…
Recordings ingested
0
0 analysed (70%)
· 0 skipped (30%)
Avg Compliance Score
0
checklist + violation severity, 0-100 scale · vs. last 7 days
Avg Quality Score
0
resolution outcome, 0-100 scale - a separate axis from Compliance Score · vs. last 7 days
| # | Reference | Agent | Vendor | Bucket | Duration | Language | Status | Intent | Compliance Score | Quality Score | Recommended action | Audio |
|---|
Compliance monitoring
Open compliance alerts
Coaching queue
Coaching queue
Ranked by severity, then how often it's recurred, then most recent - which agents need coaching this week, and why, closing the loop Agent DNA starts.
| Agent | Vendor | Violation type | Occurrences | Severity | Status | Opened |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Grievance cases
Evidence assembled from the account's own record — contact timeline, compliance checks and coverage gaps. ShieldX determines what happened; the disposition stays yours.
| Account | Category | Received | SLA | Status | Hold |
|---|---|---|---|---|---|
| Loading… | |||||
File a case
Received date is when the customer complained — the regulatory clock runs from there, not from when this case was filed.
Complaint risk
Every indicator below is something already observed on a call that happened — a conduct flag raised, a customer whose tone declined, an identity never verified. This is not a forecast, and no call here is an accusation; it is a queue to review while there is still time to act.
Accounts to be ready for
Rolled up per account — three medium calls deserve attention no single one of them earns.
| Account | Calls | Band | Indicators | Last call |
|---|---|---|---|---|
| Loading… | ||||
Calls
| When | Account | Agent | Band | Indicators |
|---|---|---|---|---|
| Loading… | ||||
By agent, within cohort
Rates are shown within a cohort and never blended. Agents working a write-off or high-DPD book generate more friction by the nature of the work — comparing raw counts across books would penalise them for their allocation, not their conduct. Nothing here opens a case: a supervisor decides what, if anything, to do.
| Cohort | Agent | Calls | Flagged | Rate |
|---|---|---|---|---|
| Loading… | ||||
AI agent monitoring
Exploratory — not a confirmed signal yet
This groups your own CDR by its
campaign column and checks whether that column reliably tells
human calls apart from AI-voice ones — a still-unconfirmed idea, not something the product treats as true
yet. If a campaign below reads as almost entirely "AI voice", that's the confirmation — read off your own
real data. If every campaign shows a mixed breakdown, the idea probably doesn't hold for your CDR shape,
and this stays informational rather than becoming a monitoring rule anywhere else.
Campaign coverage
Coverage — of the unique accounts CDR shows as connected under this campaign, how many ShieldX has an actual analysed call for (not raw call counts, so a repeat-dialed account isn't double-counted). Human / AI voice / Untagged is the agent-type mix among that same bridged set — the actual signal for whether this campaign looks like an AI channel. Click a row for the account-level detail and raw dial counts.
| Campaign | Connected accounts | Coverage | Human | AI voice | Untagged |
|---|---|---|---|---|---|
| Loading… | |||||
Quality monitoring
Languages detected
Voice of customer
Agent performance
Performance
| Agent | Vendor | Calls | Compliance | Alerts | RPC rate | Connect rate | PTPs taken | PTP value | Honor rate | Amount collected |
|---|---|---|---|---|---|---|---|---|---|---|
| No agent-tagged calls yet. | ||||||||||
Productivity reconciliation
Your dialer/CCaaS platform's own Agent Productivity Report vs. what ShieldX independently computes from the transcribed calls themselves - two separate sources of truth on purpose. Only agents present in both are shown; a wide RPC gap means the two systems disagree on how often this agent actually reaches the right person.
| Agent | ShieldX RPC | CCaaS RPC | Gap | ShieldX honor rate | CCaaS conversion | CCaaS occupancy | ShieldX avg call | CCaaS avg talk |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
No agents present in both ShieldX and a CCaaS Agent Productivity Report yet - ingest an Agent Productivity Report under Data Ingestion to populate this.
Registry
Which agents are on this institution's roster, which vendor each belongs to, and whether they're active or inactive - informational only for now, doesn't gate ingestion or filter any analytics page.
Spreadsheet needs "agent" and "vendor" (both required) and "status" (optional, defaults to active) columns - case-insensitive. Download agent registry sample CSV
Vendor performance
Scope to:
Per agent:
Leaderboard
Loading…
Vendor comparison heatmap
| Loading… |
Vendor scorecard
The same per-vendor numbers as the heatmap above, at full precision - not a different or agent-level breakdown. Click a row for that vendor's own agent-level detail.
| Vendor | Agents | Calls | Compliance | Alerts | RPC rate | Connect rate | PTPs taken | PTP value | Honor rate | Amount collected |
|---|---|---|---|---|---|---|---|---|---|---|
| No vendor-tagged calls yet. | ||||||||||
Number coverage
Which of a vendor's assigned numbers went completely unused across this range, and which CDR numbers institution-wide were never assigned to anyone at all. A range, not one day - a single day's silence can just be normal call-volume variation.
All vendors
One vendor, in detail
Click a row above to jump straight here with a full call log per number, or pick a vendor directly.
Number health
Connect rate by ISO week per number, compared against that same number's own earlier weeks - a real telecom pattern where a heavily-dialed number gets carrier-flagged and its connect rate quietly degrades over time. Not compared against other numbers, since normal volume/answer patterns differ number to number. Trend is in percentage points (pp) - e.g. -55pp means connect rate dropped 55 points (say, from 70% to 15%), not that it fell by 55% of its old value. Click a row for the week-by-week detail.
| Number | Vendor | Total calls | Trend (recent vs. earlier weeks) | Status |
|---|---|---|---|---|
| Loading… | ||||
Registry
Which vendors this institution works with, and whether each is active or suspended - informational only for now, doesn't gate ingestion or filter any analytics page.
Spreadsheet needs "vendor" (required) and "status" (optional, defaults to active) columns - case-insensitive. Download vendor registry sample CSV
Product performance
Every product ever ingested is always listed below - each card's own "Resolved this cycle" uses that product's own configured cycle (Settings → Rules → Cycle configuration) unless overridden below, so two products' cards can legitimately show different windows.
By allocation cycle
Each row is one allocation batch/cycle (e.g. a monthly file) - click one to see the accounts in it. Use this to track this cycle's collection performance over time. Not a "portfolio" in the pre-due/bucket/settlement sense - see "By collection stage" below for that.
| Cycle | Vendor(s) | Accounts | Principal outstanding | Resolved this cycle | Calls | Avg score | Compliance | Talk time |
|---|
By collection stage
Each row is a collection stage/queue the institution's own allocation file tags accounts with (Pre-due, Bucket 1, NPA, Settlement, etc.) - each account counted once, in its most recently reported stage. A different cut from the cycle table above: that one tracks a batch over time, this one shows the current spread across stages.
| Stage | Vendor(s) | Accounts | Principal outstanding | Resolved this cycle | Calls | Avg score | Compliance | Talk time |
|---|
Collections
This cycle
Cycle anchor/length above are an override, for a specific historical window - leave both blank to use whichever product (or the institution default) is scoped below, via Settings → Rules → Cycle configuration.
Scope to:
Rollover reasons
How cleared accounts got there
Collections
By batch
Scope to:
| Batch | Vendor(s) | Uploaded | First contact | New / Re-allocated | Accounts | Contacted | Not yet contacted | Avg hrs to first contact | Min / Max hrs |
|---|---|---|---|---|---|---|---|---|---|
| No allocation batches ingested yet. | |||||||||
Collections
Accounts
Scope to:
Collections
Bucket migration
Compares each account's DPD across its two most recent allocation cycles - needs
dpd mapped on the allocation file type and a new file ingested each cycle. Institutions that don't send DPD yet will just show every account as new (nothing to compare).PTP honor rate by DPD bucket
Loading…
Resolution playbook
Evidence from every dues-cleared payment on file, not a risk score - how much real contact it actually took, per bucket. Not cycle-scoped - all-time.
Loading…
Collections
Stages
All-time, not cycle-scoped - how far each allocated account has ever gotten, not just this cycle. Each stage only counts an account that also resolved the stage before it.
Collections
Connect rate by attempt number
Connect rate at each dial-attempt number, across every account with more than one CDR-logged attempt - real evidence for how many attempts are actually worth making, not a guess. Feeds the max/day and max/cycle caps in Settings → Rules → Contact rules. Where this flattens out is roughly where another attempt stops being worth making.
| Attempt # | Accounts reaching this attempt | Connected | Connect rate |
|---|---|---|---|
| Loading… | |||
Collections
Open promises, ranked by risk
Every currently-open PTP, scored by the historical honor rate of the most specific peer group with enough resolved history (this agent's own past promises, falling back to this vendor's, falling back to "not enough history yet") - a reminder-call worklist, not a wait-and-see one. Riskiest (lowest predicted honor rate) first.
| Ref | Agent | Vendor | Amount | Due | Predicted honor rate | Based on |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Collections
How long it actually takes to get paid
Days between a Promise-to-pay call and the first payment that arrives after it. This counts every eventual payment, even a late one - so it's a wider net than the PTP priority queue's honor rate, which only counts a payment as "honored" if it lands within a short grace window. A call with no payment at all isn't counted here, since there's no lag to measure yet.
| Lag | Calls |
|---|---|
| Loading… | |
Slowest vendors
Vendors ranked by average call-to-payment lag, slowest first.
| Vendor | Calls with a traceable payment | Avg lag |
|---|---|---|
| Loading… | ||
Ingest a file
Every institution ships these reports in a different shape (payment, CDR, allocation, agent activity, ...). If yours isn't listed, use "Create a mapping" below to add it, or ask your ShieldX contact to set one up.
A real Agent Productivity Report is usually one file per day with no date column of its own - set the day this file covers here. Leave blank if the file already has its own date column mapped.
Create a mapping
Build a new institution mapping by uploading a real sample export and mapping its columns - once saved, it appears in "Ingest a file" above like any other, immediately usable.
Sample rows detected
Map columns
Automated landing folder
Files placed in
data/incoming/<mapping-id>/ on the server (one subfolder per institution format above) are picked up here. Each file is only ever ingested once, by content — a re-dropped duplicate is safely skipped, not double-counted.Batch a call-recordings folder
Advanced — engine & language options defaults: FasterWhisper · auto-detect language
On by default — compliance/intent detection is English-phrase-based and unreliable without it.
No batch run yet.
Ingestion history
| Filename | Mapping | Status | Rows mapped | Rows skipped | Processed |
|---|---|---|---|---|---|
| No files processed yet. | |||||
Recently ingested
| Ref | Customer | Amount | Payment date | Institution | Source file | Ingested |
|---|---|---|---|---|---|---|
| No payments ingested yet. | ||||||
| Phone | Connected | Disposition | Duration (s) | Client | Campaign | Ingested |
|---|---|---|---|---|---|---|
| No CDR records ingested yet. | ||||||
From the dialer platform's own Agent Productivity Report export — a second, independent source of agent productivity, not merged into Agent 360's own numbers. Duration columns are shown as h:mm:ss (confirmed against real APR exports); occupancy/RPC/conversion rates are shown exactly as ingested (format still unconfirmed).
| Agent | Date | Total calls | Login | Pause | Wait | Talk | Wrap-up | Occupancy | RPC count | RPC% | Payment responses | Conversion% | Payment amount | Ingested |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No agent KPI records ingested yet. | ||||||||||||||
The ref/account <-> vendor <-> phone bridge — an account's vendor assignment can change over time, so every ingested row is kept; the most recent one for a ref is its current owner. Roll-forward and batch-coverage analytics computed from this data now live under Collections.
| Ref | Vendor | Phone | Agent | Allocated date | Institution | Ingested |
|---|---|---|---|---|---|---|
| No allocation records ingested yet. | ||||||
The vendor's own self-reported daily attempt/billing claim — split by human vs. AI agent, since payouts differ. This is the claim side of Cost & Claims, not yet checked against CDR.
| Vendor | Date | Agent type | Attempts | Connected | Connected min. | Ref | Ingested |
|---|---|---|---|---|---|---|---|
| No vendor call-trail records ingested yet. | |||||||
The vendor's own periodic invoice — a distinct file from the call-trail claim above, used only to compare against the computed cost-to-collect estimate under Cost & Claims. A blank agent type means this row is the vendor's whole-period total, not split by human/AI.
| Vendor | Period start | Period end | Agent type | Invoiced amount | Invoice ref | Ingested |
|---|---|---|---|---|---|---|
| No vendor invoice records ingested yet. | ||||||
Needs a rate configured for this vendor/agent-type in Settings → Rules → Vendor billing rates - an unrated agent-type is excluded from the cost total, not silently counted as free.
Call date:
By vendor & day
One row per vendor + call date + agent-type. Click a row to see the individual claims behind it ⓘ
Status meanings: match = claim ≈ CDR. phantom = vendor claimed a call CDR has no record of at all. over_claimed = CDR shows some connection, but less than claimed. under_claimed = CDR shows more than claimed (rare — the vendor under-reported their own work). unbridged = no phone/ref to check against CDR at all.
| Vendor | Call date | Agent type | Attempts claimed | Attempts (CDR) | Attempts Δ | Minutes claimed | Minutes (CDR) | Minutes Δ | Flags |
|---|---|---|---|---|---|---|---|---|---|
| No vendor call-trail claims on file yet. | |||||||||
Claim detail
The individual claims (one row per ref/account) behind whichever vendor-day you pick — what the table above rolls up into one line.
| Ref | Phone | Agent type | ShieldX ID | Attempts claimed | Attempts (CDR) | Attempts Δ | Attempt status | Minutes claimed | Minutes (CDR) | Minutes Δ | Minutes status | Billable |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Select a vendor and date above, or click a row in the table above, to see individual claims. | ||||||||||||
Account history
Every call, payment, CDR attempt, allocation change and vendor claim tagged with one ShieldX ID, merged chronologically — the cross-source view a bare reference number alone can't give you. Look up by ShieldX ID directly, by your own institution's reference number / phone, or leave those blank and just pick a date window below to browse every call across every account in that range.
Search above, or jump here from a ShieldX ID in Cost & Claims or a call's drawer.
My account
Change your own login password - available to every account, no admin needed.
Email - needed for "forgot password" recovery.
Two-factor authentication - required for admin accounts.
Not set up
Lost your authenticator? Reset it with your password, then set up a new one. Your current session stays signed in.
Users & access
Institutions
The canonical list every institution-scoped form below picks from - registering one here is what prevents "Northgate" and "northgate" from silently becoming two different institutions.
API keys
No API keys issued yet. Generate one to call the REST API from an external system.
Over-contact rules
Per-institution call-frequency limits (day cap, cycle cap, min gap) ⓘ
Cycle = anchor date + length in days, not a calendar month. "Default" covers institutions with no row of their own.
Calling-window rules
Per-institution permitted calling hours (RBI Fair Practices) ⓘ
Not TRAI's DND registry (telemarketing only). "Default" covers institutions with no row of their own.
Occupancy benchmark
Expected daily login hours per institution - used to compare Vendor Performance's login-hours figures against a real target, not just against each other ⓘ
"Default" covers institutions with no row of their own. Baked-in fallback is 9 hours if nothing is configured at all.
Cycle configuration
Per-product billing/collections cycle (anchor date + length) - Roll-forward analysis and Products both use this instead of one guessed window for every product ⓘ
"Default" (blank product) covers any product at that institution with no row of its own. Baked-in fallback is 2020-01-01, 30 days, if nothing is configured at all.
Coaching playbook
Suggested coaching action per violation type - ships with sensible defaults already ⓘ
Every violation type has a default action already - no setup needed unless you want a custom link or wording.
Vendor billing rates
What each vendor is paid for CDR-verified work, used by "Cost to collect" ⓘ
Most specific rate wins: vendor+product+stage beats vendor-only beats "Any vendor". Three models available.
CDR billing policy
What actually counts as billable CDR activity - Cost to collect and Vendor claims' "Billable" figure both use this ⓘ
"Default" (blank vendor) covers any vendor at that institution with no row of its own. Baked-in fallback: connected-only, no duration threshold, no per-account-per-day dedup.
Compliance checklist rules
Which behavioral-checklist items are required, per institution and agent-type ⓘ
Purpose disclosure + identity check, required by default. Lower an item's weight instead of un-requiring it.
Integrations
Vexyl-STT
Remote IndicConformer server · optional, external
Sarvam AI
Commercial ASR API · used for intent classification and compliance-risk flagging
Webhook notifications
POST compliance alerts to an external URL
Sarvam AI spend
Total (all time)
₹0.00
Today
₹0.00
Estimated locally from Sarvam's published per-second (STT) and per-token (chat) rates — not pulled from Sarvam's own billing, so treat as directional.
Data & retention
Transcript & call records
data/calls.json
Audio recordings
data/audio/
Audit log
data/audit.db · the log below only shows the most recent entries loaded
Auto-purge after
Deletes each call record + its audio file once older than this many days. Runs once a day. Leave blank to keep everything indefinitely - this is a real compliance decision, not something to guess at.
days
Decisioning engine export
Exports this institution's calls/payments as customer_id/contact_date/call_result/emi_number - the exact shape shieldx-decision-engine's own call_history table already expects, so real call outcomes become an input to that engine's scoring instead of staying only in this app's own dashboards. Only Promise to pay/Wrong number/Ring no reply calls and dues-cleared payments are included - everything else has no honest equivalent on that side and is left out rather than guessed at.
Treatment signals export
A different export for a different purpose: per-call escalation mentions (bureau/legal/Section 138/Lok Adalat/SARFAESI), conversational-approach signals (firm/factual/urgency/negotiation-led), raw intent - including Financial hardship/Dispute raised, which call_history.csv above leaves out entirely - right-party-contact confirmation, whole-call sentiment trajectory (blank unless SHIELDX_SENTIMENT_LLM is enabled), and objection/dispute/hardship sub-typing plus promise strength (firm vs. hedged commitment language). Every call is included, even ones with no signal hits, so a consumer joining by customer_id + date has the full window, not just the "interesting" rows.
Audit log
Every entry is kept indefinitely - nothing is ever deleted. What you see below is just how many of the most recent ones are loaded at once.
Single-file test bench - speech-to-text, translation, diarization & compliance analysis on one call at a time. For bulk / recurring recording batches, use Data Ingestion instead.
Analyze a call
FasterWhisper gives the best transcript quality at usable speed; language is auto-detected by MMS-LID (accurate for Indian languages). MMS is free/all-22 but lower quality on phone audio. IndicWhisper is most accurate but slow on CPU. Deepgram covers Hindi/Tamil/Telugu/Marathi/Bengali/Kannada/Gujarati/Urdu/English only (no Malayalam, Punjabi, Odia) and has no translation endpoint.
On by default — compliance/intent detection is English-phrase-based and far less reliable without it. Uncheck only if you know this call is already English.
↑
Drop file(s) or click to browse
mp3 · wav · m4a · flac · ogg · opus · amr · multi-select supported
mp3 · wav · m4a · flac · ogg · opus · amr · multi-select supported
For bulk / recurring recording batches, use Data Ingestion — same landing-folder pattern as payment/CDR/agent KPI files.
Result
No analysis yet. Upload a file or point to a folder.