@agenticmail/core 0.9.31 → 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.
Files changed (165) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.d.cts +3 -3
  3. package/dist/index.d.ts +3 -3
  4. package/dist/index.js +1 -1
  5. package/dist/skills/built-in/accommodation-intake.json +132 -0
  6. package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
  7. package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
  8. package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
  9. package/dist/skills/built-in/anti-social-engineering.json +153 -0
  10. package/dist/skills/built-in/anything-else-sweep.json +120 -0
  11. package/dist/skills/built-in/apologise-correctly.json +126 -0
  12. package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
  13. package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
  14. package/dist/skills/built-in/bant-discovery-call.json +125 -0
  15. package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
  16. package/dist/skills/built-in/bookmark-close.json +113 -0
  17. package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
  18. package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
  19. package/dist/skills/built-in/calibrated-questions.json +155 -0
  20. package/dist/skills/built-in/call-911-fire.json +118 -0
  21. package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
  22. package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
  23. package/dist/skills/built-in/call-988-crisis-line.json +106 -0
  24. package/dist/skills/built-in/call-poison-control.json +115 -0
  25. package/dist/skills/built-in/call-police-non-emergency.json +114 -0
  26. package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
  27. package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
  28. package/dist/skills/built-in/cancel-policy-clean.json +130 -0
  29. package/dist/skills/built-in/capture-rep-identity.json +113 -0
  30. package/dist/skills/built-in/childcare-provider-intake.json +157 -0
  31. package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
  32. package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
  33. package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
  34. package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
  35. package/dist/skills/built-in/contractor-estimate-request.json +142 -0
  36. package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
  37. package/dist/skills/built-in/cpa-intake-call.json +134 -0
  38. package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
  39. package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
  40. package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
  41. package/dist/skills/built-in/deliver-difficult-news.json +122 -0
  42. package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
  43. package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
  44. package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
  45. package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
  46. package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
  47. package/dist/skills/built-in/dispute-denied-claim.json +143 -0
  48. package/dist/skills/built-in/dispute-security-deposit.json +130 -0
  49. package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
  50. package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
  51. package/dist/skills/built-in/document-call-promises.json +145 -0
  52. package/dist/skills/built-in/early-lease-termination.json +126 -0
  53. package/dist/skills/built-in/elite-line-escalation.json +107 -0
  54. package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
  55. package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
  56. package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
  57. package/dist/skills/built-in/file-habitability-complaint.json +115 -0
  58. package/dist/skills/built-in/financial-aid-appeal.json +128 -0
  59. package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
  60. package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
  61. package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
  62. package/dist/skills/built-in/handle-callback-stall.json +120 -0
  63. package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
  64. package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
  65. package/dist/skills/built-in/handle-time-pressure.json +159 -0
  66. package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
  67. package/dist/skills/built-in/hoa-dispute.json +123 -0
  68. package/dist/skills/built-in/hold-time-strategy.json +137 -0
  69. package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
  70. package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
  71. package/dist/skills/built-in/humour-when-it-lands.json +127 -0
  72. package/dist/skills/built-in/i20-visa-dso.json +134 -0
  73. package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
  74. package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
  75. package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
  76. package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
  77. package/dist/skills/built-in/late-add-petition.json +128 -0
  78. package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
  79. package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
  80. package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
  81. package/dist/skills/built-in/medical-records-transfer.json +138 -0
  82. package/dist/skills/built-in/medical-withdrawal.json +131 -0
  83. package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
  84. package/dist/skills/built-in/mirror-technique.json +145 -0
  85. package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
  86. package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
  87. package/dist/skills/built-in/move-out-walkthrough.json +114 -0
  88. package/dist/skills/built-in/multi-channel-escalation.json +141 -0
  89. package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
  90. package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
  91. package/dist/skills/built-in/no-as-opening.json +154 -0
  92. package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
  93. package/dist/skills/built-in/outage-credit-applied.json +127 -0
  94. package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
  95. package/dist/skills/built-in/pediatric-school-forms.json +141 -0
  96. package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
  97. package/dist/skills/built-in/pharmacy-callback.json +134 -0
  98. package/dist/skills/built-in/pivot-mid-call.json +141 -0
  99. package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
  100. package/dist/skills/built-in/prescription-refill-followup.json +132 -0
  101. package/dist/skills/built-in/push-past-invented-policy.json +159 -0
  102. package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
  103. package/dist/skills/built-in/reach-executive-office.json +137 -0
  104. package/dist/skills/built-in/read-vocal-cues.json +139 -0
  105. package/dist/skills/built-in/read-vocal-tone.json +159 -0
  106. package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
  107. package/dist/skills/built-in/receive-difficult-news.json +115 -0
  108. package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
  109. package/dist/skills/built-in/recover-summary-refusal.json +121 -0
  110. package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
  111. package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
  112. package/dist/skills/built-in/referral-prior-authorization.json +130 -0
  113. package/dist/skills/built-in/refuse-the-split.json +142 -0
  114. package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
  115. package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
  116. package/dist/skills/built-in/rental-scam-report.json +125 -0
  117. package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
  118. package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
  119. package/dist/skills/built-in/report-elder-or-child-abuse.json +117 -0
  120. package/dist/skills/built-in/report-fbi-tip.json +109 -0
  121. package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
  122. package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
  123. package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
  124. package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
  125. package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
  126. package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
  127. package/dist/skills/built-in/request-welfare-check.json +127 -0
  128. package/dist/skills/built-in/request-written-confirmation.json +113 -0
  129. package/dist/skills/built-in/reschedule-appointment.json +121 -0
  130. package/dist/skills/built-in/reset-by-callback.json +143 -0
  131. package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
  132. package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
  133. package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
  134. package/dist/skills/built-in/roommate-replacement.json +121 -0
  135. package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
  136. package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
  137. package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
  138. package/dist/skills/built-in/social-security-replacement-card.json +122 -0
  139. package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
  140. package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
  141. package/dist/skills/built-in/stop-recurring-ach.json +127 -0
  142. package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
  143. package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
  144. package/dist/skills/built-in/therapist-intake-call.json +133 -0
  145. package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
  146. package/dist/skills/built-in/transcript-request.json +128 -0
  147. package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
  148. package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
  149. package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
  150. package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
  151. package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
  152. package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
  153. package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
  154. package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
  155. package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
  156. package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
  157. package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
  158. package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
  159. package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
  160. package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
  161. package/dist/skills/built-in/walkaway-threats.json +159 -0
  162. package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
  163. package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
  164. package/dist/skills/built-in/wire-funds-safely.json +129 -0
  165. package/package.json +1 -1
