4 ready-to-build workflows

AI agent workflows for Cooperative banks & credit societies

Member grievances, KYC re-verification, AGM and dividend notices and loan-committee file prep — handled in members' own languages, with every decision left to the committee.

Each recipe below is expressed only in VegaDūta's real workflow building blocks — Trigger, Agent, Knowledge, Condition, Approval, Output, Tool (MCP), Voice, Device, Loop, Code and Parallel — so it maps 1:1 to something you can assemble in the Workflow designer. Consequential actions always pass a human Approval step.

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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
  • WhatsApp
  • Email
  • 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 agents1 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.

2. Periodic KYC re-verification chasing, without the branch queue

Today: the branch prints a list of 600 members due for periodic KYC re-verification and posts cyclostyled letters to addresses last updated when the account was opened. Most come back undelivered or unread. The clerk keeps a photocopy folder and a ruled register of who has submitted what, and ticks it by hand. Members find out there is a problem when a withdrawal is refused at the counter — then queue for an hour, having brought a ration card when what was needed was a current address proof, and are told to come again.

Trigger: Webhook (KYC-due list from core banking, scheduled)

How the workflow runs

  1. Trigger

    The KYC-due list arrives. A scheduled Webhook trigger pulls the members due for re-verification. The core banking system and the KYC/eKYC provider have no first-party connectors — both are reached via Tool (MCP) nodes, which also return each member's KYC category and language.

  2. Code

    Band the due date with the branch's own rule. A Code node applies the society's user-defined SpEL tool to label each member OVERDUE / DUE_SOON / SCHEDULED, so the branch works the list in its own defined order rather than alphabetically off a printout.

  3. Condition

    Eligibility and quiet-hours gate. A Condition node filters before any drafting: opted-out members, members already in the branch's manual queue, and anyone outside the permitted contact window are excluded — the model never decides who gets contacted.

  4. Loop

    One personalised notice per member. A Loop node runs a cheap agent per member to draft a short local-language notice — what is due, exactly which documents are needed for their KYC category, and the two ways to submit them. The 'she brought the wrong paper' failure is designed out here.

  5. Output

    Deliver on WhatsApp, SMS and voice. An Output node sends the notice on WhatsApp with an ElevenLabs/Sarvam voice note, falling back to SMS where WhatsApp is not reachable — no portal, no app install, no posted letter.

  6. Loop

    Check what comes back. As members reply with photos, a Loop node runs a vision-capable economy-tier agent per document: right type, legible, unexpired, name matching the member record. The ruled register becomes structured data.

  7. Condition

    Complete or still missing?. A Condition node either advances a complete submission or sends one precise follow-up for exactly the outstanding item — a maximum of the policy-defined number of reminders, then it becomes a named branch task, not an endless automated chase.

  8. Approval

    Branch officer verifies and updates. An Approval node holds the KYC update for a branch officer — the agent only reports that documents look present, legible and unexpired; verifying identity and updating the member's KYC status is a regulated human act.

Channels & connectors

  • Webhook
  • WhatsApp
  • SMS / Twilio
  • ElevenLabs (voice)
  • Sarvam (Indian languages)
  • Knowledge base
  • Approval / HITL
  • Tool (MCP → core banking / KYC provider)

Outcome

Members are told what is due in a language and channel they actually use, can submit by phone photo instead of a branch trip, and the officer receives pre-checked submissions to verify rather than an hour-long counter queue of people holding the wrong document.

Why it helps

The mechanism is reach plus precision: the notice arrives on WhatsApp with a voice note rather than as a posted letter to a stale address, and it names exactly the documents that member's KYC category needs — so the two common failures (member never knew, member brought the wrong paper) are removed before anyone stands at a counter.

Build spec

2 agents1 notice drafter (per member) + 1 document checker (per submitted image); both run inside Loop nodes. The due-date banding, the eligibility gate, the reminder cap and the officer's verification are workflow nodes. · Pattern: SpEL due-banding → eligibility gate → cheap per-member notice → cheap per-document check → capped follow-up → human verifies

System prompt (paste-ready)

