Disclaimer: Independent educational project. Not affiliated with Cashfree. Built by Kaushal Khodifad. Data from public sources; figures are estimates.return to portfolio
Disclaimer: Independent educational project. Not affiliated with Cashfree.
The glass box

The judgment, made inspectable.

The defensible core isn't the outreach - it's the judgment about who not to contact. Every gate, tier and number is a pure function you can read. Try it:

Decision coverage - click any case29 cases · every reason, gate, lever, channel & suppression rule · same input → same decision, always
Tier 1 · recover
Channel logic
Tier 2 · lever
Tier 3 · suppress
Gate ordering (edge)
…or construct one by hand
Order value ₹4,500
RiskShield (fraud) · gate ≥ 7815
RTO Intelligence · COD gate ≥ 6425
Local hour · quiet 21-814:00
Contacts in 7 days · cap 30
Decision traceTier 1 · AI voice call
₹4,500RiskShield 15RTO 2514:00freq 0/3contact consent voice-consent DND offsensitive stock serial
  1. 0  Idempotency · dedup · completion check
    Not yet paid on any session; event is unique (idempotency key clean).
  2. 1  Fraud / risk gate (RiskShield)
    RiskShield score 15 < 78: not a fraud pattern.
  3. 2  Reachability + consent gate
    Valid, consented contact; identity not flagged shared / reassigned.
  4. 3  Safety + fatigue gate
    No sensitivity, fatigue, staleness or quiet-hours conflict.
  5. 4  Classify failure reason → tier
    Tier 1 · Bank / PSP downtime - Money and intent are present; the rail blipped.
  6. 5  Select fix / lever
    Alternate method now; retry when the rail is healthy
  7. 6  Select channel
    AI voice call · Voice eligible: consented, in-hours, high value, economics clear.
  8. 7  Control-group assignment
    In the contacted arm (holdout 0%).
  9. 8  Execute (secure link · grounded message)
    Sent via AI voice call with a single-use, current-cart link.
  10. 9  Monitor + cancel-on-completion
    Watching for completion on any channel; pending outreach cancels on completion.
  11. 10  Attribute + cost
    Per-attempt cost 6.00; recovery measured vs control.
The numbers
Modelled win rate: 68%Attempt cost: ₹6.00Voice value-gate margin: ₹370Voice economics: clears
AI voice call script

Hi, this is Indie Threads's assistant. Your payment of ₹4,500 didn't go through a moment ago - looks like the session dropped. I can send a fresh secure link to your WhatsApp right now to pay by card or UPI. Shall I?

Rules decide

Fraud, consent, tier, suppression, channel - deterministic and auditable. No LLM decides who to contact.

AI talks

The message & voice script are LLM-written (OpenRouter), grounded in the failure reason, with a template fallback.

Tools decide who/whether; a language model writes the last mile. See it live on the demo - fire a real email and the copy is LLM-generated.

The decision pipeline

Every event runs the gauntlet - suppression happens before any contact
Event
failed / abandoned
gate 0
Idempotency
already paid?
↓ suppress
gate 1
Fraud · RiskShield
card-testing?
↓ suppress
gate 2
Consent + reach
allowed to?
↓ suppress
gate 3
Safety + fatigue
sensitive? quiet hours?
↓ suppress
✓ Eligible
Tier 1 or 2
Left alone, logged: fraud · no consent · already paid · sensitive item · serial-abandoner · out of stock · frequency cap · quiet hours
Classify → Tier
reason → T1 / T2
Pick fix + lever
link · EMI · COD (RTO-gated)
Pick channel
voice* · WhatsApp · SMS
Hold-out
control group
Measure
incremental, vs control

* AI voice is gated by value, consent, DND and lawful hours - and ships behind a legal flag. WhatsApp + SMS work without it.

The recoverability taxonomy

The honest answer to “will they still not buy even if we reach them?”

Failure / abandonment event
↓ routes into one of three tiers ↓
Tier 1 · Recover
Bank downtimeUPI timeoutSession crashTechnical decline
Reason-tailored fix, in seconds
Tier 2 · Lever
Insufficient fundsCOD-seekerPrice shock
EMI / Pay-Later · COD (RTO-gated) · clarify
Tier 3 · Suppress
FraudNo consentAlready paidSensitive item
Do not contact - logged with a reason

Attribution: incremental, not vanity

Gross - “paid after we messaged”₹11,90,400
what spray-and-pray would claim
− Control proves they'd have paid anyway₹3,47,800
subtract the baseline
= Incremental - the only number we report₹8,42,600
the lift we actually caused

Illustrative. In the live demo this is computed every tick from the real contacted vs held-out cohorts.

Unit economics: gate the expensive channel

Voice's extra lift over WhatsApp must out-earn its extra cost. In practice the binding gates are the value floor + consent + DND + lawful hours; the economics below is the sanity floor.

use_voice  iff  value × extra_lift
                > extra_cost × safety_margin
ChannelCost / attemptRole
AI voice₹6.00flagged · ≥ ₹2,000
WhatsApp₹0.85the workhorse
SMS₹0.18fallback

Illustrative pass-through costs.

What's real vs what's simulated

An independent concept composing real, separate Cashfree products into one recovery agent. Hover any row for the exact scope. Not affiliated with Cashfree.

Real in this build · live code
  • Decision engine · traceable per event
  • Attribution math · holdout + Wald CI
  • CSV import · recomputes in-browser
  • Live LLM copy · rendered as a preview
Simulated · not built yet
  • Events, customers & amounts · synthetic
  • Every rupee / rate · conditional on priors
  • Gateway webhooks & WhatsApp/SMS/voice · not wired
  • RiskShield / RTO scores · synthetic stand-ins
Real Cashfree products it fuses
  • Cart Recovery · cashfree.com/docs/payments/checkout/cart-recovery
  • RTO Intelligence · cashfree.com/docs/payments/checkout/cod/rto
  • RiskShield · cashfree.com/risk-shield-payment-gateway
Benchmarks it reads against
  • ~70% of online shopping carts are abandoned on average (70.22% aggregate of 50 studies, 2006-2025). · Baymard Institute, Sep 2025
  • Prepaid has overtaken COD in tracked D2C volume (~62% prepaid vs ~38% COD), though COD still leads many tier-2/3 markets. · Unicommerce, CY2024

↑ Independent educational project by Kaushal Khodifad. Cashfree is a real company in the real-time payment & cart recovery space; this design and the underlying prototype were built by Kaushal as a portfolio study. Not affiliated with, endorsed by, or representative of Cashfree's actual product. Data is from public sources. Figures are estimates.

Return to portfolioOpen the live demo