RResolveAgent Studio concept
Fri, 25 Sep · 17:30 ISTDemo clock
Prototype — nothing here is live:Synthetic invoice bookSimulated Receivables Agent handoffSimulated buyer messagesImported synthetic IMS evidenceSimulated payment linksSimulated payment eventsClassifier: demo-lexicon-v1 (deterministic)

Evaluation & impact

Every number on this page is computed by code from the labelled synthetic invoice book or an evaluation file. Nothing is hardcoded.

Synthetic invoice book · seed 20260921Snapshot Fri, 25 Sep · 17:30 IST
Rebuilt from the seed on every load — demo clicks, payments and timers never change these numbers.

1 · Can Resolve avoid the wrong chase?

Definition. A wrong chase is a collection message the reminder-only baseline would send on an invoice that ground truth shows is already paid or in active commercial dispute. The reminder-only baseline sends the next standard reminder on every escalated invoice still open in the ledger (45 of 46).
Reminder-only baseline
14
wrong chases (M)
Resolve
10 of 14
wrong chases blocked (N)
Still missed
4
not detected (M − N)

Resolve blocked 10 of 14 wrong chases in this labelled synthetic invoice book.

Resolve's decisions come only from observable evidence. Hidden ground truth is read solely by this evaluation harness. The classifier here is demo-lexicon-v1 (deterministic; developed alongside these synthetic messages) — this measures the system design on synthetic data, not model accuracy.

Against a stronger benchmark

Blind reminders are an easy baseline. A competent rules setup — ledger check, strict bank matching (amount + invoice reference), and keyword suppression for payment / dispute / document words — is compared on the same book.

ApproachWrong chases blockedUnnecessary pausesAvoidable follow-up handledChooses the next action?
Reminder-only0 of 1400 of 20No
Rules baseline8 of 14012 of 20No — only suppresses
Resolve10 of 14216 of 20Yes — wait, plan, correction, review
Blocked by Resolve but not by rules (2)
SCP-1001 — Paid by RTGS without invoice reference.
SCP-1003 — Paid by IMPS; not yet reconciled.
These come from the deterministic possible-match tier (amount + payer, no reference → review), not from the classifier.
Blocked by rules but not by Resolve (0)
None.

Read this honestly: on this book, simple rules capture most of the suppression value, and Resolve pauses 2 more invoices unnecessarily. The keyword list was written by the same author as the synthetic messages, so the rules baseline is likely optimistic. Resolve's difference is mostly in what happens next — a dated wait with a timer, an approved part-payment plan, a routed correction — which suppression alone cannot do, and which the pilot must measure.

Remaining misses — honest limits
  • SCP-1006Sabarmati Agro IndustriesAlready paid
    Paid by the buyer's parent entity net of TDS with no invoice reference. The matching rule needs an exact amount and a known payer or invoice reference.
    A signal existed but did not meet the deterministic rule.
  • SCP-1007Konkan Cashew ProcessorsAlready paid
    Buyer had already paid in cash at the merchant's office, but no observable payment signal existed.
    Resolve could not detect this because no bank, payment or buyer signal was available.
  • SCP-1008Suryoday Ayurveda LtdAlready paid
    Cheque handed to the sales rep; not yet deposited, so no bank or payment signal existed.
    Resolve could not detect this because no bank, payment or buyer signal was available.
  • SCP-1028Chambal Chemicals LtdActive dispute
    Quality complaint was raised verbally with the sales rep and never reached any channel Resolve can see.
    Resolve could not detect this because no bank, payment or buyer signal was available.