(Notice drafter) Write ONE short KYC re-verification notice for a cooperative-society member. You are given {member_name, language, kyc_category, required_documents[], due_by, due_band, branch_name, whatsapp_number}. Write in the member's language, under 50 words, at a primary-school reading level. Say: that periodic KYC re-verification is due by {due_by}; the exact documents required (list them, no more and no fewer than required_documents); and the two ways to submit — photograph them to this WhatsApp number, or bring them to {branch_name}. Do NOT state or imply any consequence such as account freezing, blocking or closure. Do NOT ask the member to send an identity number as text, a password, an OTP or any banking credential. Return {text, tts_text}.

Agent roles & model tiers

  • Notice drafter (per member) Economy tier with a configured fallback model — one short templated notice per due member across a whole book, the dominant cost line

    Draft one short local-language KYC notice from supplied fields: what is due, exactly which documents, two ways to submit. No consequences, no credential requests, no invented requirements.
  • Document checker (per image) Economy tier with vision, fallback configured — runs once per submitted photo; images downscaled before the call

    Check one submitted image against the expected document type: right type, legible, unexpired, name matching the member record. Strict JSON, visible evidence only, at most the last 4 characters of any identity number, no identity-verification verdict.

MCP connectors

  • Core banking system — via Tool (MCP): fetch the periodic-KYC-due list with each member's KYC category, language and contact preferences
  • Core banking system — via Tool (MCP): write the officer-approved KYC status update, keyed to (member id, KYC cycle)
  • KYC / eKYC provider — via Tool (MCP): check an existing verification record before asking the member for a document they have already provided
  • WhatsApp / SMS — deliver the notice and receive document photos in the same thread
  • Sarvam + ElevenLabs — render the notice in the member's language and voice it

Built-in tools

  • knowledge_search (KYC policy by member category, document matrix, reminder-frequency policy — scoped Knowledge collection)
  • http_request (pull the due list; attach submissions; write the approved status update)
  • user-defined tool `kyc_due_band` (SpEL): input.daysUntilDue < 0 ? 'OVERDUE' : (input.daysUntilDue <= input.dueSoonDays ? 'DUE_SOON' : 'SCHEDULED') — a tenant-authored formula tool: one comparison and a ternary over the tool input, with the society's own DUE_SOON horizon passed in. It cannot call the KYC provider or run code; it turns a date difference into a label the branch sorts and reports on. The society tunes its own lead time (a cycle that clashes with harvest season gets a longer horizon) without a developer or a release.

Guardrails

  • No decision by the agent: identity verification and the KYC status update are regulated human acts performed by the branch officer at the Approval node — the agent only reports that a document appears present, legible and unexpired, and it never approves, rejects, freezes or restricts an account, nor makes any credit judgement
  • The `kyc_due_band` SpEL tool prioritises a worklist only — an OVERDUE label never restricts an account or triggers any action against the member
  • The notice may never state or imply a consequence (freeze, block, closure) and may never ask for an identity number as text, an OTP, a password or any banking credential — credential-style requests are the exact shape of the fraud this sector suffers from
  • Contact is capped: an eligibility gate excludes opted-out members and out-of-hours sends before drafting, and follow-ups stop at the policy-defined reminder count, after which the case becomes a named branch task rather than an automated chase
  • Data minimisation: at most the last 4 characters of any identity number are extracted, images are retained under the tenant's policy, and member records are read only for the member being contacted
  • The status write is idempotent per (member id, KYC cycle) and stamped with the approving officer, so a re-run cannot re-verify or duplicate a record

Cost strategy

Both agents are economy tier by design with fallback models configured, because both steps are high volume and low judgement — a templated notice and a present/legible/unexpired image check. That keeps a whole-book KYC cycle predictable: cost is (eligible members × one short draft) + (submitted images × one capped vision call), with the banding free in SpEL. No standard-tier call exists in the happy path; escalations go to a human, not to a bigger model.

Output & delivery

The due list arrives via Webhook → a Code node applies the society's `kyc_due_band` SpEL tool → the eligibility gate removes opted-out and out-of-window members → the Loop drafts one cheap local-language notice each → an Output node delivers it on WhatsApp with a voice note, falling back to SMS → returning photos are checked one by one by a cheap vision agent → the Condition node sends at most the policy-allowed follow-ups for outstanding items → the branch officer verifies identity and approves at the Approval node, and a Tool (MCP) node writes the KYC status back to core banking.

