TL;DR
Domain-specific intents for collections workflows are NLU labels purpose-built for repayment conversations. Unlike generic customer-service intents, they classify precise borrower signals (promise-to-pay, hardship, disputes, wrong-party contact, opt-out requests) and map each one to a governed recovery action. This guide covers what collections intents are, provides a practical taxonomy of 25+ intent types, walks through a ten-step creation process, and explains how to test and govern them in regulated Indian BFSI environments.
What Are Domain-Specific Intents for Collections Workflows?
A domain-specific intent for collections is a collections-ready NLU label that turns borrower language into a governed recovery action. It captures not only what the borrower says, but what the lender should do next: collect a payment, log a promise, schedule a follow-up, suppress further calls, escalate a dispute, switch language, or hand off to a human.
Generic bots use broad labels like make_payment, ask_question, or talk_to_agent. That granularity is useless in collections. A borrower saying “I already paid” needs payment verification. A borrower saying “I’ll pay Friday” needs PTP logging, a payment link, and a reminder. A borrower saying “wrong number” needs the contact record flagged and future calls suppressed. These are different operational paths, and they need different intents.
Understanding how to create domain-specific intents for collections workflows is foundational for any voice AI or chatbot deployment in debt recovery. Without the right intent design, the system understands words but fails to trigger the right action. A promise-to-pay intent without a PTP date, amount, and follow-up event is just a transcript annotation.
Explore building an AI-assisted collections pilot →
Why Collections Needs Domain-Specific Intents
Generic customer-service intents break in collections for three reasons.
Collections conversations are action-heavy. Every borrower response should trigger a specific workflow event: a PTP entry, a payment link, a dispute ticket, a callback schedule, a suppression rule, or an escalation. If the intent is too broad (like a single payment_issue label covering twelve different borrower situations), the system cannot choose the right action.
Collections conversations are regulated. RBI guidelines prohibit intimidation, harassment, calls before 8 a.m. or after 7 p.m., privacy intrusion on family members, and threatening or anonymous calls during overdue loan recovery. A misclassified intent can create compliance risk. If the system treats a wrong-party contact as a payment refusal, it may continue calling a number it should have flagged.
Collections conversations happen over voice. Voice adds ASR errors, background noise, accents, interruptions, and code-switching. Hamming AI reports that voice agents have 3 to 10x higher intent error rates than text because ASR errors cascade into NLU errors. A collections model can pass clean-text tests and still fail on live calls.
One developer on Reddit described building a payment-reminder voice agent for collections as “brutal” because borrowers are already on edge about money and have almost zero tolerance for broken-feeling automation. That observation is worth internalizing: in collections, a wrong classification is not just poor CX. It can create borrower distress, repeated unnecessary calls, formal complaints, or regulatory action.
Practitioners on LinkedIn have started arguing that voice AI alone fails collections when it is not connected to payment plans, PTP tracking, dispute routing, and compliance controls. The shift is from “voice bot” to “workflow infrastructure.” Domain-specific intents for collections workflows are the mechanism that makes that shift possible.
For a deeper look at how NLU works in financial contexts, see this guide on domain-specific financial NLU.
Intent vs Utterance vs Entity vs Disposition
Before creating collections-specific intents, it helps to clarify the related terms that often get confused.
| Term | What it means | Collections example |
|---|---|---|
| Utterance | What the borrower actually says | “Kal salary aayegi, Friday ko ₹5,000 de dunga.” |
| Intent | The normalized meaning the system assigns | promise_to_pay |
| Entity | A specific data value inside the utterance | amount = ₹5,000, date = Friday |
| Slot | The stored field the workflow needs to act | ptp_amount, ptp_date |
| Disposition | The final call outcome used in reporting | PTP captured |
| Workflow action | What the system does next | Send payment link, schedule reminder, suppress duplicate calls |
One call may contain several intents but only one or two final dispositions. A borrower might disclose hardship, then offer a partial payment, then ask for a callback. That is three intents, but the disposition might simply read “partial PTP captured.”
Rasa’s documentation describes NLU training data as utterances grouped by intent, with optional entity annotations, synonyms, regexes, and lookup tables. That structure applies directly to collections intent design, but the collections layer adds something Rasa’s generic framework does not: every intent must connect to a policy-approved downstream action.
An intent should not automatically equal an action. The system should check policy and context first. A detected settlement_request requires checking the DPD bucket, outstanding amount, eligibility rules, and prior settlement offers before the system can respond. Microsoft’s Customer Intent Agent documentation supports this separation by allowing intents to have instructions and escalation boundaries mapped to specific business rules.
A Practical Taxonomy of Collections Intents
This is the core information most existing content misses. Below are the intent categories that collections workflows actually need, with example utterances and the downstream actions each should trigger. This taxonomy is the main output of any effort to create domain-specific intents for collections workflows.
Payment Readiness Intents
These capture whether the borrower is willing and able to pay.
| Intent | Example utterances | Key slots | Workflow action |
|---|---|---|---|
pay_now |
“Send the link.” / “Abhi pay kar deta hoon.” | amount, payment channel | Send secure payment link; confirm route |
promise_to_pay |
“Friday ko pay karunga.” / “Salary ke baad de dunga.” | PTP date, PTP amount | Log PTP; schedule reminder; suppress repeat calls until PTP date |
partial_payment_offer |
“₹2,000 abhi, baaki next week.” | partial amount, remaining amount, next date | Accept if policy allows; log partial PTP |
payment_plan_request |
“EMI split ho sakta hai?” | requested amount, frequency | Check eligibility; route if approval needed |
settlement_request |
“Final settlement kitna hoga?” | settlement amount, DPD bucket | Hand off or run approved settlement workflow |
Collections KPIs depend directly on these intents. Industry benchmarks define PTP rate as promises to pay divided by right-party contacts, and kept PTP as fulfilled promises divided by PTPs. If the system cannot reliably capture promise_to_pay with accurate date and amount slots, these metrics become unreliable.
A LinkedIn practitioner checklist for collections agencies made a strong point: voice AI should not just increase call volume, it should decide when not to call. Accounts with a recent PTP, active payment plan, unresolved dispute, or cease-contact request should be suppressed. A well-captured promise_to_pay intent is what makes that suppression possible. For teams building automated payment reminders, these payment readiness intents are the starting point.
Hardship and Constraint Intents
These distinguish willingness from ability. They are among the most important intents to get right in any domain-specific collections intent design.
| Intent | Example utterances | Key slots | Workflow action |
|---|---|---|---|
temporary_cashflow_issue |
“Salary nahi aayi.” / “Business payment pending hai.” | reason, expected cash date | Offer callback or PTP path; avoid aggressive repetition |
job_loss_or_income_loss |
“Job chali gayi.” | hardship type, duration | Escalate to hardship or human team |
medical_or_family_emergency |
“Hospital expense chal raha hai.” | hardship type, callback preference | Escalate carefully; do not push generic script |
refusal_to_pay |
“Main nahi dunga.” | reason if given | Follow policy; route to next-stage collections |
Practitioners on LinkedIn have repeatedly stressed that “I cannot pay” can mean a dozen different things: temporary cash crunch, strategic delay, misunderstanding, job loss, medical expense, or simple disorganization. The next action depends entirely on the reason. Lumping all of these into one cannot_pay intent is an operating model failure, not just an NLU gap.
A Haptik collections demo showed a voice AI handling an overdue personal-loan scenario by discussing partial payment, communicating remaining balance and interest, capturing a future PTP date, and sending a WhatsApp payment link. User comments praised that it balanced compliance and dignity without threatening or guilt-tripping. That balance is only possible when the system correctly distinguishes hardship_disclosure from refusal_to_pay and responds with the right tone and action for each. For more on compliant language during AI debt collection calls, see the linked guide.
Dispute and Exception Intents
These are high-risk. They should usually trigger human review or a governed dispute workflow, not an automated payment push.
| Intent | Example utterances | Key slots | Workflow action |
|---|---|---|---|
already_paid |
“Maine kal UPI se payment kar diya.” | payment date, channel, reference ID | Verify in payment system; pause demand language |
amount_dispute |
“Amount galat hai.” | disputed amount, expected amount | Open dispute ticket; explain only from approved data |
late_fee_dispute |
“Late fee kyu laga?” | fee type, due date | Explain policy or escalate |
loan_not_mine_or_fraud |
“Maine loan nahi liya.” | identity confidence, fraud reason | Stop standard collection; escalate to fraud or dispute team |
service_complaint |
“Aap log roz call karte ho.” | complaint type, severity | Create complaint ticket; route to human if serious |
Do not merge disputes into cannot_pay. A dispute is not a repayment objection. It is a risk and compliance event. Treating already_paid as an objection and continuing payment pressure is exactly the kind of mistake that generates complaints and regulatory attention.
Identity and Contactability Intents
| Intent | Example utterances | Key slots | Workflow action |
|---|---|---|---|
right_party_confirmed |
“Yes, speaking.” | verification method | Continue workflow |
wrong_party_contact |
“Wrong number.” / “Yeh mera number nahi hai.” | number status | Stop or restrict contact; update record |
borrower_unavailable |
“Woh ghar pe nahi hain.” | callback time if allowed | Avoid disclosing debt details; follow policy |
deceased_or_sensitive_status |
“Woh guzar gaye.” | status, verification needed | Immediate human escalation |
callback_request |
“Shaam ko call karna.” | date, time, channel | Schedule callback; respect preference |
Wrong-party contact and do-not-contact are not edge cases. They are compliance-critical intents. RBI guidance explicitly prohibits intrusion on the privacy of debtors’ family members, referees, and friends. A system that cannot detect wrong_party_contact reliably risks violating that rule at scale.
Communication Preference Intents
| Intent | Example utterances | Key slots | Workflow action |
|---|---|---|---|
language_switch |
“Hindi mein bolo.” / “Kannada?” | language, dialect | Switch voice or language if supported |
channel_switch_whatsapp |
“WhatsApp pe bhejo.” | WhatsApp number, consent | Send link or message if consented |
do_not_contact |
“Call mat karo.” | scope, channel, reason | Record preference; route per legal rules |
human_agent_request |
“Agent se baat karni hai.” | issue reason, urgency | Transfer or schedule call |
Fallback and Safety Intents
| Intent | Example utterances | Workflow action |
|---|---|---|
out_of_scope |
“Weather kya hai?” | Redirect to purpose of call |
low_confidence |
Unclear or ASR-garbled speech | Confirm; do not execute critical action |
silence_or_noise |
Background noise only | Retry once; then end or escalate |
abusive_or_high_anger |
Shouting, verbal threats | De-escalate; human escalation if needed |
self_harm_or_extreme_distress |
Severe distress signals | Immediate human or safety escalation |
Hamming specifically warns against executing low-confidence intents in critical domains like banking. The recommendation: route mid-confidence to confirmation (“Just to confirm, you want to pay on Friday?”) and route low-confidence to fallback or human handoff.
How to Create Domain-Specific Intents for Collections Workflows: Ten Steps
Knowing what intents exist is only half the problem. The harder part is building them well. Here is a step-by-step process for creating domain-specific intents for collections workflows that actually work in production.
Step 1: Start With One Narrow Collections Journey
Do not begin with “all collections.” Pick one measurable journey: pre-due EMI reminders, DPD 1 to 7 payment follow-ups, broken PTP callbacks, or dispute triage. FinoLabs recommends that lenders start with narrow, measurable journeys instead of trying to automate every repayment scenario at once.
For an early DPD reminder flow, 12 to 20 well-defined intents is better than 80 overlapping labels. Expand later. A confused model cannot be fixed by adding more intents.
Step 2: Gather Real Borrower Language
Source data should include historical call transcripts, call recordings, human-agent notes, disposition codes, payment outcomes, WhatsApp and SMS replies, broken PTP records, dispute tickets, and complaint reasons.
Scripts show what the lender says. Intent data must show what borrowers actually say. Microsoft’s documentation describes using historical interactions to discover intents and create an intent library. That approach applies directly here, but collections language is messier, more emotional, and more multilingual than typical customer-service data.
Step 3: Cluster Conversations Into Canonical Labels
Use ops, compliance, and NLU teams together. For every intent, define the intent name, its plain-language meaning, in-scope utterances, out-of-scope utterances, required entities and slots, allowed system actions, prohibited system actions, escalation rules, and disposition mapping.
The distinction between in-scope and out-of-scope is critical. “I’ll pay tomorrow” is a clear promise_to_pay. But “I’ll try” is not. “Maybe next month” is not. These need a separate needs_clarification label because the system should not log a PTP when the borrower has not actually committed.
Step 4: Build an Intent Hierarchy
A flat list becomes impossible to govern as the system grows. Use parent-child grouping:
Collections
├── Identity and contactability
│ ├── right_party_confirmed
│ ├── wrong_party_contact
│ ├── borrower_unavailable
│ └── deceased_or_sensitive_status
├── Payment readiness
│ ├── pay_now
│ ├── promise_to_pay
│ ├── partial_payment_offer
│ └── settlement_request
├── Hardship and constraint
│ ├── temporary_cashflow_issue
│ ├── income_loss
│ └── medical_emergency
├── Dispute and complaint
│ ├── already_paid
│ ├── amount_dispute
│ └── fraud_or_not_mine
├── Communication preference
│ ├── language_switch
│ ├── callback_request
│ └── do_not_contact
└── Fallback and safety
├── low_confidence
├── out_of_scope
└── high_distress
This hierarchy helps in two ways. It organizes governance (different teams own different branches), and it reduces NLU confusion within groups.
Step 5: Define Entities, Slots, and Normalization Rules
Collections workflows depend on slot accuracy. The system must extract the right value, not just the right intent. Critical slots include PTP date, PTP amount, payment channel, hardship type, dispute reason, callback time, preferred language, consent status, and wrong-party indicator.
For Indian collections, normalization is especially important. The amount “₹5,000” can appear as “5k,” “paanch hazaar,” “five thousand,” or “5000 rupees.” The date “tomorrow” can appear as “kal,” “agle din,” or “next day.” Without synonyms, regexes, and lookup tables, slot extraction breaks on real borrower speech.
These extracted entities need to flow into the CRM or loan management system. For more on that integration, see this guide on voice AI and CRM integration.
Step 6: Add Multilingual and Code-Switched Variants
For India, do not create only English training examples. Borrowers code-switch constantly. A single utterance might start in English and end in Hindi. Research on Indian ASR shows that clean, scripted benchmarks are inadequate. The Voice of India benchmark, built from unscripted telephonic conversations across 15 Indian languages and 139 regional clusters, explicitly notes that existing Indic ASR benchmarks rely on clean speech that does not reflect production conditions.
Reddit builders working on Indian voice AI confirm this gap. One thread described testing angry Hinglish callers under G.711 compression, packet loss, and call-center noise, noting that mixed-language sentences trip up many speech-to-text models. In Indian collections, code-switching is production data, not test data. For a deeper look, see this code-switching voice AI guide.
Step 7: Map Every Intent to Policy-Approved Actions
This is where a domain-specific intent becomes valuable. Every intent needs two lists: what the system should do, and what it should not do.
| Intent | System should do | System should not do |
|---|---|---|
pay_now |
Send approved payment link; confirm channel; log event | Ask for sensitive card details directly |
promise_to_pay |
Confirm amount and date; log PTP; schedule reminder | Keep calling before PTP date without reason |
already_paid |
Ask for reference ID; check payment system; pause demand | Continue demanding without verification |
wrong_party_contact |
Mark number; avoid debt disclosure | Reveal loan details to third party |
hardship_disclosure |
Empathize; capture reason; escalate if required | Push generic urgency script |
do_not_contact |
Record preference; route per legal rules | Ignore the request |
If the intent is not connected to a workflow, the system has only understood the borrower. It has not helped collections.
Learn how to integrate voice AI with collections systems →
Step 8: Design Low-Confidence Handling Before Launch
Collections is a critical domain. The model should not guess.
| Confidence level | Action |
|---|---|
| High | Execute intent if all required slots are present and policy allows |
| Medium | Confirm with borrower: “Just to confirm, you want to pay on Friday?” |
| Low | Offer options: “Are you asking to pay now, set a date, or speak to an agent?” |
| Very low | Fall back to human handoff |
Step 9: Test With ASR Output, Not Clean Text
Text NLU tests are necessary but not sufficient. Voice adds ASR errors, background noise, accents, interruptions, latency, and partial utterances. Hamming recommends testing at scale with 100+ utterances per intent and 10,000+ total utterances to catch rare but critical confusion patterns.
Practitioners on Reddit repeatedly mention that production voice agents fail when users interrupt, ramble, change intent mid-sentence, or combine multiple intents in one utterance. Collections calls often contain multiple signals in one breath: anger plus hardship plus partial payment plus callback request. Build test cases that reflect that reality, not clean single-intent sentences.
Step 10: Monitor Outcomes and Iterate
Do not stop at classification accuracy. The real test is whether the intent system improves recovery outcomes. FinoLabs recommends tying iteration to promise-to-pay quality and actual repayment follow-through, not raw talk time or connection rate.
A Reusable Intent Template
For every intent in the collections taxonomy, fill out this template:
Intent name:
Business definition:
In-scope utterances:
Out-of-scope utterances:
Required entities:
Optional entities:
Allowed system actions:
Prohibited system actions:
Escalation trigger:
Disposition mapping:
Success metric:
Compliance notes:
Languages and variants:
Owner:
Version:
This template forces the team to think through every layer before writing training data. Without it, intent design drifts into a phrase-matching exercise that misses the operational and compliance requirements that make collections intent design different from generic NLU work.
Common Mistakes in Collections Intent Design
Creating one giant payment_issue intent. Twelve different borrower situations cannot share one label.
Treating hardship, dispute, and refusal as the same thing. A dispute is a compliance event. Hardship needs empathy and escalation. Refusal needs a different follow-up path. Merging them guarantees wrong actions.
Using clean English training data for Indian voice calls. If borrowers speak Hinglish, Marathi-English, or Tamil-English, the training data must include those patterns. For more on compliant and effective collections language in India, see the linked guide.
Ignoring wrong-party and do-not-contact signals. These are not edge cases. They are regulatory requirements.
Letting low-confidence intents trigger payment or legal language. In banking and collections, executing uncertain intents creates real financial and regulatory risk.
Measuring talk time instead of PTP quality. The right metric is whether promises convert to actual repayments, not how long the call lasted.
Not connecting intents to CMS, CRM, or LMS actions. An intent that produces a conversational reply but does not update the collections system has no operating value.
Calling accounts with active PTPs, disputes, or cease-contact requests. Good systems decide who should not be called, not just who to call next.
How to Measure Intent Performance Against Business Outcomes
Measuring domain-specific intents for collections workflows requires two scorecards.
Intent Quality Scorecard
Track intent classification accuracy, intent confusion rate (which intents get mixed up), first-turn intent accuracy, out-of-scope detection rate, slot filling accuracy, fallback rate, and human escalation precision.
Collections Outcome Scorecard
Track right-party contact rate, PTP capture rate, kept PTP rate, same-day payment rate, partial payment rate, recovery rate, broken PTP rate, dispute rate, wrong-party suppression accuracy, complaint rate, and cost per recovered account.
A LinkedIn practitioner argued that many contact centers lack “intent economics,” meaning they do not measure cost per intent. After launch, track cost and outcome by intent. A balance_clarification should not cost the same to handle as a fraud_dispute or hardship_escalation. That insight changes how teams allocate NLU improvement effort and automation budget.
India-Specific Considerations
Creating domain-specific intents for collections workflows in India requires attention to three additional dimensions.
Multilingual and Vernacular Support
India’s borrower base speaks dozens of languages and routinely code-switches within a single sentence. A collections intent library for India should treat code-switching as normal input, not an exception. Training data should include examples in Hindi, Hinglish, Tamil-English, Telugu-English, Kannada-English, Marathi-English, Bengali-English, regional expressions, formal and informal registers, and low-literacy phrasing.
RBI Recovery-Agent Conduct Rules
RBI guidelines make regulated entities responsible for their recovery agents (including AI agents) and prohibit intimidation, harassment, privacy intrusion, threatening or anonymous calls, persistent calling, and calls before 8 a.m. or after 7 p.m. Intents like wrong_party_contact, do_not_contact, service_complaint, and deceased_or_sensitive_status are not optional. They are required for regulatory compliance.
Data Protection Under DPDP
India’s Digital Personal Data Protection Act creates a consent-based framework for digital personal data processing. Collections calls and follow-ups process personal data. Intent systems should log detected intent, action taken, disclosure given, payment link sent, escalation reason, and call outcome in auditable form. The system should not generate uncontrolled threats, legal claims, or credit-bureau consequences.
Review the enterprise security and compliance checklist →
Frequently Asked Questions
What is a domain-specific intent?
A domain-specific intent is an intent label designed for a particular business process rather than a generic customer-service category. In collections, it classifies borrower meaning (like a promise to pay, a dispute, or a hardship disclosure) and triggers a specific recovery action.
What are examples of collections intents?
Common examples include promise_to_pay, pay_now, partial_payment_offer, already_paid, amount_dispute, wrong_party_contact, hardship_disclosure, callback_request, language_switch, settlement_request, do_not_contact, and human_agent_request.
How is a collections intent different from a disposition?
An intent is detected during the conversation and can change multiple times as the borrower speaks. A disposition is the final outcome logged after the conversation ends. One call may contain several intents but typically results in one or two dispositions.
Why do collections workflows need domain-specific intents instead of generic ones?
Because repayment conversations involve regulated actions, sensitive borrower situations, and downstream system updates. A generic intent may recognize the words but fail to trigger the right recovery action, creating compliance risk and poor outcomes.
How many intents should a collections workflow start with?
Start with one narrow journey and 12 to 20 well-defined intents. For an early DPD reminder flow, that is usually enough to cover payment readiness, basic hardship, wrong-party contact, callback, dispute, language switch, and fallback scenarios. Expand only after the initial set works reliably.
How do you test collections intents for voice?
Test with real or realistic ASR output, not clean text. Include noisy calls, accents, code-switching, multiple intents per utterance, interrupted speech, and low-confidence examples. Track confusion between similar intents like promise_to_pay and temporary_cashflow_issue. Aim for 100+ utterances per intent at minimum.
What happens when the system is not confident about the detected intent?
High-confidence intents can execute if slots are filled and policy allows. Medium-confidence intents should be confirmed with the borrower. Low-confidence intents should fall back to options or human handoff. Never execute uncertain intents that trigger payment demands or legal language.
Can the same borrower utterance contain multiple intents?
Yes. A borrower might say “Hospital expense chal raha hai, ₹2,000 abhi de sakta hoon, baaki next week.” That utterance contains a hardship disclosure, a partial payment offer, and an implicit PTP. The system needs to handle multi-intent utterances, typically by prioritizing the most operationally significant intent and capturing all relevant entities.
To create domain-specific intents for collections workflows, start from the recovery journey, collect real borrower language, define precise labels, attach required slots, map each intent to policy-approved actions, test under real voice conditions, and improve using repayment outcomes. The best intent libraries are built from what borrowers actually say, not only from approved scripts.
