1. Member grievance intake in local language, routed and tracked
Today: a member in her seventies comes to the counter because her passbook shows no entry for a deposit her son made three weeks ago. The clerk writes four lines in a hardbound complaint register, promises 'we will check', and gets back to the queue. The grievance officer visits that branch on Thursdays. Nobody starts a clock, the member has no reference number, and when she comes back the following week a different clerk asks her to explain it all again. The statutory turnaround exists on paper in the redressal policy and nowhere in the process.
Trigger: Voice / Call, WhatsApp, Email or Webhook (grievance raised)
How the workflow runs
- Trigger
A member raises a grievance. A Voice/Call, WhatsApp, Email or web-form Webhook trigger opens the case, whichever way the member chose to reach the society — including the counter clerk simply forwarding it from the branch WhatsApp number.
- Voice
Listen in the member's language. A Voice node with Sarvam captures a spoken complaint in the member's own language and transcribes it — the member in her seventies never has to write anything, use an app, or repeat herself to a second clerk.
- Agent
Structure and categorise. An economy-tier agent turns the complaint into a structured case — category (deposit/withdrawal, loan servicing, passbook/statement, staff conduct, charges, other), the account or membership number if given, what the member says happened, and what she wants. It never judges whether the complaint is valid.
- Code
Apply the society's own SLA label. A Code node runs the society's user-defined SpEL tool to attach the redressal-policy SLA label and turnaround days to the case — the clock that used to exist only in the policy document now exists on the record.
- Condition
Route by category and severity. A Condition node routes: staff-conduct and suspected-fraud cases go straight to the grievance officer with no automated drafting at all; routine service cases go to the branch queue — all with the turnaround clock already running.
- Output
Acknowledge immediately, in language. An Output node sends the member an acknowledgement with the case reference and the expected turnaround, on her own channel, as text plus an ElevenLabs/Sarvam voice note. She leaves the counter with a reference number instead of a promise.
- Knowledge
Draft a grounded response for the officer. A Knowledge node scoped to the society's bye-laws, schedule of charges and grievance-redressal policy grounds a suggested response — the agent drafts citing the clause, and never states an outcome that is not in the documented policy.
- Approval
Grievance officer decides and replies. An Approval node holds every response, remedy, charge reversal or compensation for the grievance officer — the resolution is a human decision; the agent only prepared the draft, the transaction evidence and the clause.
Channels & connectors
- Voice / Call
- Webhook
- Sarvam (Indian languages)
- ElevenLabs (voice)
- Knowledge base
- Approval / HITL
- Tool (MCP → core banking)
Outcome
Every grievance is logged the moment it is raised, acknowledged in the member's language with a reference number and a running clock, and lands on the grievance officer's desk already structured with the transaction evidence and the relevant bye-law clause attached.
Why it helps
The mechanism is capture and clock-start at the point of contact: a spoken complaint in any Indian language becomes a structured, timestamped case with a statutory acknowledgement out immediately — so nothing depends on a hardbound register being read on Thursday, and the officer's time goes to deciding rather than reconstructing what the member said.
Build spec
2 agents — 1 intake structurer (runs once per grievance) + 1 response drafter (runs only for routine cases that reach drafting). SLA labelling, routing, acknowledgement and the officer's decision are workflow nodes. · Pattern: Multi-channel intake → structure → SpEL SLA label → route by severity → grounded draft → officer decides
System prompt (paste-ready)
(Intake structurer) Turn ONE member grievance into a structured case. You are given a transcript or message and any member context. Return strict JSON {category (DEPOSIT_WITHDRAWAL|LOAN_SERVICING|PASSBOOK_STATEMENT|STAFF_CONDUCT|CHARGES|OTHER), account_or_member_ref, summary (the member's own account, neutrally restated), requested_remedy, severity (ROUTINE|SERIOUS|SUSPECTED_FRAUD), language}. Restate only what the member said — do NOT decide whether the complaint is justified, do NOT assign blame to any named staff member, and do NOT promise any remedy, reversal, refund or timeline beyond the society's published acknowledgement turnaround. If details are missing, list them in missing[]; never fill them in.Agent roles & model tiers
Intake structurer (per grievance) — Economy tier with a configured fallback model — every call, message and forwarded counter complaint passes through it, so it is the volume step
Structure one grievance into strict JSON: category, reference, neutral summary, requested remedy, severity, language. No validity judgement, no blame, no promises, no invented details.
Response drafter (routine cases only) — Standard tier, fallback configured — must reason over bye-laws and the charges schedule and cite the exact clause, which is the one hard step here
Draft a response for the grievance officer, grounded in the bye-laws, schedule of charges and redressal policy in Knowledge, citing the specific clause. Present it explicitly as a draft for approval; never state an outcome the policy does not support, and never commit the society to a remedy.
MCP connectors
- Core banking system — via Tool (MCP): pull the member's transaction history for the disputed date range as evidence for the officer
- Core banking system — via Tool (MCP): fetch the charges actually levied on the account when the category is CHARGES
- Grievance register / case system — via Tool (MCP): create the case with its reference, and update status, SLA clock and final outcome
- Voice, WhatsApp, Email — member intake channels and the acknowledgement/outcome reply
- Sarvam + ElevenLabs — transcribe the spoken complaint and voice the acknowledgement back in the member's language
Built-in tools
- knowledge_search (bye-laws, schedule of charges, grievance-redressal policy and turnaround norms — scoped Knowledge collection)
- http_request (pull the transaction evidence; create and update the case)
- send_email (send the officer-approved written response where the member's channel of record is email)
- user-defined tool `grievance_sla_label` (SpEL): input.severity == 'SUSPECTED_FRAUD' ? 'OFFICER_IMMEDIATE' : (input.category == 'STAFF_CONDUCT' ? 'OFFICER_1D' : (input.severity == 'SERIOUS' ? 'OFFICER_3D' : 'BRANCH_' + input.routineTurnaroundDays + 'D')) — a tenant-authored formula tool: ternary branching plus string concatenation over the tool input, nothing executable. Each society's redressal policy sets its own turnaround, and it changes when the policy changes; expressing it as an editable expression means the register's clock and the written policy stay the same document. It labels and routes a case — the remedy is always the grievance officer's.
Guardrails
- No decision of any kind by the agent: it structures, evidences and drafts — every resolution, charge reversal, compensation or credit-related outcome (including anything touching a member's loan) is decided by the grievance officer at the Approval node, and no agent may approve, reject or re-price anything
- The intake agent never judges whether a complaint is justified and never blames a named employee; staff-conduct and suspected-fraud cases bypass automated drafting entirely and go straight to the officer
- The `grievance_sla_label` SpEL tool sets a routing label and a clock from the society's published policy — it does not decide the outcome, and it cannot shorten or waive a statutory turnaround
- The only thing sent without human review is the acknowledgement itself — reference number, category and the published turnaround; it promises no outcome
- Every draft response cites the bye-law or charges-schedule clause it relies on; an outcome not supported by documented policy is escalated rather than drafted
- Member contact stays within the permitted hour window and honours opt-out for anything other than the statutory acknowledgement and the case outcome; account and transaction details are pulled only for the member's own case
Cost strategy
Intake is the high-volume step and sits on the economy tier with a fallback model — structuring a transcript into a fixed schema is exactly the cheap-model case. The drafter is the hard step (bye-law reasoning, clause citation) and is the only standard-tier call, and it never runs for staff-conduct or fraud cases, which route straight to a human. The SLA labelling is free SpEL. On call intake, voice minutes rather than tokens dominate the bill — cap transcript length in a Code node before it reaches a model.
Output & delivery
A grievance arrives by Voice, WhatsApp, Email or web form → Sarvam transcribes it in the member's language → the cheap structurer produces a schema-valid case and severity → a Code node applies the society's `grievance_sla_label` SpEL tool → the Condition node routes serious and conduct cases straight to the grievance officer → an acknowledgement with case reference and turnaround goes out immediately as text and voice note → for routine cases the standard-tier drafter proposes a clause-cited response → the grievance officer decides and replies at the Approval node, and a Tool (MCP) node updates the case record.