3. AGM and dividend notices with RSVP and proxy tracking

Today: after the board declares the dividend, the secretary and two clerks spend a week at a table with the share register, a rubber stamp and a stack of pre-printed notices, hand-writing each member's shareholding and dividend entitlement onto the notice, stuffing envelopes and getting them to the post office inside the statutory notice period. Proxy forms drift back in an envelope pile that nobody reconciles against the register until the morning of the meeting, when quorum is worked out at the door with a pen and the register open on the table.

Trigger: Webhook (AGM notice + dividend declaration approved by the board)

How the workflow runs

  1. Trigger

    Board approves the notice. A Webhook trigger fires once the board has approved the AGM notice and dividend declaration — this workflow distributes a decision already made by the board; it never produces one.

  2. Knowledge

    Ground the notice in the bye-laws. A Knowledge node scoped to the society's bye-laws supplies the notice requirements — statutory notice period, mandatory contents, quorum rule, proxy eligibility — so the distributed text carries every required element and the notice-period check is made before anything sends.

  3. Loop

    Personalise per member. A Loop node runs a cheap agent per member to render the approved notice in that member's recorded language, with their shareholding and dividend entitlement inserted verbatim from the share register — the table, the stamp and the hand-writing, replaced. No figure is ever computed by a model.

  4. Code

    Format the entitlement line. A Code node uses the society's user-defined SpEL tool to build the entitlement line in the society's own house format from the register fields — so every notice reads identically and no clerk's handwriting is involved.

  5. Approval

    Secretary signs off the distribution. An Approval node holds the rendered notice set and the distribution list for the secretary — a statutory notice is a legal instrument, so a human approves the exact text and audience before a single send.

  6. Output

    Send on WhatsApp, SMS, Email and voice. An Output node delivers the approved notice on each member's preferred channel, with an ElevenLabs/Sarvam voice note for members who do not read comfortably, and logs delivery per member for the statutory record — which the post office never gave them.

  7. Agent

    Collect RSVPs and proxies. Replies flow back to a light agent that records attending / not attending / sending a proxy, and asks for the named proxy where one is declared — it records what the member said and never accepts a proxy as valid itself.

  8. Approval

    Secretary validates proxies + quorum. An Approval node puts the reconciled proxy list and the projected quorum in front of the secretary the week before, not at the door — proxy eligibility under the bye-laws and the quorum call remain human determinations.

Channels & connectors

  • Webhook
  • WhatsApp
  • SMS / Twilio
  • Email
  • ElevenLabs (voice)
  • Sarvam (Indian languages)
  • Knowledge base
  • Approval / HITL
  • Tool (MCP → member register)

Outcome

Every member receives a bye-law-compliant AGM and dividend notice in their own language on a channel they use, with per-member delivery logged for the statutory record, and the secretary walks into the meeting with a reconciled RSVP and proxy list instead of an envelope pile.

Why it helps

The mechanism is verbatim distribution at scale plus structured reply capture: the board's approved text and each member's register figures are passed through untouched, delivery is logged per member, and RSVPs and proxies land as data — so quorum is a count the secretary validates in advance rather than works out at the door.

Build spec

2 agents1 notice renderer (runs once per member via the Loop node) + 1 RSVP/proxy recorder (runs per reply). The bye-law grounding, the entitlement-line formatting, both sign-offs and the delivery log are workflow nodes. · Pattern: Board-approved text → per-member language rendering + SpEL entitlement line → secretary approves the set → send + log → structured RSVP capture → secretary validates quorum

System prompt (paste-ready)

(Notice renderer) Render the board-approved AGM and dividend notice for ONE member. You are given {member_name, language, shares_held, dividend_amount, entitlement_line, meeting_datetime, venue, agenda_items[], approved_notice_text}. Reproduce every mandatory element of approved_notice_text — you may translate into the member's language and reformat for readability, but you may NOT add, remove, soften or reinterpret any statutory content, agenda item, date or venue. Insert entitlement_line EXACTLY as supplied; never compute, round, convert or estimate a figure. Do not add any statement about the society's performance, future dividends, or advice about what the member should do. Return {text, tts_text}.

