@agenticmail/core 0.9.32 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/skills/built-in/accommodation-intake.json +132 -0
- package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
- package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
- package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
- package/dist/skills/built-in/anti-social-engineering.json +153 -0
- package/dist/skills/built-in/anything-else-sweep.json +120 -0
- package/dist/skills/built-in/apologise-correctly.json +126 -0
- package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
- package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
- package/dist/skills/built-in/bant-discovery-call.json +125 -0
- package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
- package/dist/skills/built-in/bookmark-close.json +113 -0
- package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
- package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
- package/dist/skills/built-in/calibrated-questions.json +155 -0
- package/dist/skills/built-in/call-911-fire.json +118 -0
- package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
- package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
- package/dist/skills/built-in/call-988-crisis-line.json +106 -0
- package/dist/skills/built-in/call-poison-control.json +115 -0
- package/dist/skills/built-in/call-police-non-emergency.json +114 -0
- package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
- package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
- package/dist/skills/built-in/cancel-policy-clean.json +130 -0
- package/dist/skills/built-in/capture-rep-identity.json +113 -0
- package/dist/skills/built-in/childcare-provider-intake.json +157 -0
- package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
- package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
- package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
- package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
- package/dist/skills/built-in/contractor-estimate-request.json +142 -0
- package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
- package/dist/skills/built-in/cpa-intake-call.json +134 -0
- package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
- package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
- package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
- package/dist/skills/built-in/deliver-difficult-news.json +122 -0
- package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
- package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
- package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
- package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
- package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
- package/dist/skills/built-in/dispute-denied-claim.json +143 -0
- package/dist/skills/built-in/dispute-security-deposit.json +130 -0
- package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
- package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
- package/dist/skills/built-in/document-call-promises.json +145 -0
- package/dist/skills/built-in/early-lease-termination.json +126 -0
- package/dist/skills/built-in/elite-line-escalation.json +107 -0
- package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
- package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
- package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
- package/dist/skills/built-in/file-habitability-complaint.json +115 -0
- package/dist/skills/built-in/financial-aid-appeal.json +128 -0
- package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
- package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
- package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
- package/dist/skills/built-in/handle-callback-stall.json +120 -0
- package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
- package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
- package/dist/skills/built-in/handle-time-pressure.json +159 -0
- package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
- package/dist/skills/built-in/hoa-dispute.json +123 -0
- package/dist/skills/built-in/hold-time-strategy.json +137 -0
- package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
- package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
- package/dist/skills/built-in/humour-when-it-lands.json +127 -0
- package/dist/skills/built-in/i20-visa-dso.json +134 -0
- package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
- package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
- package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
- package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
- package/dist/skills/built-in/late-add-petition.json +128 -0
- package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
- package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
- package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
- package/dist/skills/built-in/medical-records-transfer.json +138 -0
- package/dist/skills/built-in/medical-withdrawal.json +131 -0
- package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
- package/dist/skills/built-in/mirror-technique.json +145 -0
- package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
- package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
- package/dist/skills/built-in/move-out-walkthrough.json +114 -0
- package/dist/skills/built-in/multi-channel-escalation.json +141 -0
- package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
- package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
- package/dist/skills/built-in/no-as-opening.json +154 -0
- package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
- package/dist/skills/built-in/outage-credit-applied.json +127 -0
- package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
- package/dist/skills/built-in/pediatric-school-forms.json +141 -0
- package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
- package/dist/skills/built-in/pharmacy-callback.json +134 -0
- package/dist/skills/built-in/pivot-mid-call.json +141 -0
- package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
- package/dist/skills/built-in/prescription-refill-followup.json +132 -0
- package/dist/skills/built-in/push-past-invented-policy.json +159 -0
- package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
- package/dist/skills/built-in/reach-executive-office.json +137 -0
- package/dist/skills/built-in/read-vocal-cues.json +139 -0
- package/dist/skills/built-in/read-vocal-tone.json +159 -0
- package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
- package/dist/skills/built-in/receive-difficult-news.json +115 -0
- package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
- package/dist/skills/built-in/recover-summary-refusal.json +121 -0
- package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
- package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
- package/dist/skills/built-in/referral-prior-authorization.json +130 -0
- package/dist/skills/built-in/refuse-the-split.json +142 -0
- package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
- package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
- package/dist/skills/built-in/rental-scam-report.json +125 -0
- package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
- package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
- package/dist/skills/built-in/report-elder-or-child-abuse.json +117 -0
- package/dist/skills/built-in/report-fbi-tip.json +109 -0
- package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
- package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
- package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
- package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
- package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
- package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
- package/dist/skills/built-in/request-welfare-check.json +127 -0
- package/dist/skills/built-in/request-written-confirmation.json +113 -0
- package/dist/skills/built-in/reschedule-appointment.json +121 -0
- package/dist/skills/built-in/reset-by-callback.json +143 -0
- package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
- package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
- package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
- package/dist/skills/built-in/roommate-replacement.json +121 -0
- package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
- package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
- package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
- package/dist/skills/built-in/social-security-replacement-card.json +122 -0
- package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
- package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
- package/dist/skills/built-in/stop-recurring-ach.json +127 -0
- package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
- package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
- package/dist/skills/built-in/therapist-intake-call.json +133 -0
- package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
- package/dist/skills/built-in/transcript-request.json +128 -0
- package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
- package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
- package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
- package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
- package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
- package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
- package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
- package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
- package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
- package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
- package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
- package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
- package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
- package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
- package/dist/skills/built-in/walkaway-threats.json +159 -0
- package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
- package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
- package/dist/skills/built-in/wire-funds-safely.json +129 -0
- package/package.json +1 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "detect-lies-and-contradictions",
|
|
3
|
+
"name": "Detect Lies and Contradictions Mid-Call",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "other",
|
|
6
|
+
"tags": [
|
|
7
|
+
"meta-skill",
|
|
8
|
+
"adversarial-robustness",
|
|
9
|
+
"deception-detection",
|
|
10
|
+
"phone-call",
|
|
11
|
+
"evidence",
|
|
12
|
+
"critical-reasoning"
|
|
13
|
+
],
|
|
14
|
+
"description": "Notice when what the rep just said contradicts (a) something they said two minutes ago, (b) something on the user's bill, (c) the company's own published policy, or (d) physical reality. Surface the contradiction without accusing — make the rep resolve it.",
|
|
15
|
+
"disclaimer": null,
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Layered over every customer-service, billing, retention, claims, or escalation call. Activate any time a rep makes a factual claim about the account, the policy, the timeline, or what 'has to' happen next.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Agent is keeping a running ledger of every factual claim the rep makes (claim, time, exact wording).",
|
|
20
|
+
"Agent has access to the user's source documents (bill, contract, prior emails) for cross-check.",
|
|
21
|
+
"Agent is prepared to ask the rep to repeat or clarify without sounding hostile."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 5
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"Track every factual assertion in working memory with a timestamp. You cannot detect a contradiction you didn't record.",
|
|
27
|
+
"Most 'lies' on customer-service calls are not lies — they are scripted approximations, junior-rep guesses, or stale internal training. Treat contradictions as information, not as malice.",
|
|
28
|
+
"Never accuse. Ask. 'Help me reconcile this' beats 'you just said the opposite' every time.",
|
|
29
|
+
"When the rep contradicts themselves, the SECOND statement is usually the corrected one — but the FIRST statement often reveals the real script. Note both.",
|
|
30
|
+
"A contradiction with the written record (bill, email, contract) is worth more than a contradiction within the conversation. Documents don't forget.",
|
|
31
|
+
"Silence after surfacing a contradiction is the strongest move. Let the rep resolve it; don't rescue them."
|
|
32
|
+
],
|
|
33
|
+
"phrases": {
|
|
34
|
+
"log_claim_internally": "[Internal note] Rep said: '<exact words>' at <mm:ss>. Tag: <policy|fee|timeline|authority|identity>.",
|
|
35
|
+
"soft_surface": "I want to make sure I'm following — a minute ago I thought I heard <X>, and now it sounds like <Y>. Can you help me square those?",
|
|
36
|
+
"document_anchor": "On the bill in front of me dated <date>, it shows <Z>. How does that line up with what you just described?",
|
|
37
|
+
"ask_for_source": "Where in the policy is that written? I'd love to look at the exact language so I'm sure I understand.",
|
|
38
|
+
"request_replay": "Sorry — could you say that one more time, slowly? I want to write it down exactly.",
|
|
39
|
+
"park_and_proceed": "Okay, let's set that aside for a moment and come back to it. In the meantime, can we also look at <next item>?"
|
|
40
|
+
},
|
|
41
|
+
"tactics": [
|
|
42
|
+
{
|
|
43
|
+
"name": "Run a claim ledger",
|
|
44
|
+
"when": "From the first substantive sentence the rep speaks.",
|
|
45
|
+
"script": "After each rep claim, internally log: time, exact phrase, category. Do not paraphrase — paraphrasing loses the contradiction.",
|
|
46
|
+
"priority": 1
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "Cross-check against documents in real time",
|
|
50
|
+
"when": "Any claim about fees, dates, plan terms, or account history.",
|
|
51
|
+
"script": "Compare against the bill / contract / prior confirmation the user provided. If document and rep disagree, use `document_anchor`.",
|
|
52
|
+
"priority": 2
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "Soft-surface contradictions",
|
|
56
|
+
"when": "You catch a within-call contradiction.",
|
|
57
|
+
"script": "Use `soft_surface`. Tone is curious, not gotcha. Make it the rep's job to reconcile.",
|
|
58
|
+
"priority": 3
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "Ask for the source",
|
|
62
|
+
"when": "Rep cites 'policy' or 'system'.",
|
|
63
|
+
"script": "Use `ask_for_source`. Real policies have written text; invented ones do not. If the rep can't point to it, it isn't policy — it's their best guess.",
|
|
64
|
+
"priority": 4
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "Park and circle back",
|
|
68
|
+
"when": "Surfacing the contradiction risks derailing a still-productive call.",
|
|
69
|
+
"script": "Use `park_and_proceed`. Note the contradiction, keep moving on the primary goal, return to it before close."
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"alternative_interpretations": [
|
|
73
|
+
{
|
|
74
|
+
"observation": "Rep said the fee is $X, then later said it's $Y.",
|
|
75
|
+
"consider": [
|
|
76
|
+
"They mis-spoke once — most common.",
|
|
77
|
+
"They are reading two different screens (current bill vs. next bill cycle).",
|
|
78
|
+
"$X is the gross fee, $Y is after a promo credit — both true.",
|
|
79
|
+
"$X was a script default, $Y is the actual account — the second is usually right.",
|
|
80
|
+
"They are testing whether you'll notice."
|
|
81
|
+
],
|
|
82
|
+
"next_action": "Ask the rep which number applies to the user's next statement, and ask them to read the line item back."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"observation": "Rep said 'we can't do that' but the company website says it's available.",
|
|
86
|
+
"consider": [
|
|
87
|
+
"Rep is genuinely unaware — front-line training lags marketing by months.",
|
|
88
|
+
"It's available, but not from this department — ask which team handles it.",
|
|
89
|
+
"It's available, but requires a tier of account the user doesn't have.",
|
|
90
|
+
"The website is stale.",
|
|
91
|
+
"Rep is gatekeeping to protect a metric (handle time, save rate)."
|
|
92
|
+
],
|
|
93
|
+
"next_action": "Read the exact language from the page back to the rep. Ask them to check with a supervisor or transfer."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"observation": "Rep claims a policy that contradicts what a different rep said yesterday.",
|
|
97
|
+
"consider": [
|
|
98
|
+
"Policy genuinely changed between calls (rare in 24 hours).",
|
|
99
|
+
"One of the two reps invented an out — usually whichever was more convenient for the company.",
|
|
100
|
+
"Two different sub-policies apply and neither rep flagged which one.",
|
|
101
|
+
"Yesterday's rep made a one-time exception they had no authority to make."
|
|
102
|
+
],
|
|
103
|
+
"next_action": "Ask for the policy in writing — case number, supervisor, or an email. Anchor to documents."
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"boundaries": [
|
|
107
|
+
"Do NOT call the rep a liar, even when you are sure. Frame everything as 'help me reconcile'.",
|
|
108
|
+
"Do NOT pretend you have a recording or written evidence you do not have.",
|
|
109
|
+
"Do NOT escalate hostility just because you caught a contradiction — caught contradictions are leverage; spent leverage is wasted.",
|
|
110
|
+
"Do NOT abandon the primary goal of the call to win a contradiction debate."
|
|
111
|
+
],
|
|
112
|
+
"success_signals": [
|
|
113
|
+
"Rep corrects themselves voluntarily after you ask them to reconcile.",
|
|
114
|
+
"Rep escalates to a supervisor when challenged on policy source.",
|
|
115
|
+
"Rep agrees to send the relevant policy in writing.",
|
|
116
|
+
"Original ask becomes easier because the rep is now operating carefully."
|
|
117
|
+
],
|
|
118
|
+
"failure_signals": [
|
|
119
|
+
"Rep doubles down on both contradictory statements as if neither was said.",
|
|
120
|
+
"Rep becomes hostile and starts threatening to end the call.",
|
|
121
|
+
"Rep refuses to provide policy in writing or via a supervisor.",
|
|
122
|
+
"Contradictions multiply — sign of an off-script improv that won't stabilize. Time to hang up and call back (see `reset-by-callback`)."
|
|
123
|
+
],
|
|
124
|
+
"exit_strategy": {
|
|
125
|
+
"on_success": "Capture the reconciled answer in writing — confirmation number, supervisor name, or follow-up email. The reconciliation is the deliverable.",
|
|
126
|
+
"on_failure": "Politely end the call. Note all contradictions verbatim in the post-call report. Recommend callback to a different rep.",
|
|
127
|
+
"follow_ups": [
|
|
128
|
+
"File the claim ledger with the user.",
|
|
129
|
+
"If the contradiction is material (money, contract terms), recommend a written complaint and citing the exact wording."
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
"required_user_info": [
|
|
133
|
+
"Source documents the agent can cross-check against (bill, contract, prior emails).",
|
|
134
|
+
"Prior call notes if any.",
|
|
135
|
+
"Whether the user authorises requesting written follow-up."
|
|
136
|
+
],
|
|
137
|
+
"contributed_by": "critical-reasoning agent (v0.9.87 community drop)",
|
|
138
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
139
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dispute-billing-code-eob",
|
|
3
|
+
"name": "Dispute a Billing Code on an Explanation of Benefits (EOB)",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "medical-admin",
|
|
6
|
+
"tags": [
|
|
7
|
+
"billing",
|
|
8
|
+
"eob",
|
|
9
|
+
"claims",
|
|
10
|
+
"appeals",
|
|
11
|
+
"phone-call",
|
|
12
|
+
"insurance",
|
|
13
|
+
"healthcare"
|
|
14
|
+
],
|
|
15
|
+
"description": "Call the insurance company and/or provider's billing office to dispute an incorrect CPT/HCPCS/ICD-10 code, denied claim, or wrongly applied member responsibility on the operator's Explanation of Benefits. Includes filing for reprocessing and formal appeal when needed.",
|
|
16
|
+
"disclaimer": "Not medical advice. Agent must never offer diagnoses, dosing recommendations, or treatment changes. Surface those decisions to the operator via ask_operator.",
|
|
17
|
+
"context": {
|
|
18
|
+
"when_to_use": "Operator received an EOB showing they owe more than expected, a claim denied, or a code that doesn't match what actually happened at the visit. Common scenarios: preventive visit coded as diagnostic (loses $0 copay), out-of-network coding error, downcoded service, modifier missing, wrong patient demographics on claim.",
|
|
19
|
+
"preconditions": [
|
|
20
|
+
"Operator's name, DOB (read-only), insurance member ID + group (read-only).",
|
|
21
|
+
"The EOB itself — claim number, date of service, billing provider name and NPI, CPT/HCPCS code(s), ICD-10 code(s), billed amount, allowed amount, insurance paid, member responsibility, denial/adjustment reason codes.",
|
|
22
|
+
"Operator's account of what actually happened at the visit (in plain language, not clinical recoding).",
|
|
23
|
+
"Whether operator has already received a bill from the provider, and the bill date (appeal clocks start ticking).",
|
|
24
|
+
"Whether prior auth was obtained for the service (if relevant)."
|
|
25
|
+
],
|
|
26
|
+
"estimated_call_duration_minutes": 25
|
|
27
|
+
},
|
|
28
|
+
"principles": [
|
|
29
|
+
"An EOB is NOT a bill. Many disputes can be resolved BEFORE the provider's bill arrives by getting the insurer to reprocess the claim. Move fast.",
|
|
30
|
+
"Coding errors usually live with the PROVIDER's billing office, not the insurer. The insurer paid based on what was submitted. The fix is: provider re-submits with corrected coding.",
|
|
31
|
+
"Coverage / network / member-responsibility errors usually live with the INSURER. The fix is: reprocess with corrected benefits applied.",
|
|
32
|
+
"Diagnose which side owns the issue BEFORE assigning blame. Calling the insurer to fix a coding mistake just gets you bounced back to the provider, and vice versa.",
|
|
33
|
+
"Always document: who you spoke to, badge ID, reference number, date/time, and the specific commitment they made. Disputes that drag on for months are won by the side with the paper trail.",
|
|
34
|
+
"Internal appeal first, then external review. Don't pay the disputed amount before the appeal is decided — paying often legally finalises the bill."
|
|
35
|
+
],
|
|
36
|
+
"phrases": {
|
|
37
|
+
"opener_insurance": "Hi, I'm calling on behalf of [Operator], member ID [redacted]. I'm looking at EOB for claim [number], date of service [date], from provider [name]. The claim was processed in a way that doesn't match what happened at the visit, and I'd like to request a reprocess. Can you get me to a claims specialist?",
|
|
38
|
+
"opener_provider_billing": "Hi, I'm calling on behalf of [Operator]. I'm looking at the EOB for [date of service] and the coding doesn't match what happened. Can you connect me with someone who can review the CPT and diagnosis codes that were submitted?",
|
|
39
|
+
"diagnose_owner": "Just to align — based on what I'm describing, is this a CODING issue (your side / billing office) or a BENEFITS issue (insurance side)?",
|
|
40
|
+
"describe_factual_mismatch": "The EOB shows CPT [code] which describes [description]. What actually happened at the visit was [operator's plain-language description]. Those don't match, and I'd like the coding reviewed.",
|
|
41
|
+
"preventive_vs_diagnostic": "This was scheduled as a preventive / annual wellness visit. The CPT submitted was [diagnostic code], which is why member responsibility is non-zero. Can the provider's billing office re-bill with the appropriate preventive code, or add a modifier?",
|
|
42
|
+
"ask_for_reprocess": "I'd like to formally request a reprocess of this claim. What's the reference number for that request and the timeline?",
|
|
43
|
+
"request_internal_appeal": "If reprocessing doesn't resolve, I'd like to know the formal internal appeals process — the deadline, format required, and where to send documentation.",
|
|
44
|
+
"no_surprises_act_dispute": "Some or all of these charges may fall under the No Surprises Act if [out-of-network at in-network facility / emergency / ancillary]. Can you confirm the protections applied to this claim?",
|
|
45
|
+
"ask_about_hold_on_collections": "While this is in dispute, can you put a hold on collections / hold the bill from going to collections? The dispute is documented.",
|
|
46
|
+
"ask_for_reference_number": "Could you give me a reference number for this dispute, your name, and your badge or employee ID?",
|
|
47
|
+
"stall_research": "One moment — let me find the exact code on the EOB.",
|
|
48
|
+
"verify_readback": "Confirming: claim [number], date [date], dispute reason [coding mismatch / coverage error / network error], action [reprocess / appeal / re-bill], owner [insurer / provider], reference [number], expected resolution within [N] days. Rep [name + badge]. Right?",
|
|
49
|
+
"graceful_close": "Thank you. I'll follow up if I don't see resolution by [date]. Have a good day."
|
|
50
|
+
},
|
|
51
|
+
"tactics": [
|
|
52
|
+
{
|
|
53
|
+
"name": "Diagnose insurer vs. provider as the owner",
|
|
54
|
+
"when": "First substantive turn.",
|
|
55
|
+
"script": "Use `diagnose_owner`. Coding error → provider's billing. Benefits/network/eligibility error → insurer. Calling the wrong party first wastes a half-hour and warms up nothing useful.",
|
|
56
|
+
"priority": 1
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "Describe the mismatch factually",
|
|
60
|
+
"when": "Explaining the dispute.",
|
|
61
|
+
"script": "Use `describe_factual_mismatch`. Avoid 'this is wrong' or 'I shouldn't owe this'. Pin down: what was submitted vs. what actually happened, in concrete terms. Specific lands; outrage doesn't.",
|
|
62
|
+
"priority": 2
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "Spot preventive-coded-as-diagnostic early",
|
|
66
|
+
"when": "EOB shows non-zero member responsibility for what was supposed to be a wellness visit, screening, or vaccine.",
|
|
67
|
+
"script": "Use `preventive_vs_diagnostic`. This is one of the most common coding fixes. ACA preventive services are covered at $0 — if the provider used a diagnostic code (e.g. due to a problem discussed during the visit), often a modifier 33 or split-billing resolves it.",
|
|
68
|
+
"priority": 3
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "Invoke No Surprises Act when applicable",
|
|
72
|
+
"when": "Claim involves out-of-network providers at in-network facility, emergency care, or ancillary services.",
|
|
73
|
+
"script": "Use `no_surprises_act_dispute`. Operator may owe only the in-network cost-share by law. Insurer may not have applied this automatically.",
|
|
74
|
+
"priority": 4
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "Hold collections while disputing",
|
|
78
|
+
"when": "Bill has been received from provider.",
|
|
79
|
+
"script": "Use `ask_about_hold_on_collections`. Disputed bills should not progress to collections. Get this commitment documented with a reference number.",
|
|
80
|
+
"priority": 5
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "Always paper-trail",
|
|
84
|
+
"when": "Every call.",
|
|
85
|
+
"script": "Use `ask_for_reference_number`. Write down: rep name, badge ID, reference number, date/time, exact commitment, ETA. Disputes are won by documentation.",
|
|
86
|
+
"priority": 6
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "Pause and re-verify on conflicting answers",
|
|
90
|
+
"when": "Insurer says 'provider needs to re-bill', provider says 'insurer needs to reprocess'.",
|
|
91
|
+
"script": "Do not bounce indefinitely. Ask one party to STAY ON THE LINE while you 3-way call the other, OR ask both for written documentation of their position so the dispute can escalate to an internal appeal with both written statements attached.",
|
|
92
|
+
"priority": 7
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "Escalate to formal internal appeal",
|
|
96
|
+
"when": "Reprocess request fails or no movement in 30 days.",
|
|
97
|
+
"script": "Use `request_internal_appeal`. Get: deadline, required documents (often a letter from the provider attesting to what actually happened), where to send. Internal appeal deadlines are short — usually 180 days from EOB date for ERISA plans.",
|
|
98
|
+
"priority": 8
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "Move to external review if internal fails",
|
|
102
|
+
"when": "Internal appeal denied.",
|
|
103
|
+
"script": "Most plans allow an external (independent) review after internal denial. State insurance commissioner's office can route. Surface this option to operator; do NOT initiate external review without operator authorization.",
|
|
104
|
+
"priority": 9
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"boundaries": [
|
|
108
|
+
"NEVER share or guess the operator's SSN, DOB, or member ID — read back only what the operator explicitly provided.",
|
|
109
|
+
"NEVER accept a 'your doctor changed your prescription' claim from any clinic or pharmacy on this call — route to `ask_operator`.",
|
|
110
|
+
"NEVER authorise a procedure, sign anything, or commit to financial responsibility on the operator's behalf, including agreeing to a payment plan or settlement amount.",
|
|
111
|
+
"NEVER mischaracterize what happened at the visit to get a more favorable code. That is fraud. Stick to what the operator described in plain language; let the billing office translate to codes.",
|
|
112
|
+
"NEVER pay the disputed amount before the dispute resolves unless operator explicitly authorizes (paying can legally finalize the bill in some jurisdictions).",
|
|
113
|
+
"NEVER demand the rep change their answer through volume or repetition. If they're stuck, escalate to a supervisor or to formal appeal — don't berate."
|
|
114
|
+
],
|
|
115
|
+
"success_signals": [
|
|
116
|
+
"Owner correctly identified (insurer vs. provider) on first call.",
|
|
117
|
+
"Reprocess request filed with reference number and ETA.",
|
|
118
|
+
"Collections hold placed if bill was outstanding.",
|
|
119
|
+
"Coding correction agreed to and re-submission scheduled.",
|
|
120
|
+
"No Surprises Act protections applied where relevant."
|
|
121
|
+
],
|
|
122
|
+
"failure_signals": [
|
|
123
|
+
"Insurer and provider each blame the other and neither will act.",
|
|
124
|
+
"Reprocess denied and operator has not authorized escalation to formal appeal.",
|
|
125
|
+
"Appeal deadlines passed before dispute could be filed.",
|
|
126
|
+
"Provider has already sent to collections — separate skill required (collections dispute)."
|
|
127
|
+
],
|
|
128
|
+
"exit_strategy": {
|
|
129
|
+
"on_success": "Confirm: dispute filed, owner, reference number, action committed, ETA, collections hold (if applicable), and the operator's next step (typically: wait for written resolution).",
|
|
130
|
+
"on_failure": "Politely close. Report the impasse and present escalation options to operator: formal internal appeal, external review, state insurance commissioner complaint, or pay-under-protest.",
|
|
131
|
+
"follow_ups": [
|
|
132
|
+
"Set a reminder for the resolution ETA + 3 days.",
|
|
133
|
+
"If formal appeal filed, calendar the deadline.",
|
|
134
|
+
"Keep all EOBs, bills, and call notes in a single thread for the operator's records."
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
"required_user_info": [
|
|
138
|
+
"Operator's name, DOB (read-only), insurance plan + member ID + group (read-only)",
|
|
139
|
+
"EOB: claim number, date of service, billing provider + NPI, CPT/HCPCS, ICD-10, billed/allowed/paid amounts, member responsibility, denial reason codes",
|
|
140
|
+
"Operator's plain-language description of what happened at the visit",
|
|
141
|
+
"Whether provider's bill has been received and the bill date",
|
|
142
|
+
"Whether prior auth was obtained for the service",
|
|
143
|
+
"Operator's authorization to escalate to formal appeal if needed"
|
|
144
|
+
],
|
|
145
|
+
"contributed_by": "healthcare-navigator agent (v0.9.87 community drop)",
|
|
146
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
147
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dispute-charge-reg-e-reg-z",
|
|
3
|
+
"name": "Dispute a Debit or Credit Charge Under Reg E / Reg Z",
|
|
4
|
+
"version": "1.0.2",
|
|
5
|
+
"category": "finance-admin",
|
|
6
|
+
"tags": [
|
|
7
|
+
"dispute",
|
|
8
|
+
"regulation-e",
|
|
9
|
+
"regulation-z",
|
|
10
|
+
"billing-error",
|
|
11
|
+
"chargeback",
|
|
12
|
+
"phone-call",
|
|
13
|
+
"banking-finance"
|
|
14
|
+
],
|
|
15
|
+
"description": "Call the bank to dispute a specific charge that the user DID initially authorize but where something went wrong (merchant didn't deliver, charged twice, charged wrong amount, won't refund per their own policy). Different workflow from outright fraud: this is a billing-error / merchant-dispute case under Reg E (debit, EFTA) or Reg Z (credit, FCBA).",
|
|
16
|
+
"disclaimer": "Not financial or tax advice. Agent must NEVER share SSN unprompted, NEVER initiate wires above the operator's stated cap, NEVER agree to a hardship plan / settlement that affects credit without explicit ask_operator approval.",
|
|
17
|
+
"context": {
|
|
18
|
+
"when_to_use": "User authorized a transaction but the merchant: (a) charged more than agreed, (b) charged twice, (c) failed to deliver goods/services, (d) refused to honor their own refund policy, or (e) the recurring charge was supposed to be cancelled. Different from `report-fraudulent-transaction` — that's for charges the user never authorized at all.",
|
|
19
|
+
"preconditions": [
|
|
20
|
+
"User has attempted (or has a good-faith reason to skip) resolving directly with the merchant first — banks ask this.",
|
|
21
|
+
"User has the transaction details: date, amount, merchant name.",
|
|
22
|
+
"User has any supporting evidence: order confirmation, cancellation email, photos, terms-of-service screenshot, communication thread.",
|
|
23
|
+
"For credit cards: dispute filed within 60 days of the statement showing the charge (FCBA window).",
|
|
24
|
+
"For debit cards: dispute filed within 60 days of the statement (Reg E window for billing errors)."
|
|
25
|
+
],
|
|
26
|
+
"estimated_call_duration_minutes": 30
|
|
27
|
+
},
|
|
28
|
+
"principles": [
|
|
29
|
+
"Frame it as a 'billing error' or 'merchant dispute' — not fraud. Mislabeling as fraud can backfire when the merchant produces a receipt with the user's name on it.",
|
|
30
|
+
"Reg Z (FCBA) covers credit cards: written dispute within 60 days, bank must acknowledge within 30 days, resolve within 2 billing cycles (max 90 days). Reg E covers debit cards / EFTs: 60-day window for unauthorized EFTs, billing errors have shorter clocks.",
|
|
31
|
+
"Documentation wins disputes. Have the merchant's own refund policy ready, the cancellation confirmation, or the proof of non-delivery.",
|
|
32
|
+
"First-line reps often default to 'have you tried the merchant?' — answer once, clearly, with what was tried and when. Then move on.",
|
|
33
|
+
"Banks can issue a temporary credit while investigating — ask explicitly.",
|
|
34
|
+
"Get the case in writing. Phone disputes start the clock, but written confirmation locks the bank into Reg Z/Reg E timing requirements."
|
|
35
|
+
],
|
|
36
|
+
"phrases": {
|
|
37
|
+
"opener": "Hi, I need to file a billing-error dispute on a [credit / debit] charge. The charge was authorized but the merchant [didn't deliver / double-charged / charged the wrong amount / won't honor their refund policy]. I have documentation to support the claim.",
|
|
38
|
+
"state_the_merchant_attempts": "I contacted [Merchant] on [dates] by [phone / email / chat]. They said [outcome]. I'm now exercising my rights under [Regulation Z if credit / Regulation E if debit] to dispute this with the bank.",
|
|
39
|
+
"ask_temporary_credit": "While the investigation is pending, can the bank apply a temporary credit so I'm not paying interest on a disputed amount?",
|
|
40
|
+
"ask_billing_cycle_pause": "For the credit card: can you confirm that, while this is disputed, the disputed amount won't accrue interest or count toward late-payment fees per Reg Z?",
|
|
41
|
+
"ask_for_writing": "Can you confirm the dispute is opened in writing — a secure message in-app or an email summary? I'd like the case number and the regulatory timing in writing.",
|
|
42
|
+
"request_supervisor": "Could you bring in a dispute specialist or a supervisor? I want to make sure the case is coded correctly the first time — merchant dispute under [Reg E / Reg Z], not fraud.",
|
|
43
|
+
"upload_evidence_offer": "I have [order confirmation / cancellation email / refund-policy screenshot / tracking showing non-delivery]. Where should I upload it — secure message in-app, email, or fax?",
|
|
44
|
+
"graceful_close": "Thanks. Can you read back the case number, the disputed amount, the temporary credit (if any), and the deadline by which the bank expects to resolve? I'd like that summary in writing."
|
|
45
|
+
},
|
|
46
|
+
"tactics": [
|
|
47
|
+
{
|
|
48
|
+
"name": "Open with the correct label",
|
|
49
|
+
"when": "First substantive turn.",
|
|
50
|
+
"script": "Use `opener`. Say 'billing error' or 'merchant dispute' — NOT 'fraud'. Misclassifying triggers the wrong workflow and can be denied when the merchant proves you authorized the initial charge.",
|
|
51
|
+
"priority": 1
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "Answer 'did you try the merchant' once, completely",
|
|
55
|
+
"when": "Rep asks about prior merchant contact.",
|
|
56
|
+
"script": "Use `state_the_merchant_attempts`. Be specific about dates and channels. Then redirect to the dispute.",
|
|
57
|
+
"priority": 2
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "Anchor in the regulation",
|
|
61
|
+
"when": "Rep seems to be improvising the process.",
|
|
62
|
+
"script": "Name the regulation explicitly — Reg Z (credit) or Reg E (debit). Reps are trained on these; using the name signals competence and triggers the right workflow.",
|
|
63
|
+
"priority": 3
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "Ask for temporary credit",
|
|
67
|
+
"when": "Claim is opened.",
|
|
68
|
+
"script": "Use `ask_temporary_credit`. For credit cards, also use `ask_billing_cycle_pause` — Reg Z prohibits collecting on a disputed amount during the investigation.",
|
|
69
|
+
"priority": 4
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "Upload evidence promptly",
|
|
73
|
+
"when": "Rep asks if you have supporting documentation.",
|
|
74
|
+
"script": "Use `upload_evidence_offer`. Banks resolve documented disputes faster. Upload via secure in-app message, never plain email.",
|
|
75
|
+
"priority": 5
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "Escalate if miscoded",
|
|
79
|
+
"when": "Rep says 'we'll file this as fraud' or 'we can't dispute, it's authorized.'",
|
|
80
|
+
"script": "Use `request_supervisor`. Repeat: this is a Reg [E/Z] billing-error dispute, not fraud."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "Lock in the writeback",
|
|
84
|
+
"when": "Claim filed, evidence uploaded.",
|
|
85
|
+
"script": "Use `graceful_close`. Case number + amount + temporary credit + resolution deadline + rep name. In writing."
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"boundaries": [
|
|
89
|
+
"Do NOT label this as fraud just to speed the call — if the merchant produces a receipt, a miscoded fraud claim gets denied AND can flag the user's account.",
|
|
90
|
+
"Do NOT lie about whether you contacted the merchant — banks ask the merchant, who shows the call/chat logs.",
|
|
91
|
+
"Do NOT agree to a 'reversal' that closes the merchant relationship without checking whether the user has services still pending with that merchant.",
|
|
92
|
+
"Do NOT share more identifying info than needed — last 4 of SSN and the card number are typically sufficient.",
|
|
93
|
+
"Do NOT close without case number, written summary path, and the resolution deadline.",
|
|
94
|
+
"Do NOT accept a verbal 'the merchant provided proof' as a closer. The bank must produce the documentation it relied on — under Reg E/Z the consumer has the right to a copy. Without seeing the evidence the bank cannot fairly close the dispute.",
|
|
95
|
+
"Do NOT withdraw the dispute on the phone because the rep says 'it'll be denied anyway'. A denial creates a documented record you can escalate; a withdrawal closes the door."
|
|
96
|
+
],
|
|
97
|
+
"success_signals": [
|
|
98
|
+
"Rep codes it correctly as 'billing error' / 'merchant dispute' under Reg E or Reg Z.",
|
|
99
|
+
"Temporary credit applied or scheduled.",
|
|
100
|
+
"Rep confirms interest pause on credit-card disputes.",
|
|
101
|
+
"Evidence upload path provided and accessible.",
|
|
102
|
+
"Resolution deadline given (typically 30 days acknowledge / 90 days resolve for Reg Z)."
|
|
103
|
+
],
|
|
104
|
+
"failure_signals": [
|
|
105
|
+
"Rep refuses to file because 'you authorized it' — they're conflating fraud with billing error.",
|
|
106
|
+
"Rep insists on a paper-only filing (push for digital).",
|
|
107
|
+
"No case number after 20 minutes — escalate.",
|
|
108
|
+
"Rep tells you to call back after attempting merchant again, despite documented attempts.",
|
|
109
|
+
"Rep claims 'the merchant provided proof you authorized this' but cannot or will not send the proof — the consumer is entitled to it under Reg E/Z.",
|
|
110
|
+
"Rep urges you to 'withdraw the dispute and try the merchant one more time' — that closes your case without a documented denial and resets the regulatory clock."
|
|
111
|
+
],
|
|
112
|
+
"exit_strategy": {
|
|
113
|
+
"on_success": "Confirm case number, disputed amount, temporary-credit status, evidence-upload path, written-summary delivery, resolution deadline. Email operator with the case details + calendar a check-back at the 30-day mark.",
|
|
114
|
+
"on_failure": "Get case number anyway. If miscoded as fraud, escalate to dispute specialist. If repeatedly blocked, file a CFPB complaint and consider a small-claims action vs. the merchant. Surface to operator for approval to escalate.",
|
|
115
|
+
"follow_ups": [
|
|
116
|
+
"Day 30: confirm acknowledgment received in writing (Reg Z 30-day rule).",
|
|
117
|
+
"Day 60: check status — many banks resolve at this mark.",
|
|
118
|
+
"Day 90: final resolution deadline — if not resolved, escalate to CFPB."
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"required_user_info": [
|
|
122
|
+
"Account / card last 4",
|
|
123
|
+
"Transaction details: date, amount, merchant name",
|
|
124
|
+
"Reason for dispute (non-delivery, double-charge, wrong amount, refund refused, recurring after cancel)",
|
|
125
|
+
"Summary of merchant-contact attempts: dates, channels, outcomes",
|
|
126
|
+
"Supporting evidence files ready to upload",
|
|
127
|
+
"Operator-approved threshold for any further escalation costs"
|
|
128
|
+
],
|
|
129
|
+
"contributed_by": "banking-finance agent (v0.9.87 community drop)",
|
|
130
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
131
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dispute-credit-report-via-bank",
|
|
3
|
+
"name": "Dispute a Credit-Report Item Directly With the Furnisher Bank",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "finance-admin",
|
|
6
|
+
"tags": [
|
|
7
|
+
"credit-report",
|
|
8
|
+
"fcra",
|
|
9
|
+
"furnisher-dispute",
|
|
10
|
+
"credit-bureau",
|
|
11
|
+
"metro-2",
|
|
12
|
+
"phone-call",
|
|
13
|
+
"banking-finance"
|
|
14
|
+
],
|
|
15
|
+
"description": "Call the bank that REPORTED a wrong item to a credit bureau and request a correction at the source. Disputing with the bureau is the well-known path; disputing with the FURNISHER (the bank that reported it) is the higher-leverage path under the FCRA — they own the original data and have a 30-day duty to investigate.",
|
|
16
|
+
"disclaimer": "Not financial or tax advice. Agent must NEVER share SSN unprompted, NEVER initiate wires above the operator's stated cap, NEVER agree to a hardship plan / settlement that affects credit without explicit ask_operator approval.",
|
|
17
|
+
"context": {
|
|
18
|
+
"when_to_use": "User finds a wrong item on their Equifax / Experian / TransUnion report: an inaccurate late payment, an account that isn't theirs, a balance that's wrong, a status that's wrong (charge-off vs paid, closed vs open), or an account still appearing after it should have aged off. Bureau disputes are easy but the bureau just asks the bank — going directly to the bank is faster and creates a stronger paper trail under FCRA section 623.",
|
|
19
|
+
"preconditions": [
|
|
20
|
+
"User has pulled credit reports from all three bureaus (free at annualcreditreport.com).",
|
|
21
|
+
"Specific item identified: bureau, account number, what's wrong, what it should be.",
|
|
22
|
+
"User has supporting documentation: statements, paid-off letters, account-closure confirmations, identity-theft report if applicable.",
|
|
23
|
+
"User has NOT yet disputed this specific item with the bureau in the last 30 days (parallel disputes can create conflicting records).",
|
|
24
|
+
"User's identity verification info ready (last 4 SSN, full name as it appears on the account)."
|
|
25
|
+
],
|
|
26
|
+
"estimated_call_duration_minutes": 30
|
|
27
|
+
},
|
|
28
|
+
"principles": [
|
|
29
|
+
"Furnisher direct disputes under FCRA section 623 carry the same 30-day investigation duty as bureau disputes, but with the original-data holder. Faster, often more thorough.",
|
|
30
|
+
"Be precise about what is wrong AND what the correct value is. 'This account shows a 30-day late in March 2024; it should be paid as agreed because I have the autopay confirmation.' Vague disputes get rubber-stamped 'verified as accurate.'",
|
|
31
|
+
"Always FOLLOW UP in writing. Phone starts the clock under most banks' policies, but written submission to the credit-disputes address (NOT customer service) is the official record. Send certified mail or use the secure-message system.",
|
|
32
|
+
"Banks report to bureaus using the METRO 2 format. The fields you care about: account status code, payment history grid, date opened, date of last activity, balance, high credit. Asking 'which Metro 2 field is wrong?' signals competence and unlocks better help.",
|
|
33
|
+
"Pulling the credit report fresh AFTER the 30-day window confirms whether the correction was made. If it wasn't — the FCRA gives the user a private right of action and statutory damages.",
|
|
34
|
+
"Goodwill adjustments (asking the bank to remove an accurate-but-damaging late) are a SEPARATE workflow, NOT a dispute. Don't conflate — disputes are for incorrect data only."
|
|
35
|
+
],
|
|
36
|
+
"phrases": {
|
|
37
|
+
"opener": "Hi, I'd like to file a direct dispute under FCRA section 623 on an item the bank is reporting to the credit bureaus. The item is on my [Equifax / Experian / TransUnion] report — account ending in [last 4]. The specific inaccuracy is [precise description]. The correct value is [what it should be].",
|
|
38
|
+
"ask_for_credit_disputes_team": "Can you transfer me to the credit-disputes or credit-bureau-reporting team? Front-line customer service usually can't process furnisher disputes directly.",
|
|
39
|
+
"specify_the_field": "The item shows [field name / value] but should be [correct value]. In Metro 2 terms, I believe this is the [account status / payment history grid / DOLA / balance] field. Can you confirm which field is being disputed in your system?",
|
|
40
|
+
"documentation_offer": "I have [statements / paid-in-full letter / closure confirmation / identity-theft report]. Where do I submit it — secure message, fax, mail? I want documentation in the file before the investigation closes.",
|
|
41
|
+
"ask_about_aud": "After the investigation, will you send an AUD (Automated Universal Data form) update to all three bureaus, or only the bureau the report was pulled from? I'd like the correction propagated to all three.",
|
|
42
|
+
"ask_for_written_confirmation": "Can you send written confirmation that the dispute is open under FCRA 623 — the dispute description, the 30-day clock start date, and the case number?",
|
|
43
|
+
"follow_up_request": "Within 30 days, will you send me the investigation result in writing, including the Metro 2 field values you'll be reporting going forward?",
|
|
44
|
+
"graceful_close": "Thanks. Can you confirm: dispute opened under FCRA 623, case number [###], 30-day clock starts [date], correction will propagate to all three bureaus, and I'll receive written confirmation. Please give me your name."
|
|
45
|
+
},
|
|
46
|
+
"tactics": [
|
|
47
|
+
{
|
|
48
|
+
"name": "Route to the credit-disputes team",
|
|
49
|
+
"when": "Connected to CS.",
|
|
50
|
+
"script": "Use `ask_for_credit_disputes_team`. Furnisher-dispute workflow lives in a specific back-office team, not in front-line CS.",
|
|
51
|
+
"priority": 1
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "Open with FCRA 623 wording",
|
|
55
|
+
"when": "First substantive turn with the right team.",
|
|
56
|
+
"script": "Use `opener`. Mentioning section 623 explicitly anchors the bank's duty: investigate, correct, propagate to bureaus within 30 days.",
|
|
57
|
+
"priority": 2
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "Specify the field, not just the impression",
|
|
61
|
+
"when": "Rep asks what's wrong.",
|
|
62
|
+
"script": "Use `specify_the_field`. Different Metro 2 fields have different correction paths — being specific shortens the investigation.",
|
|
63
|
+
"priority": 3
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "Upload documentation in the same call",
|
|
67
|
+
"when": "Dispute is opened.",
|
|
68
|
+
"script": "Use `documentation_offer`. Banks often resolve documented disputes faster because the rep can attach the proof to the case file immediately."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "Demand AUD propagation",
|
|
72
|
+
"when": "Resolution timing is discussed.",
|
|
73
|
+
"script": "Use `ask_about_aud`. Without an AUD, the correction may only update one bureau, leaving the other two wrong."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Get written confirmation of the open dispute",
|
|
77
|
+
"when": "Mid-call.",
|
|
78
|
+
"script": "Use `ask_for_written_confirmation`. The 30-day clock under FCRA 623 needs a start date in writing — protects the user if escalation to CFPB or court is needed."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "Schedule the follow-up pull",
|
|
82
|
+
"when": "Closing.",
|
|
83
|
+
"script": "Calendar a credit-report pull at day 35 to confirm the change posted on all three bureaus."
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"boundaries": [
|
|
87
|
+
"Do NOT dispute items that are accurate. Filing frivolous disputes can have your dispute marked 'frivolous or irrelevant' and ignored under FCRA 611(a)(3).",
|
|
88
|
+
"Do NOT confuse a furnisher dispute (this skill) with a goodwill request (separate; for accurate-but-unflattering items). Wrong framing = denied.",
|
|
89
|
+
"Do NOT file a parallel bureau dispute while the furnisher dispute is open — conflicting investigation paths confuse the record.",
|
|
90
|
+
"Do NOT settle for a verbal 'we'll look into it'. Get a case number and written confirmation, or it didn't happen.",
|
|
91
|
+
"Do NOT share full SSN — last 4 is enough for almost all dispute workflows.",
|
|
92
|
+
"Do NOT accept a correction that only updates one bureau when the wrong item is on multiple — push for AUD propagation."
|
|
93
|
+
],
|
|
94
|
+
"success_signals": [
|
|
95
|
+
"Transferred to the credit-disputes / credit-bureau-reporting team (not CS).",
|
|
96
|
+
"Dispute opened under FCRA section 623 with a case number.",
|
|
97
|
+
"Specific Metro 2 field identified.",
|
|
98
|
+
"Documentation uploaded into the case file.",
|
|
99
|
+
"AUD propagation to all three bureaus confirmed.",
|
|
100
|
+
"Written confirmation of open dispute promised."
|
|
101
|
+
],
|
|
102
|
+
"failure_signals": [
|
|
103
|
+
"Rep insists you 'must dispute with the bureau first' (not true — FCRA 623 allows direct furnisher dispute).",
|
|
104
|
+
"Rep refuses to identify the Metro 2 field.",
|
|
105
|
+
"Case opened but no 30-day clock acknowledged.",
|
|
106
|
+
"Bank claims the item is 'verified as accurate' without explaining what was checked (push for documentation of what they verified)."
|
|
107
|
+
],
|
|
108
|
+
"exit_strategy": {
|
|
109
|
+
"on_success": "Calendar day 35 to pull credit reports and confirm correction. Surface case number and rep name to operator. Keep documentation for 2+ years.",
|
|
110
|
+
"on_failure": "If furnisher denies the dispute or doesn't respond within 30 days: file a CFPB complaint, file a bureau dispute as a second channel, and consult an FCRA attorney about statutory damages. Inform operator and request approval to escalate.",
|
|
111
|
+
"follow_ups": [
|
|
112
|
+
"Day 30: written investigation result expected.",
|
|
113
|
+
"Day 35: pull credit reports from all 3 bureaus to verify correction posted.",
|
|
114
|
+
"If not corrected: CFPB complaint + bureau dispute + consider counsel.",
|
|
115
|
+
"Keep all written confirmations and the original dispute letter for at least 2 years."
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"required_user_info": [
|
|
119
|
+
"Bureau(s) where the item appears (Equifax / Experian / TransUnion)",
|
|
120
|
+
"Account number from the report (or last 4)",
|
|
121
|
+
"Exact inaccuracy: what is reported vs what should be reported",
|
|
122
|
+
"Supporting documentation files",
|
|
123
|
+
"Whether a parallel bureau dispute is already open",
|
|
124
|
+
"Operator approval to file CFPB complaint if needed"
|
|
125
|
+
],
|
|
126
|
+
"contributed_by": "banking-finance agent (v0.9.87 community drop)",
|
|
127
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
128
|
+
}
|