Policy Renewal Reminder
Turn premium-due reminders into same-day UPI payments, in the customer’s own language.
Last updated 2026-07-12
Screenshots



About Policy Renewal Reminder
Policy Renewal Reminder
Turn every premium-due reminder into a same-day UPI renewal — call the policyholder in their own language, beat the objection, and collect on the call.
Built on the Telenow App Platform as a pure declarative app: the data model, the agent tools, the insurer/Razorpay webhooks, the renewal workflow, the multilingual agent, and the objection playbook all run on-platform. No external server.
The problem (and the number)
In Indian life insurance, 13th-month persistency sits around ~63% — roughly one in three policies lapses at the very first renewal. A lapse doesn't just lose the next premium; it forfeits the cover the family bought, the bonuses and guaranteed additions already accrued, and it usually means a costlier, medically-underwritten revival later.
The single biggest lever is collecting on the call. A generic SMS/WhatsApp reminder converts around 10–15%. A live, in-language renewal call that explains why the cover matters, handles the objection, and puts a payment link / UPI mandate in front of the customer right then lifts collection to 35–50%.
Policy Renewal Reminder does exactly that, automatically, in the policyholder's own language.
How it works
PAS / LMS ──(policy_due webhook)──► policy object (status: due)
│ │
│ fires object.policy.created
▼ ▼
dedupe on policy # renewal_reminder workflow
├─ delay ~10 min
└─ outbound-call {{settings.renewal_agent_id}}
→ dials {{trigger.data.phone}}
→ passes policy_no, premium, due_date, product, language
│
▼
Policy Renewal Agent (Sarvam, multilingual)
find_policy → explain value → handle objection (playbook)
→ offer payment link / UPI mandate
→ mark_renewed | mark_promised | record_objection
Razorpay ──(razorpay_paid webhook, x-razorpay-signature)──► payment object
│
fires object.payment.created
▼
payment_confirm workflow
├─ update-object policy → status: renewed
└─ send-message {{settings.wa_channel}} → receipt
Everything the agent does on the call updates the same policy rows you see on the dashboard — and the dashboard's Call now button dials through the same agent and tools.
Agent tools (used mid-call — all declarative)
| Tool | Does | Handler |
|---|---|---|
find_policy | Look up the policy by number (or phone) to read back premium, due date, product | object.query policy |
mark_renewed | Premium paid on the call — persistency win | object.update policy (match policy_no → status renewed) |
mark_promised | Customer commits to a date but doesn't pay now | object.update policy (match policy_no → status promised) |
mark_lapsed | Customer firmly refuses / wants to surrender | object.update policy (match policy_no → status lapsed) |
record_objection | Save why they hesitated (no money / poor returns / has cover / surrender / later) | object.update policy (match policy_no) |
The bundled Policy Renewal Agent is a multi-context flow: a deterministic find_policy tool node (looks the caller up in this app's data) → a conversation node that explains value, handles the objection, and collects. STT/TTS default to Sarvam (anushka) for multilingual policyholders (Hindi, Marathi, Tamil, Telugu, and more).
Dashboard pages
- Policy Renewal Reminder (dashboard) — KPI tiles (due this fortnight, recovered premium ₹, persistency %, same-day paid %, at-risk premium ₹), a renewal-status mix bar, recent policies, and payments collected. Also powers the platform
dashboard_widgetslot in a compact form. - Policies — a due-this-fortnight table (plus status filters and search) with Call now to trigger a renewal call for any policy (passes the policy's context variables to the agent).
- Setup — a configuration checklist, a one-click Create renewal agent button, and the post-install wiring steps.
Knowledge base
renewal-playbook ships four real scripts the agent answers from: why keeping the policy in force matters, objection handling, grace period / free-look / revival, and the payment-link / UPI mandate script.
Install & post-install wiring
- Install Policy Renewal Reminder into your org.
- Open Setup → Create renewal agent (builds the bundled Sarvam agent, auto-wired to the tools + playbook KB).
- Copy the new agent's ID into the app's Renewal agent ID setting (
renewal_agent_id) sorenewal_remindercan dial. - (Optional) Set WhatsApp channel ID (
wa_channel) to auto-send the payment link and the paid receipt, and Payment link base URL (payment_link_base) so the agent can hand over a policy-matched pay link. - Point your systems at the inbound hooks —
policy_due(PAS/LMS drops each premium-due policy; token-authenticated by the install's unguessable URL) andrazorpay_paid(verified withx-razorpay-signature; onpayment.capturedit records the payment, marks the policy renewed, and WhatsApps a receipt). Due policies now flow in and auto-dial.
Settings
| Key | Type | Notes |
|---|---|---|
renewal_agent_id | text (required) | The agent the workflow + "Call now" dial. |
wa_channel | text | WhatsApp channel for the payment link + paid receipt. |
payment_link_base | text | Base of the Razorpay/UPI pay link; the policy number is appended so payments auto-match. |
Bulk dialing your due book
The real-time path (webhook → workflow → call) covers newly-due policies. To sweep an entire due book, use the app-key campaign API:
POST /api/app-campaigns
{ "agentId": "<renewal agent id>",
"targetQuery": { "status": "due" }, // over the `policy` object
"result": { ... write-back ... } }
Monetization
Policy Renewal Reminder is billed on outcomes, not seats: a per-successful-renewal fee — charged only when a policy the agent worked is marked renewed (paid on the call or confirmed via the razorpay_paid webhook). Every renewal recovers a premium that would otherwise have lapsed, so the fee always nets positive for the insurer; promises and objections captured are surfaced as pipeline, not billed.
Ready-made agents it ships
A multilingual (Sarvam) persistency agent that calls policyholders whose premium is due, explains why the cover matters, handles the renewal objection from the playbook, and offers a payment link / UPI mandate to collect on the call.
What your agents can do with it
Look up the policyholder's policy by policy number (or phone) to read back the premium, due date and product before speaking.
Mark the policy as RENEWED once the premium is paid on the call (UPI/payment link captured) or the customer confirms they have just paid. This is a persistency win.
Mark the policy as PROMISED when the customer commits to pay by a date but does not pay on the call, so it can be followed up before the grace period ends.
Mark the policy as LAPSED only when the customer firmly refuses to renew — they want to surrender/cancel and will not pay within the grace period — so the book reflects the true outcome and it drops out of the active follow-up list. Always call record_objection first with their reason.
Save the reason the customer gave for not renewing yet (no money now, poor returns, has other cover, wants to surrender, will pay later) so the playbook and follow-up can be tailored.
Data it manages
Permissions it requests
Apps run inside your workspace under least-privilege scopes you can see up front. This app asks for:
objects:policyobjects:paymentagents:readcalls:initiatecalls:readai:llmwhatsapp:sendcampaigns:readuser:profileWhat's new in v1.1.0
Changelog
1.1.0 — 2026-07-12
- Renamed to Policy Renewal Reminder (business-friendly) with a marketplace icon.
- Added real UI screenshots (dashboard + key pages).
- Added
mark_lapsedso a firm refusal/surrender is recorded — the persistency KPI is now fully reachable. - Verified end-to-end loop closure: trigger → workflow → call → agent tools → write-back → dashboard.
1.0.0
- Initial release.
- Data model:
policyobject (policy #, holder, phone, premium, due date, product, language, status, objection, created_at) withdue/promised/renewed/lapsedsaved views, plus apaymentobject (policy #, amount, captured_at, phone, method) for on-call collections. - Agent tools (declarative):
find_policy,mark_renewed,mark_promised,record_objection. - Bundled agent: Policy Renewal Agent — a Sarvam multilingual multi-context flow (deterministic
find_policylookup → explain value / handle objection / collect) auto-wired to the tools and the renewal playbook knowledge base. - Knowledge base:
renewal-playbook— why keeping the policy matters, objection handling, grace period / free-look / revival, and the payment-link / UPI mandate script. - Automation:
policy_dueinbound webhook (PAS/LMS, dedupe on policy #, token-authenticated) andrazorpay_paidwebhook (HMAC-verified viax-razorpay-signature);renewal_reminderworkflow (delay ~10 min → outbound renewal call);payment_confirmworkflow (on payment → mark policy renewed → WhatsApp the receipt). - Dashboard UI: persistency KPI tiles (due this fortnight, recovered premium, persistency %, same-day paid %, at-risk premium), renewal-status mix, recent policies, and payments collected; also renders into the
dashboard_widgetslot in compact form. - Policies page: a due-this-fortnight table with status filters, search, and per-policy Call now (passes policy context variables to the agent).
- Setup page: configuration checklist + one-click Create renewal agent and post-install wiring steps.
- Self-seed: a fresh install auto-loads six realistic demo policies across all four statuses and one captured payment (removable) so the dashboard is populated on first open.
Publisher
Marketplace publisher · app reviewed by Telenow before listing.
Your data, your keys
Secrets, carrier credentials and API keys stored AES-GCM encrypted; TLS in transit; HMAC-signed webhooks.
Strict per-organization data isolation with role-based access for every member.
Every mutating action is logged and filterable, with CSV export for your records.
In-app DLT / regulatory flows, TCPA calling windows, and org-wide Do-Not-Call enforcement.
More finance apps
Audit 100% of collection calls — AI and human — against RBI Fair-Practice rules, with evidence.
Install Policy Renewal Reminder
Sign up free and get ₹300.00 in credit — no card required. Connect your number, pick a template, and go live in minutes.