Agent roles & model tiers

  • Notice renderer (per member) Economy tier with a configured fallback model — runs once for every member on the register, so it is the entire cost story; a bigger model here would only risk paraphrasing statutory language it must not touch

    Render the approved notice into one member's language with the supplied entitlement line inserted verbatim. No added or removed statutory content, no computed figures, no commentary or advice.
  • RSVP / proxy recorder (per reply) Economy tier, fallback configured — short structured extraction from a free-text or spoken reply

    Record one member reply as {attending (YES|NO|PROXY|UNCLEAR), proxy_name, notes}. Ask for the proxy's name if PROXY is declared without one. Never assess whether a proxy is eligible and never count or project quorum — that is the secretary's determination.

MCP connectors

  • Member / share register — via Tool (MCP): fetch each member's shareholding, dividend entitlement, recorded language and preferred channel
  • Member / share register — via Tool (MCP): log per-member delivery (channel, timestamp, outcome) for the statutory record
  • Member / share register — via Tool (MCP): record each RSVP and declared proxy against the member's row for the secretary's reconciliation
  • WhatsApp / SMS / Email — distribute the notice and receive replies on the member's preferred channel
  • Sarvam + ElevenLabs — render the notice per member language and voice it for members who do not read comfortably

Built-in tools

  • knowledge_search (bye-laws: notice period, mandatory contents, quorum and proxy rules — scoped Knowledge collection)
  • http_request (read the member register; log per-member delivery and RSVP)
  • send_email (deliver the approved notice to members whose channel of record is email)
  • user-defined tool `dividend_notice_line` (SpEL): input.memberName + ' — shares held: ' + input.sharesHeld + ' — dividend as declared by the board and recorded in the register: ' + input.dividendAmount + ' (' + input.financialYear + ')' — a tenant-authored formatting tool: it concatenates fields straight off the tool input, with no arithmetic on money at all. This is the honest use of the feature — the society controls the exact wording and order of its own statutory notice line and can amend it when the bye-laws or the house style change, without a developer, and without ever letting a model or a formula recompute a member's entitlement.

Guardrails

  • No decision by the agent: the board declared the dividend and the secretary approves the notice text, the audience, the proxy validity and the quorum call at Approval nodes — the agent distributes and records only, makes no credit, financial or governance determination, and moves no money
  • All figures — shareholding, dividend entitlement, dates, venue — are passed through verbatim from the register and the approved text; the model is forbidden from computing, rounding or restating any amount, and the `dividend_notice_line` SpEL tool only concatenates supplied fields, it performs no arithmetic on money
  • Statutory content is preserved: the renderer may translate and reformat but may not add, drop or reinterpret a mandatory element, and the bye-law notice-period requirement is checked before distribution
  • Per-member delivery (channel, timestamp, outcome) is logged for the statutory record, sends respect the permitted contact window, and the notice itself is a statutory communication — routine opt-outs apply to follow-ups, not to the notice
  • Proxies are recorded as declared, never validated by the agent; eligibility under the bye-laws is determined by the secretary at the second Approval node

Cost strategy

This is a pure fan-out: one economy-tier render per member on the register, once a year, plus one cheap extraction per reply, with a fallback model so an outage cannot jeopardise a statutory notice window. Because the text is board-approved and the figures are inserted verbatim by a SpEL formatter, there is no reasoning step anywhere — a standard-tier model would add cost and add risk. Cache the translated boilerplate per language and vary only the member fields.

Output & delivery

The board's approved notice arrives via Webhook → the bye-law requirements are loaded from the scoped Knowledge collection → the Loop renders one per-member language version, with the `dividend_notice_line` SpEL tool formatting the register figures verbatim → the secretary approves the exact text and distribution list at the first Approval node → an Output node sends on WhatsApp, SMS or Email with a voice note and logs delivery per member → replies are recorded as structured RSVP/proxy data → the secretary validates proxy eligibility and calls quorum at the second Approval node.

4. Loan-committee file preparation — the pack, not the verdict

Today: the credit committee meets on alternate Saturdays and works through a stack of physical files a clerk carried up from the branch. Half the sitting goes on discovering what is not in them — the member's share qualification was never checked against the bye-law, nobody pulled his existing borrowings from the other branch, the bureau report is four months old, and one file's guarantor page is missing. Those files go back and wait a fortnight. Members phone the branch in the meantime and are told 'it is with the committee'.