@@ -0,0 +1,136 @@
1
+ {
2
+ "id": "specialist-doctor-booking",
3
+ "name": "Specialist-Doctor Referral Booking With Limited Availability",
4
+ "version": "1.0.1",
5
+ "category": "medical-admin",
6
+ "tags": [
7
+ "healthcare",
8
+ "specialist",
9
+ "physician",
10
+ "referral",
11
+ "insurance",
12
+ "in-network",
13
+ "intake",
14
+ "phone-call",
15
+ "professional-services"
16
+ ],
17
+ "description": "Call a specialist's office (cardiology, derm, GI, ortho, neuro, endocrine, ENT, etc.) to book a referral appointment, verify in-network status with the operator's plan, confirm the right sub-specialist, and navigate waitlists / cancellation lists without committing to a deposit or no-show fee structure the operator hasn't approved.",
18
+ "disclaimer": "This call is logistical only. Do not describe symptoms in detail to a scheduler — clinical info belongs in the chart and with the clinician. Schedulers are NOT a HIPAA-protected channel for full medical history; give only what's needed to book.",
19
+ "context": {
20
+ "when_to_use": "Operator has a referral (or self-pay path) to a specialist and needs to book. Particularly valuable when waitlists are long, sub-specialists differ (e.g. interventional vs general cardiology), and insurance authorisation steps must be confirmed.",
21
+ "preconditions": [
22
+ "Operator has the referring provider's name, NPI, and a copy of the referral or order, if required by their plan.",
23
+ "Operator has the specialist's full name and (ideally) NPI / state license number.",
24
+ "Operator has insurance details: insurer, member ID, group, plan type (HMO/PPO/EPO), and whether a prior-auth has been initiated.",
25
+ "Operator has a 1-2 sentence reason for the visit in lay terms ('chest pain on exertion', 'recurrent migraines') — no detailed history."
26
+ ],
27
+ "estimated_call_duration_minutes": 15
28
+ },
29
+ "principles": [
30
+ "Sub-specialty matters. 'Cardiologist' is not one job — interventional, electrophysiology, heart-failure, and general adult cardiology are different practices. Match the specialist to the question.",
31
+ "In-network status is the single biggest cost driver. Verify against the plan, not just the insurer name. Same insurer + wrong plan = out-of-network bill.",
32
+ "Referral and prior-authorisation are different things. HMOs typically require a written referral; many plans also require prior-auth for imaging or procedures. The clinic should know what the operator's plan needs.",
33
+ "Cancellation lists are powerful. A 6-month wait often becomes a 2-week wait if the operator is reachable for short-notice openings.",
34
+ "No-show fees are real, often $50-$200, and frequently buried in the new-patient packet. Surface them BEFORE booking, not after.",
35
+ "Telehealth options exist for some specialties. If the visit is consultative (not procedural), ask — it often shortens the wait substantially."
36
+ ],
37
+ "phrases": {
38
+ "opener": "Hi — I'm calling for a patient who was referred to Dr. [last name] for [HIGH-level reason, e.g. 'evaluation of recurrent migraines']. Before we book, could I quickly check in-network status with [insurer / plan] and whether anything's needed on the referral side?",
39
+ "insurance_probe": "Could you verify Dr. [name] is in-network with [insurer], plan type [HMO/PPO/EPO], plan name [if known]? And what's the new-patient copay or coinsurance estimate based on the plan?",
40
+ "referral_probe": "Does the operator's plan require a written referral from the PCP, and do you already have it on file? If not, what's the fastest way to get it to you?",
41
+ "prior_auth_probe": "If imaging or a procedure is anticipated, who initiates the prior-auth — your office or the operator's PCP? And what's the typical turnaround?",
42
+ "sub_specialist_probe": "Could you confirm Dr. [name]'s sub-specialty? The referring physician mentioned [reason], and I want to make sure we're matching to the right sub-area before booking.",
43
+ "availability_probe": "What's the next available new-patient slot, and is there a cancellation or wait-list option for earlier openings? The operator can be reachable within [hours] for short-notice slots.",
44
+ "telehealth_probe": "Is a telehealth consult available for the first visit, and would it count toward the same evaluation?",
45
+ "no_show_probe": "What's the no-show / late-cancel policy, and is there a fee? When and how is that communicated to the operator?",
46
+ "records_probe": "What records do you need before the first visit — labs, imaging, prior notes? And what's the secure way to send them?",
47
+ "stall_to_check": "Let me confirm the time slot with the operator before locking it in — they'll need to clear their calendar.",
48
+ "graceful_close": "Thank you — could you email the new-patient packet, cancellation policy, and the records request list? The operator will confirm the slot within [timeframe]."
49
+ },
50
+ "tactics": [
51
+ {
52
+ "name": "Verify in-network first",
53
+ "when": "First minute.",
54
+ "script": "Use `insurance_probe`. Stop the call if the answer is 'out of network' unless the operator has authorised self-pay. Schedulers can usually verify with the plan name in 60 seconds.",
55
+ "priority": 1
56
+ },
57
+ {
58
+ "name": "Confirm sub-specialty match",
59
+ "when": "After insurance.",
60
+ "script": "Use `sub_specialist_probe`. If the sub-specialty is wrong, ask for an in-network colleague who matches and put the original on a backup list.",
61
+ "priority": 2
62
+ },
63
+ {
64
+ "name": "Resolve referral + prior-auth path",
65
+ "when": "Before locking a slot.",
66
+ "script": "Use `referral_probe` and `prior_auth_probe`. Many HMO plans require a paper trail BEFORE the visit; without it, the visit can be denied retroactively.",
67
+ "priority": 3
68
+ },
69
+ {
70
+ "name": "Ask about the cancellation list",
71
+ "when": "When the soonest slot is too far out.",
72
+ "script": "Use `availability_probe`. Be explicit about the operator's reachability window. Cancellation lists are often informal — make sure the scheduler notes it.",
73
+ "priority": 4
74
+ },
75
+ {
76
+ "name": "Surface no-show fees",
77
+ "when": "Before agreeing to a slot.",
78
+ "script": "Use `no_show_probe`. Many specialist offices charge $75-$200 for missed appointments. The operator should know the policy in writing before booking.",
79
+ "priority": 5
80
+ },
81
+ {
82
+ "name": "Prep records ahead",
83
+ "when": "After slot is tentatively held.",
84
+ "script": "Use `records_probe`. Note the secure transmission path (portal, fax, ROI form). Records arriving late frequently push first visits."
85
+ },
86
+ {
87
+ "name": "Defer the final confirm",
88
+ "when": "Scheduler offers a slot now.",
89
+ "script": "Use `stall_to_check`. Confirm verbally that the slot will be held briefly, but the operator confirms the time. NEVER book without operator confirmation — missed appointments cost real money."
90
+ }
91
+ ],
92
+ "boundaries": [
93
+ "Do NOT share the operator's full medical history, medications, diagnoses, or test results with a scheduler. They don't need it to book.",
94
+ "Do NOT provide a credit card on file without the operator's explicit approval via ask_operator.",
95
+ "Do NOT confirm a slot the operator hasn't seen. Missed specialist appointments often incur fees and delay care.",
96
+ "Do NOT bypass referral or prior-auth requirements 'to get in faster'. The visit can be denied and billed to the operator at full self-pay.",
97
+ "Do NOT identify the operator's exact symptoms or diagnoses by name in casual conversation with non-clinical staff.",
98
+ "Do NOT instruct the practice to send records to an email address — only secure portals, faxes, or designated ROI channels."
99
+ ],
100
+ "success_signals": [
101
+ "Scheduler verifies in-network status against the specific plan name.",
102
+ "Sub-specialty is confirmed as a match for the referring concern.",
103
+ "Referral / prior-auth path is clear, with named owners and timelines.",
104
+ "Cancellation list is offered with realistic call-back expectations.",
105
+ "Cancellation / no-show policy is provided in writing.",
106
+ "Records request and secure transmission path are documented."
107
+ ],
108
+ "failure_signals": [
109
+ "Scheduler cannot confirm in-network status against the specific plan.",
110
+ "Sub-specialty mismatch and no alternative offered.",
111
+ "First available slot is months out with no cancellation list option.",
112
+ "Refusal to send the cancellation / no-show policy in writing.",
113
+ "Scheduler pressing for credit card on file before the operator has reviewed terms.",
114
+ "Insistence on emailing records to an unencrypted address."
115
+ ],
116
+ "exit_strategy": {
117
+ "on_success": "Confirm scheduler will email: new-patient packet, cancellation policy, prior-auth status, records request, and a hold-time on the slot. Note the appointment date, the sub-specialist name and NPI, the in-network confirmation reference (if given), and the cancellation list addition.",
118
+ "on_failure": "Politely close. Ask the scheduler if they can recommend an in-network sub-specialist colleague at the same or adjacent practice. Report back to the operator with the gap (insurance, sub-specialty, or availability).",
119
+ "follow_ups": [
120
+ "Email the operator: specialist name, sub-specialty, in-network status, referral/prior-auth state, slot offered, cancellation policy, records to send, next-step actions.",
121
+ "Operator independently verifies coverage with insurer via member portal or phone before the visit.",
122
+ "Calendar a 24-48 hour confirmation window for the operator to lock in the slot."
123
+ ]
124
+ },
125
+ "required_user_info": [
126
+ "Specialist's full name, sub-specialty if known, and practice / city",
127
+ "Referring provider name and NPI (if HMO plan)",
128
+ "Insurance: insurer, member ID, group, plan type, plan name",
129
+ "High-level reason for visit in 1-2 sentences — not detailed clinical history",
130
+ "Operator's availability windows and short-notice reachability hours",
131
+ "Whether telehealth is acceptable for a first visit",
132
+ "Existing records (labs, imaging, prior notes) and where they currently live"
133
+ ],
134
+ "contributed_by": "professional-intake agent (v0.9.87 community drop)",
135
+ "updated_at": "2026-05-20T06:09:47Z"
136
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "id": "spot-bait-and-switch",
3
+ "name": "Spot Bait-and-Switch and Hidden-Hook Offers",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "meta-skill",
8
+ "adversarial-robustness",
9
+ "deception-detection",
10
+ "pricing",
11
+ "phone-call",
12
+ "subscriptions",
13
+ "critical-reasoning"
14
+ ],
15
+ "description": "Recognise when an offer the rep is presenting carries a back-end hook — auto-renew at full price, mandatory bundle add-ons, introductory rates that revert, retention 'gifts' that extend contract terms, free trials that require a card. Surface and price the full lifetime cost before accepting.",
16
+ "disclaimer": null,
17
+ "context": {
18
+ "when_to_use": "Any offer the rep makes that sounds materially better than market, especially: 'free for X months', 'introductory rate', 'bundle and save', 'one-time credit', 'loyalty gift', 'we'll throw in X', 'just need a credit card on file'.",
19
+ "preconditions": [
20
+ "Agent knows the user's current price and the realistic market price.",
21
+ "Agent has authority to ask clarifying questions before accepting any offer.",
22
+ "Agent has not been told 'just accept whatever they offer' — if so, decline this skill and ask the user to reauthorise."
23
+ ],
24
+ "estimated_call_duration_minutes": 5
25
+ },
26
+ "principles": [
27
+ "Every offer has a duration and a reversion. Both must be named explicitly before you accept.",
28
+ "Any 'free' that requires a card on file is a paid product with a cancel-by date. Treat the cancel-by date as the real expiration.",
29
+ "Any 'gift' offered in retention is usually paid for with contract length, paperless billing, autopay, or a bundled add-on. Look for the trade.",
30
+ "If the rep can't or won't quote the post-promo price, the offer is incomplete — and incomplete offers are not safe to accept.",
31
+ "Compute lifetime cost over 24 months at minimum. A six-month $20 promo with an $80 reversion is a $1,560/yr product, not a $20/mo product.",
32
+ "Read the trade out loud back to the rep. Recorded calls cut both ways."
33
+ ],
34
+ "phrases": {
35
+ "ask_for_post_promo": "What's the rate after the promotional period ends, and what's the exact end date?",
36
+ "ask_for_contract_change": "Does accepting this change my contract length, my early-termination fee, or my eligibility for future promotions?",
37
+ "ask_for_autorenew": "Will this automatically renew at the same rate, at the standard rate, or end? And how do I opt out if I want to?",
38
+ "ask_for_bundle_strings": "Does this require me to add or keep [service]? And what happens to the price if I drop it later?",
39
+ "lifecycle_recap": "Let me play it back: I pay [$X] for [N months], then it goes to [$Y] on [date], unless I [cancel | downgrade | call back]. Is that right?",
40
+ "request_in_writing": "Could you send me that in writing — email or in-account notification — before we lock it in?",
41
+ "decline_until_clear": "I'd love to take it, but I want to make sure I understand the full picture before I commit. Can you walk me through what happens after the promo ends?"
42
+ },
43
+ "tactics": [
44
+ {
45
+ "name": "Always ask for the reversion",
46
+ "when": "Any time-limited offer is on the table.",
47
+ "script": "Use `ask_for_post_promo`. Do not accept until you have BOTH the post-promo price AND the exact end date. 'About six months' is not an end date.",
48
+ "priority": 1
49
+ },
50
+ {
51
+ "name": "Probe for contract strings",
52
+ "when": "Offer sounds materially generous.",
53
+ "script": "Use `ask_for_contract_change`. Retention offers frequently extend term commitment or reset the early-termination clock. The trade is what makes the offer affordable to the company.",
54
+ "priority": 2
55
+ },
56
+ {
57
+ "name": "Probe for bundle strings",
58
+ "when": "Offer involves more than one service or a new add-on.",
59
+ "script": "Use `ask_for_bundle_strings`. Bundled price is contingent on keeping every line. Dropping one often re-rates the others to standalone — quietly.",
60
+ "priority": 3
61
+ },
62
+ {
63
+ "name": "Play back the lifecycle out loud",
64
+ "when": "Before any verbal 'yes'.",
65
+ "script": "Use `lifecycle_recap`. Two purposes: forces the rep to confirm or correct on a recorded line, AND surfaces details they 'forgot' to mention.",
66
+ "priority": 4
67
+ },
68
+ {
69
+ "name": "Ask for it in writing",
70
+ "when": "Anything material.",
71
+ "script": "Use `request_in_writing`. Real offers can be confirmed in writing within minutes. Offers that 'can't be put in writing' are a bright red flag."
72
+ },
73
+ {
74
+ "name": "Compute and state lifetime cost",
75
+ "when": "Comparing competing offers.",
76
+ "script": "Out loud: 'So over 24 months, with the promo and reversion, that's [$total] versus [$alternative]. Got it.' If the rep tries to walk it back, you have your real number."
77
+ }
78
+ ],
79
+ "alternative_interpretations": [
80
+ {
81
+ "observation": "Rep offers '3 months free' on a new service.",
82
+ "consider": [
83
+ "It's a genuine acquisition promo with an easy cancel — best case.",
84
+ "Card-on-file requirement, auto-renews at full price, cancel-by date is buried in the email.",
85
+ "Free for the service, but install fees / equipment fees / activation fees are not waived.",
86
+ "Free, but contract length is 24 months with a stiff ETF.",
87
+ "Free for 3 months, then a non-disclosed 'introductory rate' for 9 more, THEN standard rate."
88
+ ],
89
+ "next_action": "Ask for all four: card requirement, auto-renew default, fees, contract length AND the date each kicks in."
90
+ },
91
+ {
92
+ "observation": "Retention rep offers a $30/mo credit if you 'just keep autopay on'.",
93
+ "consider": [
94
+ "Genuine autopay discount — common, fine.",
95
+ "Credit applies for 6 months, then evaporates while autopay obligation continues.",
96
+ "Autopay enables price-creep without the user noticing.",
97
+ "Autopay waives a billing-dispute right (rare, but check)."
98
+ ],
99
+ "next_action": "Ask `ask_for_post_promo` and `ask_for_contract_change`. Confirm credit duration ≠ autopay duration."
100
+ },
101
+ {
102
+ "observation": "Rep adds a 'free' premium channel / streaming line / device protection.",
103
+ "consider": [
104
+ "Genuine throw-in to close the deal.",
105
+ "Free for 1-3 months, auto-bills after at $10-$20/mo unless user opts out.",
106
+ "Counted as a 'service line' that triggers a different bundle tier elsewhere.",
107
+ "User must call back to remove it; the rep cannot."
108
+ ],
109
+ "next_action": "Ask: 'Is this added to my account? When does it start billing? And can you confirm-cancel it now if I don't want it?'"
110
+ },
111
+ {
112
+ "observation": "Rep says 'this offer is only available today'.",
113
+ "consider": [
114
+ "Possibly true (campaign ends), but verify — see `resist-urgency-manipulation`.",
115
+ "Same offer is available tomorrow under a different name.",
116
+ "Today's version has a worse hook than tomorrow's standard version.",
117
+ "Pressure tactic to short-circuit your evaluation of the hook."
118
+ ],
119
+ "next_action": "Take a short pause, run the lifecycle recap, decide on cost not urgency."
120
+ }
121
+ ],
122
+ "boundaries": [
123
+ "Do NOT accept any offer without naming both the post-promo price AND the end date out loud.",
124
+ "Do NOT accept a card-on-file 'free' offer without an explicit auto-cancel mechanism (or a user-set reminder).",
125
+ "Do NOT agree to a contract extension you weren't authorised to agree to.",
126
+ "Do NOT trust a verbal-only offer for anything material — push for writing."
127
+ ],
128
+ "success_signals": [
129
+ "Rep names the reversion price and end date without prompting.",
130
+ "Rep sends the offer in writing while you're still on the call.",
131
+ "Rep volunteers the contract impact and any bundle dependencies.",
132
+ "Lifetime cost math actually beats the user's current plan."
133
+ ],
134
+ "failure_signals": [
135
+ "Rep refuses or hedges on naming the post-promo rate.",
136
+ "Rep says 'it's all in the email you'll receive' but won't summarise.",
137
+ "Rep insists you must accept before they can send anything in writing.",
138
+ "Post-promo price isn't actually known to the rep."
139
+ ],
140
+ "exit_strategy": {
141
+ "on_success": "Accept the offer with the lifecycle recap on record. Calendar the reversion date as a future check-back.",
142
+ "on_failure": "Decline politely and ask for a call-back when the rep can produce the full lifecycle in writing. Do not let urgency override.",
143
+ "follow_ups": [
144
+ "Calendar 7 days before reversion to evaluate cancel vs renegotiate.",
145
+ "Save the written confirmation. If it doesn't arrive within 24 hours, call back and ask why."
146
+ ]
147
+ },
148
+ "required_user_info": [
149
+ "Current monthly amount and what the user expects to pay.",
150
+ "Whether the user is willing to accept any contract extension and for how long.",
151
+ "Whether the user wants autopay enabled."
152
+ ],
153
+ "contributed_by": "critical-reasoning agent (v0.9.87 community drop)",
154
+ "updated_at": "2026-05-20T06:09:47Z"
155
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "id": "stop-recurring-ach",
3
+ "name": "Stop a Recurring ACH the Merchant Won't Cancel",
4
+ "version": "1.0.0",
5
+ "category": "finance-admin",
6
+ "tags": [
7
+ "ach",
8
+ "stop-payment",
9
+ "recurring-debit",
10
+ "regulation-e",
11
+ "revoke-authorization",
12
+ "phone-call",
13
+ "banking-finance"
14
+ ],
15
+ "description": "Call the bank to revoke ACH authorization and place a stop-payment on a recurring debit from a merchant who is refusing to cancel — a right explicitly preserved for consumers under Regulation E (12 CFR 1005.10(c)) regardless of what the merchant's terms say.",
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 signed up for a recurring debit (gym, subscription, SaaS, debt collector, 'free trial' that auto-converted) and the merchant either refuses to cancel, makes cancellation impossibly hard, or 'cancelled' but keeps charging. Under Reg E, the user has the right to instruct the BANK to stop honoring the authorization — independently of any merchant action.",
19
+ "preconditions": [
20
+ "User has tried (or has a documented reason not to try) to cancel directly with the merchant first.",
21
+ "User has the merchant name, transaction amount, transaction frequency, and the next expected debit date.",
22
+ "User has a record of the original authorization (sign-up confirmation, terms-of-service, screenshots) if available.",
23
+ "User understands a stop-payment fee may apply (often $25-$35 — sometimes waivable on Reg E grounds).",
24
+ "User has written a revocation notice to the merchant or is prepared to (Reg E requires the consumer to also notify the merchant — bank does the technical block)."
25
+ ],
26
+ "estimated_call_duration_minutes": 25
27
+ },
28
+ "principles": [
29
+ "Reg E (12 CFR 1005.10(c)) preserves the consumer's right to revoke authorization for ANY recurring EFT, regardless of merchant terms. The bank must honor it if instructed at least 3 business days before the next debit.",
30
+ "Use the right verbiage: 'I am revoking authorization for this recurring ACH debit and instructing the bank to place a stop-payment.' Wrong words ('cancel my subscription'? 'block this merchant'?) trigger the wrong workflows.",
31
+ "Two-pronged stop: (1) the BANK blocks the debit, (2) the USER notifies the merchant in writing that authorization is revoked. Skip step 2 and the merchant might re-attempt under a different SEC code or merchant name.",
32
+ "Bank stop-payments typically last 6 months. Merchants who change ACH IDs, SEC codes, or merchant names can sometimes route around — ask for a 'block all debits from this originator' or 'block by exact dollar amount + merchant' depending on bank capabilities.",
33
+ "If a debit posts AFTER you've placed the stop-payment, the bank MUST reverse it under Reg E. This is not a courtesy — it's a regulatory duty.",
34
+ "Stop-payment fee waiver: ask politely. Many banks waive when the stop is on Reg E grounds (consumer right) rather than a one-time check stop."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi, I'm revoking authorization for a recurring ACH debit from [merchant] and I'd like the bank to place a stop-payment under Regulation E. The amount is $[amount], the next expected debit is [date], and the merchant has [refused to cancel / kept charging after cancellation].",
38
+ "specify_the_block": "I'd like to block (a) the next scheduled debit and (b) all future debits from this originator. If the merchant changes ACH IDs or SEC codes, can the block be set to 'merchant name + any amount' rather than just 'exact amount'?",
39
+ "ask_about_fee": "Will there be a stop-payment fee for this? Given this is a Reg E authorization revocation rather than a one-off stop, can the fee be waived?",
40
+ "ask_for_form": "Reg E suggests the bank may require written confirmation within 14 days. Can you send me that form now so I can complete it on this call?",
41
+ "what_if_it_posts": "If the merchant submits a debit anyway and it posts — what is the bank's process for reversing it under Reg E? I want to know that path before we close this call.",
42
+ "merchant_revocation_template": "Separately, I'm sending the merchant a written revocation of authorization. Just to confirm the bank's stop is independent of what the merchant does — correct?",
43
+ "graceful_close": "Thanks. Can you confirm: authorization revoked, stop-payment effective [date], block scope is [scope], duration [6 months], fee status, written confirmation will be sent, and give me a reference number plus your name?"
44
+ },
45
+ "tactics": [
46
+ {
47
+ "name": "Use the Reg E framing",
48
+ "when": "First substantive turn.",
49
+ "script": "Use `opener`. Saying 'revoking authorization under Regulation E' triggers the right workflow. 'Stop a payment' alone might be coded as a one-time check stop with narrow scope.",
50
+ "priority": 1
51
+ },
52
+ {
53
+ "name": "Maximize block scope",
54
+ "when": "Rep starts to enter the stop-payment.",
55
+ "script": "Use `specify_the_block`. Default stop-payment may only catch the exact amount; a merchant playing games changes amount by a penny to evade. Ask for the broadest block the bank's system supports.",
56
+ "priority": 2
57
+ },
58
+ {
59
+ "name": "Negotiate the fee",
60
+ "when": "Rep mentions a fee.",
61
+ "script": "Use `ask_about_fee`. Many reps have authority to waive on Reg E grounds, especially if the user has tried merchant cancellation."
62
+ },
63
+ {
64
+ "name": "Complete the written form on the call",
65
+ "when": "Bank requires written confirmation under Reg E.",
66
+ "script": "Use `ask_for_form`. If you complete it within the 14-day window, the stop remains in force; otherwise it can lapse."
67
+ },
68
+ {
69
+ "name": "Confirm reversal path",
70
+ "when": "Stop-payment set.",
71
+ "script": "Use `what_if_it_posts`. Reg E requires the bank to reverse a debit that should have been blocked — knowing the process in advance saves a call later."
72
+ },
73
+ {
74
+ "name": "Two-pronged: also notify the merchant",
75
+ "when": "Bank side complete.",
76
+ "script": "Send the merchant a written revocation of ACH authorization (email + certified letter if necessary). Bank stop blocks the debit; written notice blocks the merchant's ability to re-attempt under a different ACH ID without legal exposure."
77
+ },
78
+ {
79
+ "name": "Audit trail",
80
+ "when": "Closing.",
81
+ "script": "Use `graceful_close`. Reference number + scope + duration + fee status + written confirmation."
82
+ }
83
+ ],
84
+ "boundaries": [
85
+ "Do NOT 'block the merchant' broadly if the user has OTHER legitimate transactions with them — narrow the block to the recurring ACH only.",
86
+ "Do NOT close a deposit account just to escape a recurring ACH — that's a sledgehammer that triggers other consequences (autopay breaks, fees, credit impact via ChexSystems).",
87
+ "Do NOT skip notifying the merchant — bank stop alone may not legally end the user's obligation under the contract.",
88
+ "Do NOT verify identity by reading back a one-time code that was just texted (scam tell).",
89
+ "Do NOT accept a stop-payment that only blocks exact dollar amounts if the bank's system supports broader scope — ask.",
90
+ "Do NOT pay the stop-payment fee without asking for a Reg-E-grounds waiver first.",
91
+ "Do NOT close the call without a reference number."
92
+ ],
93
+ "success_signals": [
94
+ "Authorization revocation processed under Reg E.",
95
+ "Stop-payment scope set to merchant + any amount (or as broad as the bank's system allows).",
96
+ "Stop-payment fee waived or disclosed.",
97
+ "Written confirmation form completed on the call (or scheduled within the 14-day window).",
98
+ "Reference number issued.",
99
+ "Reversal path for any debit that still posts confirmed."
100
+ ],
101
+ "failure_signals": [
102
+ "Rep only offers a single-debit stop-payment by exact amount — push for broader scope or escalate.",
103
+ "Stop-payment fee won't be waived AND the user has documented merchant refusal — escalate to supervisor.",
104
+ "Bank insists the user 'must work it out with the merchant' — that's wrong under Reg E; escalate.",
105
+ "Merchant re-debits successfully despite stop — call back immediately and demand Reg E reversal."
106
+ ],
107
+ "exit_strategy": {
108
+ "on_success": "Confirm reference number, scope, duration, fee status, reversal path. Send merchant the written revocation notice that same day. Monitor the account daily for 1 week, then weekly for 6 months.",
109
+ "on_failure": "If rep won't process under Reg E: escalate to supervisor; file CFPB complaint. If merchant continues to debit and bank doesn't reverse: file CFPB complaint AND file state-AG complaint AND review for small-claims action. Inform operator at each step.",
110
+ "follow_ups": [
111
+ "Day 0: send merchant the written revocation (certified mail if high-value).",
112
+ "Day 1-7: daily account check.",
113
+ "Day 30, 60, 90: confirm no debit has posted; if posted, demand Reg E reversal within 60 days of statement.",
114
+ "Day 180: stop-payment expires — renew if merchant might still attempt."
115
+ ]
116
+ },
117
+ "required_user_info": [
118
+ "Merchant name, ACH descriptor as it appears on statement",
119
+ "Recurring amount and frequency, next expected debit date",
120
+ "Copy of original authorization (sign-up confirmation, terms)",
121
+ "Record of cancellation attempts with the merchant",
122
+ "Operator approval to pay any stop-payment fee if not waivable",
123
+ "Mailing address for sending revocation to merchant"
124
+ ],
125
+ "contributed_by": "banking-finance agent (v0.9.87 community drop)",
126
+ "updated_at": "2026-05-20T06:09:47Z"
127
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "id": "switch-postpaid-to-prepaid-mid-cycle",
3
+ "name": "Switch From Postpaid to Prepaid Mid-Cycle Without Losing Balance",
4
+ "version": "1.0.0",
5
+ "category": "subscription",
6
+ "tags": [
7
+ "telecom",
8
+ "mobile",
9
+ "prepaid",
10
+ "postpaid",
11
+ "switch",
12
+ "phone-call",
13
+ "savings",
14
+ "utility-telecom"
15
+ ],
16
+ "description": "Call a mobile carrier to convert a line from postpaid to prepaid (same carrier or to their prepaid sub-brand) mid-billing-cycle — keeping the number, salvaging any unused prepaid balance/credit, and avoiding double-billing for the cycle.",
17
+ "disclaimer": "Switching from postpaid to prepaid on the SAME carrier is often a port-internal flow that loses none of the number's history. Switching to a DIFFERENT carrier's prepaid brand is a number port — use `port-mobile-number-survive-retention` for the port-out side. Device installment plans on postpaid typically accelerate to a final balance on conversion; confirm before pulling the trigger.",
18
+ "context": {
19
+ "when_to_use": "User wants to lower mobile costs by moving to prepaid (same carrier's prepaid brand like Cricket / Visible / Metro / Mint) and is in the middle of their postpaid billing cycle. Best near the END of the postpaid cycle so the user isn't paying postpaid for days they won't use.",
20
+ "preconditions": [
21
+ "User has identified the target prepaid plan and price.",
22
+ "Account number, account holder name, billing zip on postpaid line.",
23
+ "Knowledge of any device-installment balance still owed.",
24
+ "Whether the user has any unused postpaid credit (autopay credit, referral credit, manufacturer rebate) — these often DO NOT transfer to prepaid.",
25
+ "Current postpaid bill date and next-cycle start date."
26
+ ],
27
+ "estimated_call_duration_minutes": 25
28
+ },
29
+ "principles": [
30
+ "Time the switch to the LAST 1-3 days of the postpaid cycle. Postpaid is paid in advance for service through end-of-cycle — switching mid-cycle leaves money on the table.",
31
+ "Burn any non-transferable postpaid credits BEFORE the switch (international roaming credit, device-protection credit, etc.). Once converted, those credits typically zero out.",
32
+ "Some carriers run 'switch and save' incentives between their postpaid and prepaid arms — ask explicitly. Reps don't always volunteer the cross-brand incentive.",
33
+ "If you're routed to retention because the rep heard 'I want prepaid', recognise it within 60 seconds. Retention will try to keep you on postpaid; you want sales / activations for the prepaid brand.",
34
+ "Confirm the eSIM / SIM logistics BEFORE confirming the conversion. Some prepaid brands require a new SIM ship; the gap between activation and SIM arrival is a day or two of no service."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi, I want to convert line [number] from postpaid to prepaid — moving to the [target plan name] on [prepaid brand]. My postpaid cycle ends [date]. I want to make sure timing is right and I'm not paying twice.",
38
+ "queue_check": "Are you the team that handles postpaid-to-prepaid conversions, or is that a different group? I want to be with whoever can actually flip the switch.",
39
+ "transfer_request": "Could you do a warm transfer to the prepaid activations / conversions team and stay on the line until they pick up? I'd rather not lose my hold position.",
40
+ "decline_retention_polite": "Thanks for the offer — I've already evaluated the postpaid plans. I'm moving to prepaid to lock in the price. I'd rather not spend time on a save offer today.",
41
+ "ask_cycle_alignment": "When exactly should the conversion happen so I don't pay overlap? My postpaid cycle ends [date] — can we schedule activation on [date - 1 or date]?",
42
+ "device_installment_check": "I have a device on installments — balance about $[X]. What happens to that balance on conversion? Does it accelerate, get split, or follow me to prepaid?",
43
+ "credits_check": "Do I have any non-transferable credits on this account — autopay credit, manufacturer rebate, account credit? I want to burn them before the conversion if they won't carry.",
44
+ "sim_logistics": "Will I need a new SIM or eSIM for the prepaid line? If physical, when does it ship and can I activate before it arrives? I can't have a service gap.",
45
+ "ask_switch_promo": "Is there a 'switch and save' bonus running between [postpaid brand] and [prepaid brand] — first-month free, bill credit, port-in bonus? Reps don't always volunteer it.",
46
+ "lock_in_writing": "Please email confirmation of: conversion date, final postpaid bill amount, device installment status, SIM logistics, and confirmation that the number is preserved.",
47
+ "graceful_close": "Thanks. Conversion on [date], device balance $[X] handled by [method], SIM via [eSIM/ship], confirmation number [number], number preserved."
48
+ },
49
+ "tactics": [
50
+ {
51
+ "name": "Align the switch with cycle end",
52
+ "when": "First substantive turn.",
53
+ "script": "Use `ask_cycle_alignment`. Conversion mid-cycle = paying postpaid for unused days. The 1-3 days before cycle end is the sweet spot.",
54
+ "priority": 1
55
+ },
56
+ {
57
+ "name": "Recognise wrong-queue / retention",
58
+ "when": "Rep starts running postpaid save offers.",
59
+ "script": "Use `queue_check` and `transfer_request`. The prepaid activation / conversion team is the one that can actually perform the conversion. Retention's job is to prevent it.",
60
+ "priority": 2
61
+ },
62
+ {
63
+ "name": "Settle the device installment question first",
64
+ "when": "Within the first 5 minutes.",
65
+ "script": "Use `device_installment_check`. If the balance accelerates to a final bill, the user may want to pay it down first or delay conversion. If it 'follows' to a sub-brand, less of an issue.",
66
+ "priority": 3
67
+ },
68
+ {
69
+ "name": "Burn non-transferable credits before converting",
70
+ "when": "Before the conversion is scheduled.",
71
+ "script": "Use `credits_check`. Autopay credits, port-in promos, manufacturer rebates frequently zero out on postpaid-to-prepaid conversion. Use them up first (or apply them to the final bill).",
72
+ "priority": 4
73
+ },
74
+ {
75
+ "name": "Ask explicitly about switch incentives",
76
+ "when": "Before final confirmation.",
77
+ "script": "Use `ask_switch_promo`. Same-carrier-family conversions often have hidden incentives — first month free on prepaid, port-in bonus, bill credit. Not volunteered unless asked.",
78
+ "priority": 5
79
+ },
80
+ {
81
+ "name": "Pin SIM / eSIM logistics",
82
+ "when": "Before final confirmation.",
83
+ "script": "Use `sim_logistics`. Activating before the SIM arrives leaves a service gap. eSIM avoids this entirely if the device supports it."
84
+ },
85
+ {
86
+ "name": "Get it in writing",
87
+ "when": "Before ending the call.",
88
+ "script": "Use `lock_in_writing`. Conversion bugs (number lost, double-bill, device balance disappearing into the void) are common — written confirmation is the lever to fix them."
89
+ }
90
+ ],
91
+ "boundaries": [
92
+ "Do NOT cancel the postpaid line as a separate step before converting — that releases the number and can break the conversion.",
93
+ "Do NOT convert if a critical device-installment promo (e.g. 'pay $0 for the iPhone with 36 months of postpaid service') is still running. Conversion typically voids the promo and accelerates the full retail price.",
94
+ "Do NOT skip checking whether the prepaid plan has the same data / hotspot / international coverage. Cheaper plans often cut these silently.",
95
+ "Do NOT trust autopay-credit promises that 'transfer over' — get the dollar amount and apply mechanism in writing."
96
+ ],
97
+ "success_signals": [
98
+ "Conversion scheduled at end of postpaid cycle.",
99
+ "Device installment status disclosed with clear next step.",
100
+ "Non-transferable credits identified and burn plan in place.",
101
+ "Switch incentive applied (if available).",
102
+ "SIM/eSIM logistics confirmed with no service gap."
103
+ ],
104
+ "failure_signals": [
105
+ "Rep insists conversion must take effect today (will create overlap charge).",
106
+ "Device balance status is hand-waved — no clear final amount.",
107
+ "Switch is being processed as a 'cancel + new account' instead of a conversion — that's a port-out, treat it as such.",
108
+ "Number transfer cannot be confirmed."
109
+ ],
110
+ "exit_strategy": {
111
+ "on_success": "Confirm date, balances, SIM logistics. Calendar the conversion date and a 7-day follow-up to verify billing landed correctly.",
112
+ "on_failure": "Step back and treat as a full port-out to a different carrier — sometimes a competitor prepaid (Mint / US Mobile / Tello) is cleaner than the same-family prepaid arm. Use `port-mobile-number-survive-retention`.",
113
+ "follow_ups": [
114
+ "Day before scheduled conversion: confirm via app the work order is still set.",
115
+ "Day after conversion: verify the line is active on prepaid, the number is preserved, and that postpaid shows final-bill status.",
116
+ "Within 14 days: verify the final postpaid bill matches expectations and no recurring postpaid charge continues.",
117
+ "Within 30 days: verify all credits/incentives applied as promised."
118
+ ]
119
+ },
120
+ "required_user_info": [
121
+ "Account number, holder name, billing zip on postpaid",
122
+ "Phone number to convert",
123
+ "Target prepaid plan and brand",
124
+ "Device installment balance (if any) and device finance terms",
125
+ "Outstanding account credits",
126
+ "Postpaid cycle start/end dates"
127
+ ],
128
+ "contributed_by": "utility-telecom agent (v0.9.87 community drop)",
129
+ "updated_at": "2026-05-20T06:09:47Z"
130
+ }