Choosing a cloud dialer for Mumbai NBFC collections: dial modes, TRAI maths, and RBI compliance
A technical evaluation guide for Mumbai NBFC collections heads picking a cloud dialer — dial modes by bucket, TRAI abandon-rate maths, DLT for Marathi SMS, and RBI recording rules.
Collections is not sales, and a dialer configured for outbound sales will silently haemorrhage recovery numbers on an NBFC floor. If you run a 40-100 seat recovery operation out of BKC, Lower Parel, or Andheri East, the evaluation criteria are narrower than the generic "cloud dialer" comparison articles suggest. This post walks through what actually matters — dial mode selection by bucket age, TRAI's 3% abandon-rate ceiling, DLT registration for Marathi and Hindi SMS, RBI's outsourcing guidelines, and where the current shortlist (Ozonetel, Exotel, MyOperator, Ameyo, Servetel, dialque) actually differs.
Why collections dialing is a different problem
An outbound sales floor tolerates a low right-party contact (RPC) rate because the pool of numbers is large. Collections inverts this. Your dial list is finite — the delinquent book — and every unproductive dial burns fixed cost plus a portion of the debtor's willingness to answer future calls. Mumbai NBFCs typically run four buckets: 0-30 DPD (soft reminder), 30-60 (firm), 60-90 (pre-legal), 90+ (legal / write-off). Each bucket has a different optimal contact strategy, regulatory risk profile, and agent skill requirement.
A dialer that treats these as one queue with one mode is the largest hidden cost in most recovery operations. If you inherited a Genesys or Avaya deployment from the parent bank you already know this. If you are moving from a shared BPO to an in-house floor in BKC, you will discover it in the first 60 days.
The second Mumbai factor is language. Your debtor base is a mix of Marathi, Hindi, and Gujarati speakers, with a long tail of Tamil and Bengali from migrant borrowers. Automated SMS reminders and IVR prompts need to be registered in each language on the DLT platform, and the templates must survive a TRAI audit years later.
Matching dial mode to bucket age
Six dial modes exist across the modern Indian stack: manual, click-to-call, preview, progressive, predictive, and IVR-first. Not every vendor supports all six — Exotel and MyOperator emphasise click-to-call and progressive; Ameyo, Ozonetel, and dialque expose the full range. The mapping most collections heads settle on:
| Bucket | RPC | Dial mode | Rationale | |---|---|---|---| | 0-30 DPD | 55-70% | IVR-first, escalate to progressive | Automated reminder handles 40-50% | | 30-60 DPD | 40-55% | Predictive (strict abandon cap) | Occupancy matters; RPC still healthy | | 60-90 DPD | 25-40% | Progressive | Predictive over-dials this bucket | | 90+ / pre-legal | 15-25% | Preview or manual | Agent needs 30-60s of notes; legal exposure real | | Skip-trace | <15% | Manual click-to-call | Supervisor-approved script per call |
The mistake we see most often is running predictive across all buckets to maximise occupancy. On a 90+ book with 20% RPC, predictive dials four numbers per agent slot, three go unanswered, and one connects to a debtor who hears two seconds of silence before an agent scrambles on. That gap is where the TRAI 3% cap starts biting. It is also where recovery calls are lost — a debtor ready to promise-to-pay hangs up.
dialque supports mode-per-campaign, so one floor can run predictive on Campaign_30-60 and preview on Campaign_90plus with the same agent pool. Ozonetel and Ameyo also handle this; Exotel and MyOperator require you to compose it from click-to-call APIs, which pushes routing logic into your LMS.
The TRAI 3% abandon-rate maths
TRAI's Telecom Commercial Communications Customer Preference Regulation caps predictive-dialer abandon rate at 3% of "calls answered by a live person but not connected to an agent within 5 seconds."
``` Abandon rate = Live-answered calls dropped before agent connect / Total live-answered calls ```
The pacing algorithm estimates numbers to dial per available agent. Set the ratio too low, agents idle. Too high, calls answer before an agent is free, the dialer drops them, abandon ticks up. On a 40-seat floor with 20-second AHT and 45% connect rate, the theoretical over-dial ratio is around 1.4-1.6. Push it past 1.8 and you cross 3% within hours.
Two operational implications:
- Measure abandon per campaign, per hour, per carrier. A blended 2.8% average can hide a 6% spike between 11:00 and 13:00 when Marathi debtors pick up faster than the model predicted. TRAI audits samples, not averages.
- Cap the dialer, do not trust "auto-optimisers." Every predictive dialer claims TRAI compliance. Few enforce a hard ceiling by default. Ask the vendor to demonstrate the flag that pauses the campaign if abandon crosses 3% in a rolling 60-minute window. dialque calls this a rolling abandon guard; Ameyo has a similar throttle. "Our algorithm handles it" is not an answer.
DLT template registration for Marathi and Hindi SMS
Every commercial SMS to an Indian mobile must ride on a DLT-registered template with a Header tied to your Principal Entity. For a Mumbai NBFC:
- Register your entity on one DLT operator (Jio, Vi, Airtel, BSNL — they share the same blockchain; one registration is enough).
- Register each Header as Transactional, Service-Implicit, Service-Explicit, or Promotional.
- Register every template variant. "Dear {#var#}, your EMI of Rs. {#var#} is overdue" is one template. The Marathi translation is a separate template. The Hindi Devanagari version is a third. Approval typically takes 2-5 working days per template.
Collections SMS almost always falls under Service-Implicit. Do not use Promotional headers for recovery — the 09:00-21:00 window still applies, but promotional traffic is throttled at the operator level, so your reminder lands hours late.
Common DLT rejection reasons: placeholders in the wrong format (must be `{#var#}` exactly), URLs pointing to non-whitelisted domains, and mixing English and Devanagari in one template. dialque enforces DLT template selection at send time and blocks free-form SMS — annoying during onboarding, load-bearing during an audit. Exotel's enforcement is comparable; Twilio's India routing is technically DLT-compliant but template registration sits outside their console.
RBI outsourcing guidelines and the dialer
The RBI Master Direction on Outsourcing of Financial Services (updated 2023) and the Fair Practices Code for NBFCs together impose requirements that land directly on the dialer:
- Recording retention: Recovery calls must be retained for the loan tenure plus a dispute window. Legal teams typically settle on 5-7 years for secured products, 3-5 for unsecured. Your dialer's default 90-day retention is a compliance gap on day one.
- Access control and audit trail: Only authorised personnel may pull recordings. Every access must be logged. A shared S3 bucket with all-agent read access will fail an internal audit.
- Calling hours: 09:00-21:00 local time. The dialer should refuse to originate outside this window, not merely warn.
- DNC scrubbing: NDNC and internal DND lists checked before every dial, not once per day at list import.
- Agency oversight: If you outsource any bucket, the tenant model must isolate the agency's floor from your in-house floor, with independent recording access.
dialque's per-tenant campaign isolation, configurable retention, S3 monthly-folder layout, and presigned-URL access map cleanly to these. Ozonetel and Ameyo also support long retention; Exotel and MyOperator require you to sync recordings out to your own S3 for anything beyond 90 days.
The 09:00-21:00 window sounds trivial until a night-shift supervisor tests a dial-out at 21:15 and triggers an incident. The dialer should refuse; do not rely on training.
Data residency and deployment model
For a regulated NBFC, data residency is not optional. Recording storage, PII, and CRM sync all sit inside Indian jurisdiction. Practical options:
- AWS Mumbai (ap-south-1) SaaS: Most Indian dialers default here. Confirm the recording bucket is `ap-south-1` and not replicated to Singapore or Ireland for "backup."
- Self-host in your VPC: For 40-100 seats the ROI is marginal. It becomes real at 200+ seats or when your CISO mandates it. dialque ships a self-hostable Asterisk build for customer VPCs; Ameyo does the same. Exotel, MyOperator, and Ozonetel CloudAgent do not.
- On-premise: Rare in 2026 but still requested by co-operative banks and older NBFCs.
For a BKC or Lower Parel deployment on AWS Mumbai SaaS, expect 40-80 ms round-trip from agent desktop to media edge — acceptable for WebRTC voice. If your floor is in Navi Mumbai or Thane on consumer broadband, budget for a 100 Mbps symmetric business line — voice is small, but 60 concurrent WebRTC streams plus screen-shares plus CRM traffic saturate a residential-tier link.
Carrier strategy and BYOC
Do not lock into a single carrier. Mumbai numbering pools rotate reputation constantly — a DID with 40% pickup last month may be spam-flagged this month after the TRAI caller-name display rollout. A defensible stack:
- Primary trunk on Tata Communications or Airtel for domestic mobile termination.
- Secondary on Vi Business or a SIP wholesaler (Plivo, Exotel, Knowlarity) for failover.
- A separate outbound CLI pool that rotates every 2-3 weeks to spread attempt density.
BYOC means you negotiate per-minute rates directly. For a 40-seat floor dialing 15,000-25,000 calls a day, this is the difference between ₹0.35 and ₹0.55 per minute at scale. dialque, Ameyo, and Ozonetel support BYOC across major Indian carriers. Exotel and MyOperator sell voice bundled and do not let you plug in a Tata trunk directly.
Cost model for a 40-100 seat floor
At list price, excluding GST and carrier minutes, a 60-seat Mumbai floor looks approximately like this:
| Vendor | Per-seat/month | 60-seat monthly | Notes | |---|---|---|---| | dialque Growth | ₹2,000 | ₹1,20,000 | AI summary, sentiment, IVR editor, BYOC | | dialque Enterprise | ₹2,500 | ₹1,50,000 | Adds AI voice agent, self-host | | Ameyo | Custom | ₹1,20,000-₹2,00,000 | Quote-based; strong on on-prem | | Ozonetel | Custom | ₹90,000-₹1,50,000 | CloudAgent SaaS | | Exotel | Custom | ₹60,000-₹1,20,000 | Cheaper but bundled voice | | MyOperator | Custom | ₹50,000-₹90,000 | Lighter feature set for collections |
Carrier minutes are separate and typically add ₹40,000-₹80,000 monthly at 60 seats depending on connect rate and AHT. AI transcription and summary — if enabled on every call — adds ₹0.30-₹0.80 per call-minute depending on model (Anthropic, OpenAI, Sarvam). Sarvam is materially cheaper for Hindi and Marathi and is the sensible default; dialque exposes model selection per campaign, so you can route 90+ bucket calls to Claude and 0-30 to Sarvam.
Running the evaluation
If you take one thing from this post: run a two-week paid pilot on your actual delinquent book, not a demo on the vendor's sandbox. Pilot criteria:
- Import a real 5,000-account slice across three buckets.
- Configure a distinct campaign per bucket with the dial mode from the table above.
- Measure connect rate, RPC, abandon per hour, promise-to-pay conversion, and agent occupancy — separately per bucket.
- Audit one day's recordings for retention, access log, and DLT-template correctness.
- Force a carrier failover mid-day and confirm the dialer keeps running.
Any vendor on this list will demo well. Only two or three will survive a two-week pilot on a real recovery book. The evaluation is worth the overhead — a mis-configured dialer costs more in lost recoveries in a single quarter than the two-year contract value of any shortlisted platform.