Wrong chases Resolve blocked
SCP-1053disputedNeeds review
SCP-1042paidPaid but unmatched
SCP-1001paidNeeds review
SCP-1002paidPaid but unmatched
SCP-1003paidNeeds review
SCP-1004paidNeeds review
SCP-1005paidNeeds review
SCP-1025disputedCommercial dispute
SCP-1026disputedCommercial dispute
SCP-1027disputedCommercial dispute
Cost of caution
Resolve also paused follow-up on 2 invoice(s) with no real blocker:
  • SCP-1009 (Needs review) — Credit was for an earlier invoice (SCP-0978) of the same amount; this invoice is simply unpaid.
  • SCP-1037 (Needs review) — Stalling; no real blocker.
Secondary metric · avoidable follow-up
Also counting invoices whose true blocker is paperwork: Resolve paused 16 of 20. Reported separately — the headline definition does not change.

2 · Classifier evaluation

Held-out evaluation pending

No independently authored held-out set has been imported, so no model accuracy is shown. Held-out cases must be written after the prompt is frozen, by someone other than the classifier developer — see evaluation/HELDOUT_INSTRUCTIONS.md.

Real AI classifier · development set
NOT HELD OUT
groq:openai/gpt-oss-120b · 47 scored cases
Prompt case-classifier-v1 · sha ba530b3ade · dataset 4904aaf9f2 · run 2026-09-28 04:27 UTC
State accuracy
77%
Risk-weighted errors
21
H 3 · M 4 · L 4
Relative-date exact match
20/31
Ambiguous → review
5/8
StatenPrecisionRecallF1
Cash constrained3100%100%1.00
Commercial dispute3100%100%1.00
Follow-up active340%67%0.50
Needs review1669%56%0.62
Paid but unmatched267%100%0.80
Paperwork blocked583%100%0.91
Promise to pay1586%80%0.83
WEEKDAY: 3/4TOMORROW_KAL: 3/3MONTH_BOUNDARY: 4/5PARSO: 2/3AFTER_15TH: 1/3NEXT_FRIDAY: 2/3EXPLICIT_DATE: 1/1WEEKEND_BOUNDARY: 0/4VAGUE: 1/2UNCATEGORISED: 3/3

The frozen prompt case-classifier-v1 was run unchanged through Groq. The model was not tuned on these cases, but they were written by the same author as the prompt, so treat this as a sanity check — not generalisation.

Development set regression check
NOT HELD OUT

47 of 47 development cases pass. These were written while building the parser — passing them is a regression check, not an accuracy claim.

Prompt freeze
Version case-classifier-v1
SHA-256 ba530b3adeb983d8c73e…
Matches PROMPT_LOCK.json (frozen 2026-09-28)

Once a held-out set has been evaluated, changing the prompt requires a new version and ideally a fresh held-out set.

Asymmetric error costs (unitless)
Dispute → Follow-upHIGH (3)
Paperwork → Follow-upHIGH (3)
Dispute → Cash constraintHIGH (3)
Follow-up → PaperworkMODERATE (2)
Needs review → PromiseMODERATE (2)
Follow-up → Needs reviewLOW (1)

No rupee values are attached to errors.

3 · Pilot metric

PILOT METRIC
Incremental cash collected within 30 days on invoices escalated after standard reminders failed.

The prototype does not simulate this result. Whether a buyer would pay after a resolution action depends on real behaviour, which synthetic data cannot honestly model.

Eligible
Invoices escalated after the Receivables Agent's standard reminders and calls fail.
Randomise
Resolve cohort vs reminder-only holdout, at invoice or buyer level.
Measure
Cash collected within 30 days of escalation; plus wrong chases and merchant review time as guardrails.

4 · Supporting countable metrics (book snapshot at demo start)

Invoices routed by state
Follow-up active17Paid but unmatched2Paperwork blocked5Cash constrained2Promise to pay4Needs review12Commercial dispute3Resolved1
Needs review: 12 invoices held back from any buyer message.
Promises & overrides
Closed promises across buyers: 19 · kept 12
Active promises being waited on: 4
Merchant overrides at snapshot: 0 (live count on Policy page)
Evidence-to-classification latency is not reported: synthetic timestamps do not support a meaningful measure.
Book total ₹1,02,70,180