@agenticmail/core 0.9.32 → 0.9.34

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.
Files changed (163) hide show
  1. package/dist/index.d.cts +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/skills/built-in/accommodation-intake.json +132 -0
  4. package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
  5. package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
  6. package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
  7. package/dist/skills/built-in/anti-social-engineering.json +153 -0
  8. package/dist/skills/built-in/anything-else-sweep.json +120 -0
  9. package/dist/skills/built-in/apologise-correctly.json +126 -0
  10. package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
  11. package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
  12. package/dist/skills/built-in/bant-discovery-call.json +125 -0
  13. package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
  14. package/dist/skills/built-in/bookmark-close.json +113 -0
  15. package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
  16. package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
  17. package/dist/skills/built-in/calibrated-questions.json +155 -0
  18. package/dist/skills/built-in/call-911-fire.json +118 -0
  19. package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
  20. package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
  21. package/dist/skills/built-in/call-988-crisis-line.json +128 -0
  22. package/dist/skills/built-in/call-poison-control.json +115 -0
  23. package/dist/skills/built-in/call-police-non-emergency.json +114 -0
  24. package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
  25. package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
  26. package/dist/skills/built-in/cancel-policy-clean.json +130 -0
  27. package/dist/skills/built-in/capture-rep-identity.json +113 -0
  28. package/dist/skills/built-in/childcare-provider-intake.json +157 -0
  29. package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
  30. package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
  31. package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
  32. package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
  33. package/dist/skills/built-in/contractor-estimate-request.json +142 -0
  34. package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
  35. package/dist/skills/built-in/cpa-intake-call.json +134 -0
  36. package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
  37. package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
  38. package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
  39. package/dist/skills/built-in/deliver-difficult-news.json +122 -0
  40. package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
  41. package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
  42. package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
  43. package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
  44. package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
  45. package/dist/skills/built-in/dispute-denied-claim.json +143 -0
  46. package/dist/skills/built-in/dispute-security-deposit.json +130 -0
  47. package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
  48. package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
  49. package/dist/skills/built-in/document-call-promises.json +145 -0
  50. package/dist/skills/built-in/early-lease-termination.json +126 -0
  51. package/dist/skills/built-in/elite-line-escalation.json +107 -0
  52. package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
  53. package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
  54. package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
  55. package/dist/skills/built-in/file-habitability-complaint.json +115 -0
  56. package/dist/skills/built-in/financial-aid-appeal.json +128 -0
  57. package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
  58. package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
  59. package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
  60. package/dist/skills/built-in/handle-callback-stall.json +120 -0
  61. package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
  62. package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
  63. package/dist/skills/built-in/handle-time-pressure.json +159 -0
  64. package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
  65. package/dist/skills/built-in/hoa-dispute.json +123 -0
  66. package/dist/skills/built-in/hold-time-strategy.json +137 -0
  67. package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
  68. package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
  69. package/dist/skills/built-in/humour-when-it-lands.json +127 -0
  70. package/dist/skills/built-in/i20-visa-dso.json +134 -0
  71. package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
  72. package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
  73. package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
  74. package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
  75. package/dist/skills/built-in/late-add-petition.json +128 -0
  76. package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
  77. package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
  78. package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
  79. package/dist/skills/built-in/medical-records-transfer.json +138 -0
  80. package/dist/skills/built-in/medical-withdrawal.json +131 -0
  81. package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
  82. package/dist/skills/built-in/mirror-technique.json +145 -0
  83. package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
  84. package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
  85. package/dist/skills/built-in/move-out-walkthrough.json +114 -0
  86. package/dist/skills/built-in/multi-channel-escalation.json +141 -0
  87. package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
  88. package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
  89. package/dist/skills/built-in/no-as-opening.json +154 -0
  90. package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
  91. package/dist/skills/built-in/outage-credit-applied.json +127 -0
  92. package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
  93. package/dist/skills/built-in/pediatric-school-forms.json +141 -0
  94. package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
  95. package/dist/skills/built-in/pharmacy-callback.json +134 -0
  96. package/dist/skills/built-in/pivot-mid-call.json +141 -0
  97. package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
  98. package/dist/skills/built-in/prescription-refill-followup.json +132 -0
  99. package/dist/skills/built-in/push-past-invented-policy.json +159 -0
  100. package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
  101. package/dist/skills/built-in/reach-executive-office.json +137 -0
  102. package/dist/skills/built-in/read-vocal-cues.json +139 -0
  103. package/dist/skills/built-in/read-vocal-tone.json +159 -0
  104. package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
  105. package/dist/skills/built-in/receive-difficult-news.json +115 -0
  106. package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
  107. package/dist/skills/built-in/recover-summary-refusal.json +121 -0
  108. package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
  109. package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
  110. package/dist/skills/built-in/referral-prior-authorization.json +130 -0
  111. package/dist/skills/built-in/refuse-the-split.json +142 -0
  112. package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
  113. package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
  114. package/dist/skills/built-in/rental-scam-report.json +125 -0
  115. package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
  116. package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
  117. package/dist/skills/built-in/report-elder-or-child-abuse.json +125 -0
  118. package/dist/skills/built-in/report-fbi-tip.json +116 -0
  119. package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
  120. package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
  121. package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
  122. package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
  123. package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
  124. package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
  125. package/dist/skills/built-in/request-welfare-check.json +127 -0
  126. package/dist/skills/built-in/request-written-confirmation.json +113 -0
  127. package/dist/skills/built-in/reschedule-appointment.json +121 -0
  128. package/dist/skills/built-in/reset-by-callback.json +143 -0
  129. package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
  130. package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
  131. package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
  132. package/dist/skills/built-in/roommate-replacement.json +121 -0
  133. package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
  134. package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
  135. package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
  136. package/dist/skills/built-in/social-security-replacement-card.json +122 -0
  137. package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
  138. package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
  139. package/dist/skills/built-in/stop-recurring-ach.json +127 -0
  140. package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
  141. package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
  142. package/dist/skills/built-in/therapist-intake-call.json +133 -0
  143. package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
  144. package/dist/skills/built-in/transcript-request.json +128 -0
  145. package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
  146. package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
  147. package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
  148. package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
  149. package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
  150. package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
  151. package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
  152. package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
  153. package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
  154. package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
  155. package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
  156. package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
  157. package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
  158. package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
  159. package/dist/skills/built-in/walkaway-threats.json +159 -0
  160. package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
  161. package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
  162. package/dist/skills/built-in/wire-funds-safely.json +129 -0
  163. package/package.json +1 -1