Trigger: Webhook (application marked ready for committee) / Email

How the workflow runs

  1. Trigger

    A file is marked committee-ready. A Webhook from the LOS (or an Email from the branch) marks an application ready. The LOS, core banking system and credit bureau have no first-party connectors — each is reached via a Tool (MCP) node.

  2. Parallel

    Gather the file in parallel. A Parallel node fans out the read-only gathering the clerk used to do serially over days: application and documents from the LOS, membership and share qualification and existing borrowings from core banking, and a current bureau summary — all at once, all read-only.

  3. Sub-workflow

    Re-use the document completeness check. A Sub-workflow node invokes the same document-completeness pre-check the field side already uses, so 'the guarantor page is missing' is found before the file is tabled rather than in the sitting.

  4. Agent

    Check the file against the checklist. An economy-tier agent verifies completeness against the product's documented checklist and the society's bye-law eligibility conditions — documents present and legible, member category, share qualification, bureau report currency. It reports facts and gaps only.

  5. Code

    Route to the right sanctioning authority. A Code node applies the society's user-defined SpEL tool to the applied amount to select WHO must decide — branch manager, credit committee or board — straight from the society's own authority matrix. It picks the decider; it never decides.

  6. Condition

    Complete enough to table?. A Condition node holds back an incomplete file with a specific gap list for the branch, so the Saturday agenda contains only files that can actually be decided.

  7. Agent

    Write the committee brief. A standard-tier agent assembles a neutral one-page brief: what is applied for, the member's standing and existing exposure as read from the systems, the documented eligibility position with the bye-law clause cited, and the open questions. It presents no recommendation, no score and no rate.

  8. Approval

    The committee decides. An Approval node routes the brief to the sanctioning authority the SpEL tool selected — approve, reject, or send back with conditions. Nothing in this workflow may sanction, price or disburse anything.

  9. Output

    Record the minute + inform the member. A Tool (MCP) node records the committee's recorded decision against the file, and an Output node informs the member of the outcome in his language on WhatsApp — so 'it is with the committee' stops being the answer he gets by phone.

Channels & connectors

  • Webhook
  • Email
  • WhatsApp
  • Knowledge base
  • Sarvam (Indian languages)
  • Approval / HITL
  • Tool (MCP → LOS / core banking / credit bureau)

Outcome

The committee receives complete files with a neutral one-page brief and a cited eligibility position, already routed to the correct sanctioning authority — so the sitting is spent on the credit judgement itself rather than on discovering what is missing.

Why it helps

The mechanism is separating the clerical from the judgemental: gathering, completeness, bureau currency and bye-law eligibility are objective, checkable work a workflow can do in parallel and in advance, while the decision — which is the committee's statutory function — is untouched and arrives better informed.

Build spec

2 agents1 completeness/eligibility checker (per file) + 1 brief writer (per committee-ready file). The parallel gathering, the re-used document sub-workflow, the authority routing, the agenda gate and the committee decision are workflow nodes. · Pattern: Parallel read-only gather → re-used completeness sub-workflow → cheap eligibility check → SpEL authority routing → gate → neutral brief → committee decides

System prompt (paste-ready)

(Brief writer) Write a NEUTRAL one-page committee brief for a cooperative-society loan file. You are given the application, the completeness-check result, the member's standing and existing borrowings as read from the systems, the bureau summary, and the selected sanctioning authority. Structure it as: (1) what is applied for, verbatim; (2) member standing — membership date, share qualification, existing borrowings and repayment record, all quoted exactly as supplied; (3) documented eligibility position, citing the specific bye-law or product-policy clause from Knowledge; (4) open questions for the committee. You must NOT: recommend approval or rejection; state, score or imply creditworthiness; suggest an amount, tenor, interest rate, security or condition; compute a ratio or an amount not supplied to you; or characterise the member's character or intent. If a figure is missing, say it is missing.