@@ -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
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "id": "dispute-denied-claim",
3
+ "name": "Dispute a Denied Claim (Demand Adjuster + Written Denial Reason)",
4
+ "version": "1.0.1",
5
+ "category": "finance-admin",
6
+ "tags": [
7
+ "claim",
8
+ "denial",
9
+ "dispute",
10
+ "appeal",
11
+ "written-reason",
12
+ "phone-call",
13
+ "insurance"
14
+ ],
15
+ "description": "Push back on a claim denial — get the SPECIFIC denial reason in writing, identify the policy language the carrier is citing, and open the formal appeal channel. Most denials cite vague reasons verbally; the written denial often reveals the carrier's actual basis (or its absence).",
16
+ "disclaimer": "Agent must NEVER admit fault, NEVER agree to a settlement on the operator's behalf, NEVER speculate about prior conditions, NEVER sign a release. All of those route through ask_operator.",
17
+ "context": {
18
+ "when_to_use": "Carrier has denied a claim (in writing, verbally, or by silence past the statutory window). The user wants to dispute. Use BEFORE engaging an attorney or filing a DOI complaint — the written denial reason is often the document the next stage needs.",
19
+ "preconditions": [
20
+ "Claim number and adjuster name known.",
21
+ "User has the denial communication if one exists (letter, email, voicemail).",
22
+ "User has a copy of the policy (declarations page + full contract).",
23
+ "User has documentation of the loss (photos, repair estimates, police report, medical records as applicable)."
24
+ ],
25
+ "estimated_call_duration_minutes": 30
26
+ },
27
+ "principles": [
28
+ "A denial without a SPECIFIC policy-language citation is not a denial — it's an opinion. Force the citation.",
29
+ "Carriers often deny verbally hoping the policyholder gives up. A written denial is a legal document with appeal rights.",
30
+ "Every state requires a written denial with specific reasons. If the carrier won't put it in writing, that itself is a regulatory violation.",
31
+ "The appeal process is usually documented in the policy. Read it before the call and reference it back to the adjuster.",
32
+ "Tone matters: 'I want to understand the specific basis' lands very differently from 'this is bullshit'. Both are accurate; one gets you the document.",
33
+ "Verbal-only gaslights to refuse: 'an appeal was already submitted and denied' (require: appeal-decision letter ID + date), 'there's no appeal available on this kind of claim' (state law almost always provides one), 'the system shows you accepted the denial' (demand the document or recording that says so). Each of those, said without supporting paperwork, is a stall — not a fact."
34
+ ],
35
+ "phrases": {
36
+ "opener": "Hi, I'm calling about claim [number]. I understand the carrier has [denied / partially denied / refused to cover] this claim. I'd like to get the specific policy language being cited, in writing, and start the formal appeal process.",
37
+ "demand_specific_citation": "Could you tell me the specific section and language of the policy that the carrier is relying on for this denial? Section, page, or exclusion number — whatever the carrier's denial committee referenced.",
38
+ "demand_written_denial": "I need the denial in writing, with the specific policy language cited, and with the appeal rights and deadlines included. When can I expect that letter?",
39
+ "ask_about_appeal_path": "What is the formal appeal process for this denial? Internal appeal, external review, who decides, what's the deadline, and what evidence am I allowed to submit?",
40
+ "request_claim_file": "I'd like to request a copy of the full claim file — adjuster notes, photos, estimates, any expert reports. I understand most states give policyholders that right.",
41
+ "decline_to_re_argue_facts": "I'd rather not re-litigate the facts on this call. The facts are documented. What I need from you is the policy-language basis for the denial and the appeal process.",
42
+ "log_callback": "Could I get your full name, direct extension, and a reference number for this call?",
43
+ "graceful_close": "Thank you. To confirm: the written denial with policy citation will arrive by [date], the appeal deadline is [date], and the appeal is submitted to [name/address]. I'll be in touch."
44
+ },
45
+ "tactics": [
46
+ {
47
+ "name": "Open with the specific deliverable",
48
+ "when": "First substantive turn.",
49
+ "script": "Use the `opener` phrase. Three deliverables: (1) specific policy language, (2) written denial, (3) appeal path. Don't accept the call ending without all three.",
50
+ "priority": 1
51
+ },
52
+ {
53
+ "name": "Force a citation",
54
+ "when": "Rep gives a vague reason ('the loss isn't covered', 'pre-existing condition', 'not a covered peril').",
55
+ "script": "Use the `demand_specific_citation` phrase. A real denial has a section number. If the rep can't produce one, that itself is significant — log it.",
56
+ "priority": 2
57
+ },
58
+ {
59
+ "name": "Demand a written denial",
60
+ "when": "Rep has given only a verbal denial.",
61
+ "script": "Use the `demand_written_denial` phrase. Most states REQUIRE a written denial with specifics. Carriers stalling on this are violating regulation — and they know it.",
62
+ "priority": 3
63
+ },
64
+ {
65
+ "name": "Ask about the appeal path",
66
+ "when": "Denial is confirmed.",
67
+ "script": "Use the `ask_about_appeal_path` phrase. Many policies have a 60-180 day internal appeal window. Missing it forfeits the easiest remedy.",
68
+ "priority": 4
69
+ },
70
+ {
71
+ "name": "Request the claim file",
72
+ "when": "Late in the call, after appeal path is identified.",
73
+ "script": "Use the `request_claim_file` phrase. The adjuster notes often reveal the actual reasoning vs the official denial. Most states grant policyholders access to the claim file on request.",
74
+ "priority": 5
75
+ },
76
+ {
77
+ "name": "Refuse to re-argue facts on this call",
78
+ "when": "Rep tries to relitigate what happened, who was at fault, or the user's behavior.",
79
+ "script": "Use the `decline_to_re_argue_facts` phrase. The denial-call's job is to extract the document and the appeal path, not to convince the line rep.",
80
+ "priority": 6
81
+ },
82
+ {
83
+ "name": "Get the supervisor if the rep won't produce a citation",
84
+ "when": "Front-line rep can't or won't produce specific policy language.",
85
+ "script": "Politely escalate. 'I appreciate that you may not have the file in front of you. Could you transfer me to the claims supervisor or denial reviewer who can?'",
86
+ "priority": 7
87
+ },
88
+ {
89
+ "name": "Refuse the 'no appeal available' gaslight",
90
+ "when": "Rep claims the policy has no appeal mechanism OR that the appeal window has 'already closed' OR that an appeal was 'already adjudicated' — but cannot produce the relevant document.",
91
+ "script": "'I'd like to see that in writing. Could you cite the policy section that excludes appeal rights, OR send me the prior appeal decision letter with its date? State insurance regulations generally require an appeal path on every denial — if mine is different, I need the document showing that.' If the rep cannot produce the document, the claim is NOT closed — proceed as if appeal rights are open and escalate to the supervisor + DOI complaint.",
92
+ "priority": 8,
93
+ "decision_point": "If the rep insists no appeal exists but won't put it in writing — treat that refusal as ITSELF the next escalation hook. The refusal letter (or refusal-to-refuse) is one of the strongest pieces of evidence for a DOI complaint and a bad-faith claim."
94
+ },
95
+ {
96
+ "name": "STOP and re-evaluate before signing or withdrawing anything",
97
+ "when": "Rep proposes any document for the operator to sign, OR asks the operator to 'just confirm verbally' that they accept the denial, OR offers a quick settlement contingent on withdrawing the claim.",
98
+ "script": "Hard pause. 'I won't sign or verbally accept anything on this call — every signature or release goes through the operator's review. Please email me a copy of whatever you'd like me to consider, and I'll respond after review.' If pushed, end the call politely and route to `ask_operator` BEFORE any acceptance.",
99
+ "priority": 9
100
+ }
101
+ ],
102
+ "boundaries": [
103
+ "Do NOT accept a verbal denial as final. Always demand written.",
104
+ "Do NOT admit fault, restate the facts in ways that could be characterised as admission, or speculate about pre-existing conditions.",
105
+ "Do NOT agree to withdraw or close the claim on this call.",
106
+ "Do NOT sign anything in response to a denial letter without `ask_operator` — release language often hides in 'acknowledgment' forms.",
107
+ "Do NOT miss the appeal deadline. Calendar it the moment it's confirmed."
108
+ ],
109
+ "success_signals": [
110
+ "Rep names a specific policy section/exclusion.",
111
+ "Rep commits to a written denial with citation and appeal rights by a specific date.",
112
+ "Rep identifies the appeal contact, deadline, and evidence rules.",
113
+ "Supervisor joins and reconsiders.",
114
+ "Claim file is offered for release."
115
+ ],
116
+ "failure_signals": [
117
+ "Rep refuses to put the denial in writing.",
118
+ "Rep cannot cite specific policy language.",
119
+ "Rep insists no appeal exists.",
120
+ "Rep tries to extract a withdrawal or release on the call.",
121
+ "Rep gaslights with 'you already appealed' / 'you already accepted' but cannot produce the decision letter or recording.",
122
+ "Rep frames closure as routine ('let's just close this out today') without offering written denial or appeal path — that's a claims-side save attempt."
123
+ ],
124
+ "exit_strategy": {
125
+ "on_success": "Read back: written-denial date, appeal deadline, appeal submission target, evidence rules, claim-file delivery date. Email a recap immediately. Calendar the appeal deadline.",
126
+ "on_failure": "Document the refusal. Route to `ask_operator` with two recommendations: (1) certified-mail demand for written denial citing the state's UCSPA, (2) DOI complaint. Consider attorney referral if the loss is significant.",
127
+ "follow_ups": [
128
+ "Email a recap of the call within 1 hour.",
129
+ "Calendar the appeal deadline with 7-day and 1-day reminders.",
130
+ "Begin preparing the appeal packet (evidence + a written argument rebutting the cited section).",
131
+ "If written denial doesn't arrive, escalate via DOI."
132
+ ]
133
+ },
134
+ "required_user_info": [
135
+ "Claim number and adjuster name",
136
+ "Existing denial communication (if any)",
137
+ "Policy document",
138
+ "All evidence files (photos, estimates, reports)",
139
+ "Operator's preference on attorney engagement if appeal fails"
140
+ ],
141
+ "contributed_by": "insurance-claims agent (v0.9.87 community drop)",
142
+ "updated_at": "2026-05-20T06:09:47Z"
143
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "id": "dispute-security-deposit",
3
+ "name": "Dispute a Withheld Security Deposit",
4
+ "version": "1.0.1",
5
+ "category": "real-estate",
6
+ "tags": [
7
+ "security-deposit",
8
+ "move-out",
9
+ "itemization",
10
+ "small-claims",
11
+ "landlord",
12
+ "phone-call",
13
+ "housing-tenancy"
14
+ ],
15
+ "description": "Call the former landlord or property manager to dispute deductions from a security deposit — demanding an itemized statement, challenging specific charges (especially normal wear-and-tear), and preserving the right to small-claims court if not resolved.",
16
+ "disclaimer": "Not legal advice. Habitability + early-termination skills are scripted to PRESERVE legal posture (request things in writing, refuse verbal-only assurances) — but the operator must consult a tenant attorney for actual rights determination.",
17
+ "context": {
18
+ "when_to_use": "User has moved out and received either: (a) less than their full deposit back without itemization, (b) an itemized statement with charges they believe are improper (normal wear-and-tear, pre-existing damage, inflated repair quotes), or (c) nothing at all past the statutory deadline (commonly 14–30 days, varies by jurisdiction).",
19
+ "preconditions": [
20
+ "Lease end date and move-out date are confirmed.",
21
+ "User has the original deposit amount and what was returned (if anything).",
22
+ "User has the itemized statement (if received) OR knows the statutory deadline has passed.",
23
+ "User has move-in photos / video (ideal), move-out photos / video, and the move-out walkthrough record (see `move-out-walkthrough` skill).",
24
+ "User knows their state's statutory deadline for deposit return AND any statutory penalty (some states triple-damages for bad-faith withholding)."
25
+ ],
26
+ "estimated_call_duration_minutes": 20
27
+ },
28
+ "principles": [
29
+ "Itemization is the first ask — most states REQUIRE an itemized statement, and its absence alone can entitle the tenant to the full deposit back plus a statutory penalty in some jurisdictions.",
30
+ "Normal wear-and-tear is not chargeable. Faded paint, minor carpet wear, small nail holes, slightly dusty blinds — these are not damages.",
31
+ "Demand RECEIPTS, not estimates. 'We charged $400 to repaint' without a paid invoice means the landlord may not have spent it.",
32
+ "Stay calm. The deposit is your money and the law is largely on the tenant's side IF documentation exists — anger costs leverage.",
33
+ "Always set a written-response deadline. 'I'd like a response by [date]' creates the timeline for the next step (formal demand letter, then small-claims).",
34
+ "Do not threaten litigation on the first call — but do mention 'I'd like to resolve this without small-claims.' That signals you know the path exists."
35
+ ],
36
+ "phrases": {
37
+ "opener_no_itemization": "Hi, I'm calling about the security deposit for [unit, address]. My move-out date was [date] and I haven't received an itemized statement of deductions. Under [state] law I'm entitled to that within [X] days. Can we resolve this today?",
38
+ "opener_disputed_items": "Hi, I'm calling about the deposit statement for [unit]. I received it on [date] and I want to dispute a few items before I escalate.",
39
+ "request_itemization": "Could you send me a fully itemized statement with the receipts or paid invoices for each deduction? Estimates aren't sufficient — I need the actual paid amounts.",
40
+ "challenge_wear_and_tear": "The charge for [item] looks like normal wear-and-tear, not damage. Under [state] law, normal wear isn't deductible. Can you walk me through why this was assessed as damage?",
41
+ "challenge_pre_existing": "That item was already in that condition at move-in — I have move-in photos timestamped [date] showing it. I can send them. Can you remove that charge?",
42
+ "challenge_inflated": "The $[amount] for [repair] is well above market — a typical [repair] runs $[range]. Can you share the contractor's invoice so I can verify?",
43
+ "ask_for_resolution": "Based on what we've discussed, I think the fair amount returned is $[amount]. Can you confirm that today and reissue the check?",
44
+ "set_deadline": "I need a written response and the corrected amount by [date — usually 7–10 days]. After that I'll need to put this in a formal demand letter.",
45
+ "graceful_close_resolved": "Thanks. To confirm: $[amount] reissued by [method] by [date], and you'll send an updated itemization. Glad we sorted this out.",
46
+ "graceful_close_unresolved": "Sounds like we're not going to agree on this call. I'll send a written demand letter by [date]. If that doesn't resolve it I'll file in small-claims court. I'd rather avoid that — please reconsider the items we discussed."
47
+ },
48
+ "tactics": [
49
+ {
50
+ "name": "Establish the timeline upfront",
51
+ "when": "First substantive turn.",
52
+ "script": "Use one of the two openers. State move-out date and what the user has (or hasn't) received. Frames the call around statutory obligation, not opinion.",
53
+ "priority": 1
54
+ },
55
+ {
56
+ "name": "Demand the itemization with receipts",
57
+ "when": "If no itemization received OR estimates not invoices were sent.",
58
+ "script": "Use `request_itemization`. Many landlords pad with estimates that never get spent — receipts force honesty.",
59
+ "priority": 2
60
+ },
61
+ {
62
+ "name": "Challenge wear-and-tear line by line",
63
+ "when": "Itemization in hand.",
64
+ "script": "Use `challenge_wear_and_tear`. Go through each line — paint, carpet, blinds, scuffs, minor holes. These are landlord costs of doing business, not tenant damages.",
65
+ "priority": 3
66
+ },
67
+ {
68
+ "name": "Counter pre-existing-condition charges with photos",
69
+ "when": "A charge is for damage the tenant believes existed at move-in.",
70
+ "script": "Use `challenge_pre_existing`. Move-in photos with timestamps win this argument almost every time. Send them by email AFTER the call as the paper trail.",
71
+ "priority": 4
72
+ },
73
+ {
74
+ "name": "Demand invoices on inflated repair charges",
75
+ "when": "A repair number looks padded.",
76
+ "script": "Use `challenge_inflated`. Many landlords mark up or invent repair costs; asking for the contractor's paid invoice often makes the charge disappear.",
77
+ "priority": 5
78
+ },
79
+ {
80
+ "name": "Set the next-step deadline",
81
+ "when": "Before ending the call.",
82
+ "script": "Use `set_deadline`. Specific dates create urgency. Without a deadline the landlord can let it drift past the statute of limitations.",
83
+ "priority": 6
84
+ },
85
+ {
86
+ "name": "Preserve the small-claims posture",
87
+ "when": "Landlord refuses to budge.",
88
+ "script": "Use `graceful_close_unresolved`. Naming small-claims signals seriousness without bluffing. Many landlords settle the moment they see a demand letter."
89
+ }
90
+ ],
91
+ "boundaries": [
92
+ "Do NOT accept a partial refund in exchange for waiving the right to dispute the rest. Hold via `ask_operator`.",
93
+ "Do NOT agree to sign any release of claims on the phone.",
94
+ "Do NOT threaten small-claims as a bluff — only mention it as a real next step the user is willing to pursue.",
95
+ "Do NOT raise habitability or other lease disputes on this call. One topic per call keeps the record clean.",
96
+ "Do NOT accept verbal-only agreements about a refund. Get the new amount and refund date in writing (email is fine)."
97
+ ],
98
+ "success_signals": [
99
+ "Landlord agrees to remove or reduce specific charges.",
100
+ "Landlord agrees to send full itemization with paid invoices.",
101
+ "Landlord proposes a refund amount higher than original.",
102
+ "Landlord commits to a specific reissue date in writing."
103
+ ],
104
+ "failure_signals": [
105
+ "Landlord refuses to itemize.",
106
+ "Landlord stands on inflated charges with no invoices.",
107
+ "Landlord stops responding after the call.",
108
+ "Landlord claims charges that exceed the deposit and threatens to send the user to collections — note this and consult an attorney before responding."
109
+ ],
110
+ "exit_strategy": {
111
+ "on_success": "Confirm the new refund amount, method, and date in writing within 24 hours. Operator should send a recap email immediately summarising the call.",
112
+ "on_failure": "Send a formal written demand letter (certified mail + email) citing the specific statute and the disputed charges. If unresolved within the demand-letter deadline, file in small-claims court. Consider a tenant attorney consult before filing if amounts are large.",
113
+ "follow_ups": [
114
+ "Operator sends recap email within 1 hour: call time, who spoke, what was promised or refused.",
115
+ "Send move-in / move-out photos as email attachments to support disputed items.",
116
+ "Calendar the response deadline; on the day of, escalate per failure-path if no response.",
117
+ "Research the jurisdiction's statutory bad-faith penalty — in some states it's 2x or 3x the wrongfully withheld amount."
118
+ ]
119
+ },
120
+ "required_user_info": [
121
+ "Original deposit amount, amount returned, amount disputed",
122
+ "Move-out date and the statutory deadline for return in the jurisdiction",
123
+ "Itemized statement (if any) and any receipts attached",
124
+ "Move-in and move-out photos / videos",
125
+ "Move-out walkthrough record (see `move-out-walkthrough`)",
126
+ "Lease copy showing deposit terms"
127
+ ],
128
+ "contributed_by": "housing-tenancy agent (v0.9.87 community drop)",
129
+ "updated_at": "2026-05-20T06:09:47Z"
130
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "id": "dispute-usage-spike-meter-reread",
3
+ "name": "Dispute a Usage-Spike Bill and Get a Meter Reread",
4
+ "version": "1.0.0",
5
+ "category": "customer-service",
6
+ "tags": [
7
+ "electric",
8
+ "gas",
9
+ "water",
10
+ "billing",
11
+ "meter-reread",
12
+ "dispute",
13
+ "phone-call",
14
+ "utility-telecom"
15
+ ],
16
+ "description": "Call a utility to dispute a bill that's 2-5x the normal range, request a meter reread or test, and put the disputed amount into formal investigation status (which freezes shutoff threats while the investigation runs).",
17
+ "disclaimer": "Disputing a bill does not automatically suspend shutoff. You must explicitly invoke the utility's billing-dispute / investigation process and get a case number; only then is the disputed portion legally protected from collections in most jurisdictions.",
18
+ "context": {
19
+ "when_to_use": "The user's current bill is anomalously high vs. their 12-month rolling average AND there is no obvious cause (no new appliance, no guests, no leak they know of, weather not extreme). Best used within 30 days of the bill date — after that, the meter reading history has rolled and the case is harder to make.",
20
+ "preconditions": [
21
+ "User has the disputed bill in front of them with read date, prior read date, and kWh/therms/gallons used.",
22
+ "User has at least 6 months of prior bills for comparison (most utilities show this on the bill or in the portal).",
23
+ "User has checked for obvious causes: water leak (toilet flapper, irrigation), space heater, new fridge / freezer, EV charging, guests.",
24
+ "Photo of the current meter reading (smartphone, timestamped)."
25
+ ],
26
+ "estimated_call_duration_minutes": 25
27
+ },
28
+ "principles": [
29
+ "Lead with data, not outrage. 'My bill is 3.2x my 12-month average' lands better than 'this is insane'.",
30
+ "There are three failure modes to test for, in order: (1) misread / estimated read, (2) meter malfunction, (3) actual usage (leak / failing appliance). Walk through them deliberately.",
31
+ "An 'estimated' read on the bill is the single most common cause — the meter reader couldn't get to it that month, so the system extrapolated, then 'caught up' all the missed usage on the next actual read.",
32
+ "A formal dispute changes the account state. Until it's formalised with a case number, you're just complaining — and complaints don't freeze shutoff timers.",
33
+ "If routed to a general billing queue when you need the meter-services / revenue-protection team, recognise it within 60 seconds and request a warm transfer that preserves your hold position."
34
+ ],
35
+ "phrases": {
36
+ "opener": "Hi, I'm calling about my [month] bill for account [number]. It's $[amount] vs. my 12-month average of about $[amount], and the usage shows [X] [units] vs. my normal [Y]. I'd like to open a formal dispute and request a meter reread.",
37
+ "queue_check": "Quick check — are you in billing, or in meter services? I'm trying to get to whoever can authorise a reread, and I want to make sure I'm not burning your time.",
38
+ "transfer_request": "Could you do a warm transfer to meter services and stay on until they pick up? I want to keep my hold position with your team in case they bounce me back.",
39
+ "ask_estimated_read": "Can you tell me whether the prior read or this read was actual or estimated? I see an 'E' next to one of them on the bill.",
40
+ "request_reread": "I'd like to request a meter reread on-site, please. If the reread is within 5% of the billed reading, I'll accept the bill; if it's off, I want the bill recalculated.",
41
+ "request_meter_test": "If the reread confirms the high reading, I'd like the meter pulled and bench-tested. I understand there's typically no charge if the meter is found to be out of spec.",
42
+ "formalise_dispute": "I'd like to formally dispute the disputed portion under your billing-investigation process. Can you give me a case number and confirm that the disputed amount is excluded from any shutoff or late-fee action until the investigation closes?",
43
+ "ask_for_credit": "While the dispute is open, can you also apply a temporary budget-billing adjustment so I'm not paying the full disputed amount in the interim?",
44
+ "graceful_close": "Thanks. So I have case number [number], reread scheduled for [date], and the disputed $[amount] is on hold. I'll watch for the field tech and call back if I don't hear within [timeframe]."
45
+ },
46
+ "tactics": [
47
+ {
48
+ "name": "Open with the comparison",
49
+ "when": "First substantive turn.",
50
+ "script": "Use the `opener` phrase. The 'X vs. Y' framing immediately tells the rep this is a usage-anomaly dispute, not a 'I don't want to pay' call.",
51
+ "priority": 1
52
+ },
53
+ {
54
+ "name": "Check for estimated reads first",
55
+ "when": "Once the rep has the bill open.",
56
+ "script": "Use `ask_estimated_read`. If the prior read was estimated and this one is actual, the bill is doing make-up math on weeks of accumulated usage — that often resolves the dispute without a reread, via re-pro-rating the usage across the months.",
57
+ "priority": 2
58
+ },
59
+ {
60
+ "name": "Recognise wrong-queue and transfer cleanly",
61
+ "when": "Rep can take payment but cannot authorise a reread / test.",
62
+ "script": "Use `queue_check` and `transfer_request`. Meter services / field operations is the team that can dispatch a reread; general billing usually cannot.",
63
+ "priority": 3
64
+ },
65
+ {
66
+ "name": "Request reread, then test",
67
+ "when": "Estimated-read explanation does not resolve it.",
68
+ "script": "Use `request_reread`. Reread is fast and free. If reread matches, escalate to `request_meter_test` — meters do drift, especially older mechanical gas meters and induction water meters.",
69
+ "priority": 4
70
+ },
71
+ {
72
+ "name": "Formalise the dispute",
73
+ "when": "Before ending the call, regardless of whether reread is scheduled.",
74
+ "script": "Use `formalise_dispute`. This is the magic-word step — without a case number, the disputed amount remains collectable.",
75
+ "priority": 5
76
+ },
77
+ {
78
+ "name": "Negotiate interim relief",
79
+ "when": "Bill is unaffordable and reread will take days/weeks.",
80
+ "script": "Use `ask_for_credit`. Many utilities will accept the user paying their rolling-average bill in the interim, with the balance held pending investigation."
81
+ }
82
+ ],
83
+ "boundaries": [
84
+ "Do NOT refuse to pay the undisputed portion (the rolling-average amount). That falls to collections and damages credit even with an open dispute.",
85
+ "Do NOT tamper with the meter while the dispute is open. Even a photo angle that suggests tampering can void the investigation.",
86
+ "Do NOT accept a verbal 'we'll fix it' without a case number. Verbal assurances vanish at shift change.",
87
+ "Do NOT escalate to public-utility-commission complaints in the same call you opened the dispute — give the utility's process at least one cycle to work."
88
+ ],
89
+ "success_signals": [
90
+ "Case number issued and rep confirms disputed amount is on hold.",
91
+ "Estimated-read pattern identified and bill re-pro-rated on the call.",
92
+ "Reread scheduled with a date / window.",
93
+ "Interim budget adjustment applied."
94
+ ],
95
+ "failure_signals": [
96
+ "Rep insists usage 'must be real' without offering reread or test.",
97
+ "Rep won't issue a case number — only a 'note on the account'.",
98
+ "Shutoff notice arrives after dispute is opened (in which case escalate immediately to the PUC).",
99
+ "Reread happens but bill is not recalculated despite a discrepancy."
100
+ ],
101
+ "exit_strategy": {
102
+ "on_success": "Confirm case number, reread date, interim payment amount, and the rep's name. Calendar a follow-up for 3 days after the scheduled reread.",
103
+ "on_failure": "Ask for the formal complaint process and file with the state Public Utility Commission (PUC) or equivalent regulator. Many disputes get resolved within hours of the utility receiving a PUC notice.",
104
+ "follow_ups": [
105
+ "Photograph the meter reading the day of the call (timestamped) and again at the reread.",
106
+ "After resolution, audit the next 2 bills for correct re-billing.",
107
+ "If a leak was found, file the leak-adjustment paperwork most water utilities offer (one-time credit)."
108
+ ]
109
+ },
110
+ "required_user_info": [
111
+ "Account number and service address",
112
+ "Disputed bill amount, period, and the printed usage figure",
113
+ "12-month rolling average usage and bill amount",
114
+ "Whether prior/current reads are marked actual or estimated",
115
+ "Any known causes ruled out (no new appliance, no leak found, etc.)",
116
+ "Photo of current meter reading"
117
+ ],
118
+ "contributed_by": "utility-telecom agent (v0.9.87 community drop)",
119
+ "updated_at": "2026-05-20T06:09:47Z"
120
+ }