Agent roles & model tiers

  • Completeness + eligibility checker (per file) Economy tier with a configured fallback model — a checklist comparison over structured inputs, run on every file including the ones that never get tabled

    Compare the gathered file against the product checklist and bye-law eligibility conditions in Knowledge. Return {present[], missing[], illegible[], eligibility_conditions_met[], eligibility_conditions_unmet[], bureau_report_age_days, clause_refs[]}. Report facts against documented rules only — no creditworthiness view, no recommendation, no waiver.
  • Brief writer (per committee-ready file) Standard tier, fallback configured — the one genuinely hard step: neutral synthesis with clause citation, and the only place a bigger model earns its cost

    Assemble the neutral one-page brief exactly as structured in the main prompt, quoting all figures verbatim and citing the bye-law clause. No recommendation, no score, no rate, no computed ratio, no character assessment.

MCP connectors

  • LOS / loan-origination system — via Tool (MCP): fetch the application, the submitted documents and the product code
  • Core banking system — via Tool (MCP): fetch membership date, share qualification, existing borrowings across branches and the repayment record
  • Credit bureau — via Tool (MCP): pull the enquiry status and the current bureau summary, and return the report date so its currency can be checked
  • LOS — via Tool (MCP): write the committee's recorded decision and minute reference against the application id
  • WhatsApp — inform the member of the committee's recorded outcome in his own language

Built-in tools

  • knowledge_search (product policy, bye-law eligibility conditions, sanctioning-authority matrix — scoped Knowledge collection)
  • http_request (parallel read-only gathering; write the committee's recorded decision)
  • user-defined tool `sanctioning_authority` (SpEL): input.appliedAmount > input.boardLimit ? 'BOARD' : (input.appliedAmount > input.committeeLimit ? 'CREDIT_COMMITTEE' : 'BRANCH_MANAGER') — a tenant-authored formula tool: two comparisons and a ternary over the tool input, with the society's own limits supplied as fields. Every society's authority matrix is different and is amended by board resolution, so holding it as an editable expression means the routing follows the resolution the day it passes, with no release. Read the boundary carefully: this selects WHO is empowered to decide, never WHAT is decided — the sanction itself is always the named human's at the Approval node.

Guardrails

  • ABSOLUTE: no agent makes a credit decision. Nothing here approves, rejects, scores, rates, prices, sets a limit, security or tenor, or disburses — the brief explicitly carries no recommendation, and the sanctioning authority decides at the Approval node
  • The `sanctioning_authority` SpEL tool routes a file to the correct decision-maker under the society's own authority matrix — it selects who decides, it never decides, and it can never lower the authority a board resolution requires
  • Every figure — exposure, repayment record, share qualification, bureau data — is quoted verbatim from the source system; the model may not compute a ratio or an amount, and a missing figure is reported as missing rather than inferred
  • The eligibility position is stated only against the bye-law or product-policy clause it cites; the model may not waive a condition, invent one, or characterise the member's intent or character
  • All system access in the gathering step is read-only; the single write is the committee's recorded decision, keyed to the application id and stamped with the deciding authority, so the workflow can never sanction by side effect
  • The member is informed of the committee's recorded outcome only — the message states a human decision and never explains it as the agent's, and it carries no advice, no rate and no commitment

Cost strategy

Only two model calls per file, and only one of them is standard tier: the completeness check is a checklist comparison and belongs on the economy tier, while the brief is the single hard step where neutral synthesis and clause citation justify the spend; both have fallback models so a provider outage cannot cost the committee a fortnight. Gathering runs in a Parallel node, which cuts wall-clock without adding tokens, and the authority routing is free SpEL. Files stopped by the completeness gate never reach the standard-tier brief at all, so incomplete files cost almost nothing.

Output & delivery

A Parallel node gathers the application, the member's standing and a current bureau summary read-only via Tool (MCP) nodes → a Sub-workflow node re-uses the document-completeness pre-check → the cheap checker verifies bye-law eligibility with clause references → a Code node applies the society's `sanctioning_authority` SpEL tool to route the file → the Condition node keeps incomplete files off the agenda and returns a specific gap list to the branch → the standard-tier writer produces a neutral, recommendation-free one-page brief → the named sanctioning authority decides at the Approval node → a Tool (MCP) node records the decision against the file and an Output node informs the member on WhatsApp in his own language.

Related industries

Build one of these in minutes

The sandbox gives you a live agent workspace — no account, no card. Or head back to the full catalogue and compare patterns across every industry.

See how VegaDūta compares to n8n, Dify and BotpressWhy VegaDūta's architectureEstimate your WhatsApp API costs