@agenticmail/core 0.9.32 → 0.9.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +106 -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 +117 -0
  118. package/dist/skills/built-in/report-fbi-tip.json +109 -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,134 @@
1
+ {
2
+ "id": "pharmacy-callback",
3
+ "name": "Pharmacy Callback: Prior Auth, Generic Substitution, Drug Interactions",
4
+ "version": "1.0.0",
5
+ "category": "medical-admin",
6
+ "tags": [
7
+ "pharmacy",
8
+ "prior-authorization",
9
+ "substitution",
10
+ "interactions",
11
+ "phone-call",
12
+ "healthcare"
13
+ ],
14
+ "description": "Handle a callback FROM (or TO) the operator's pharmacy when they flag a prior-auth requirement, propose a generic / brand / therapeutic substitution, or raise a drug-interaction concern. Get the pharmacy unblocked without making clinical decisions on the operator's behalf.",
15
+ "disclaimer": "Not medical advice. Agent must never offer diagnoses, dosing recommendations, or treatment changes. Surface those decisions to the operator via ask_operator. Substitution decisions and interaction resolutions are ALWAYS clinical and require the prescribing provider.",
16
+ "context": {
17
+ "when_to_use": "Pharmacy has left a voicemail, texted, or sent a portal message about a prescription that needs additional action: PA required, suggested substitution (generic / therapeutic equivalent / different formulation), or flagged interaction with another medication on file. Operator forwards to agent for triage and admin work.",
18
+ "preconditions": [
19
+ "Operator's name, DOB (read-only), pharmacy + branch.",
20
+ "The specific medication in question — name, strength, dose form, exactly as the operator described or as it appears on the prescription.",
21
+ "Prescriber name + clinic.",
22
+ "Operator's full current medication list (for interaction context — DO NOT use to make clinical calls; pass to pharmacist if asked).",
23
+ "Insurance plan + member ID (read-only) — needed for PA routing.",
24
+ "Operator's preference: brand-only, generic-fine, or unknown.",
25
+ "Voicemail or text content if the pharmacy reached out first."
26
+ ],
27
+ "estimated_call_duration_minutes": 10
28
+ },
29
+ "principles": [
30
+ "There are three categories of pharmacy callback, and the right response differs sharply: (1) PA paperwork — admin task, agent can drive; (2) substitution proposal — CLINICAL, agent surfaces to operator + prescriber; (3) interaction flag — CLINICAL, agent gets details + routes to prescriber/pharmacist.",
31
+ "Pharmacy is allowed to dispense the GENERIC of what the prescriber wrote unless the prescription says 'Dispense As Written' or the operator/prescriber has expressed brand preference. That's process. But ANY OTHER substitution (different drug, different strength, different formulation) requires prescriber authorization.",
32
+ "When the pharmacy says 'the doctor changed your prescription', they may mean (a) the prescriber actually sent an updated e-script, or (b) the pharmacy suggested a change and is treating tentative as final. ALWAYS verify with the prescriber's office.",
33
+ "Pharmacists are clinical professionals — they're not making things up when they flag an interaction. Take it seriously, get the details, route to the prescriber. But the AGENT does not adjudicate.",
34
+ "Pharmacy callbacks that get ignored result in: PAs that time out, prescriptions auto-reversed off the queue, and operators discovering empty bottles on a Friday night. Close the loop within 24 hours."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi, I'm calling back on behalf of [Operator] in response to the message about [medication]. Can you walk me through what's needed?",
38
+ "diagnose_callback_type": "Just to align — is this about (a) a prior authorization, (b) a substitution suggestion, or (c) a drug-interaction concern? I want to make sure I route this correctly on our end.",
39
+ "pa_admin_track": "For the prior auth — what's the form / portal the prescriber needs to use, and is there anything we can do from the patient side to help? I'll loop in the prescriber's office as soon as we hang up.",
40
+ "substitution_clarify": "What exactly is being proposed — substitution from [original drug] to [proposed]? Is this a generic-for-brand swap, or a different molecule / therapeutic class? And who is proposing it — the prescriber, or the pharmacy?",
41
+ "substitution_decline_holding": "Until we can verify with the prescriber, please hold the original prescription as written. Don't dispense a substitution today. The operator will follow up after speaking with their doctor.",
42
+ "interaction_detail_request": "Can I speak with the pharmacist? I want to make sure I capture exactly which medications interact, the severity, and what the pharmacist recommends — so I can pass that to the prescriber accurately.",
43
+ "request_prescriber_loop_in": "Could you send the prescriber a note about this through your system as well? That way both of us are pinging them, and they have the question in their EMR.",
44
+ "ask_about_bridge_supply": "While we sort this out, can the operator get a few days of supply to bridge? They have [X doses] left.",
45
+ "stall_research": "One moment — let me check the medication list the operator gave me.",
46
+ "verify_readback": "So: callback was about [PA / substitution / interaction] for [medication]. Action on our side: contact prescriber to [authorize PA / approve or decline substitution / address interaction]. Pharmacy will [hold script / dispense as-written / await prescriber response]. Reference [number]. Right?",
47
+ "graceful_close": "Thanks for the call. I'll get back to you within [timeline] after I've reached the prescriber. Please don't dispense any change without their authorization."
48
+ },
49
+ "tactics": [
50
+ {
51
+ "name": "Identify which of the three callback types this is",
52
+ "when": "First substantive turn.",
53
+ "script": "Use `diagnose_callback_type`. Each type has a different downstream workflow. Mixing them up wastes time and risks acting on a clinical question administratively.",
54
+ "priority": 1
55
+ },
56
+ {
57
+ "name": "PA: take the admin baton",
58
+ "when": "Callback is a prior-auth requirement.",
59
+ "script": "Use `pa_admin_track`. Get: which form, which portal, fax number for prescriber to send to. Then call the prescriber's office (chain to `referral-prior-authorization` skill). Agent can drive this — it's paperwork.",
60
+ "priority": 2
61
+ },
62
+ {
63
+ "name": "Substitution: HOLD the script, route to prescriber",
64
+ "when": "Callback proposes any substitution beyond simple generic-for-brand of the same molecule.",
65
+ "script": "Use `substitution_clarify` to capture exactly what's being proposed and by whom. Then use `substitution_decline_holding` — explicitly instruct the pharmacy NOT to dispense the substitution. Surface to operator AND to prescriber's office. The prescriber decides.",
66
+ "priority": 3
67
+ },
68
+ {
69
+ "name": "Interaction: escalate to pharmacist, then prescriber",
70
+ "when": "Callback flags a drug interaction.",
71
+ "script": "Use `interaction_detail_request`. Capture: interacting medication(s), severity (mild / moderate / major / contraindicated), pharmacist's recommendation. Surface to operator immediately AND route to prescriber. Do NOT make any 'just skip a dose' or 'switch to X' decision on this call.",
72
+ "priority": 4
73
+ },
74
+ {
75
+ "name": "Pause and re-verify on 'doctor changed it'",
76
+ "when": "Pharmacy claims the prescriber has already authorized a change.",
77
+ "script": "Hard boundary. Do NOT accept this on the pharmacy's word, no matter how confident the rep sounds. Hang up, call the prescriber, verify the change exists in their EMR with date and prescriber name. Substitution-by-claim is a known error category.",
78
+ "priority": 5
79
+ },
80
+ {
81
+ "name": "Ask for a bridge supply if the resolution will take days",
82
+ "when": "Operator is running out of medication while waiting.",
83
+ "script": "Use `ask_about_bridge_supply`. Many pharmacies can provide 3-7 day emergency supplies of non-controlled chronic medications. Worth asking; costs nothing.",
84
+ "priority": 6
85
+ },
86
+ {
87
+ "name": "Document the pharmacist's name and findings",
88
+ "when": "Interaction or substitution discussion.",
89
+ "script": "Get the pharmacist's name on record. When the prescriber gets the question, knowing 'Pharmacist Jane Doe at [pharmacy] flagged [interaction]' is more actionable than 'the pharmacy called'.",
90
+ "priority": 7
91
+ }
92
+ ],
93
+ "boundaries": [
94
+ "NEVER share or guess the operator's SSN, DOB, or member ID — read back only what the operator explicitly provided.",
95
+ "NEVER accept a 'your doctor changed your prescription' claim from the pharmacy — always verify with the prescriber's office directly. This is the single most consequential boundary on this skill.",
96
+ "NEVER authorise a substitution (brand→generic except where legally automatic; therapeutic substitution; strength change; formulation change) on the operator's behalf. ALL substitutions beyond direct generic equivalents require prescriber.",
97
+ "NEVER make a clinical judgment about drug interactions — even if you 'know' the operator takes the interacting medication and 'know' the standard advice. Route every interaction question to the prescriber/pharmacist.",
98
+ "NEVER agree to dispense a different medication, different strength, or different schedule, even on the operator's verbal agreement, without prescriber authorization.",
99
+ "NEVER tell the pharmacy what the operator's diagnosis is unless the operator has explicitly authorized that disclosure and it's directly relevant (e.g. for PA paperwork the prescriber will sign)."
100
+ ],
101
+ "success_signals": [
102
+ "Callback type correctly identified.",
103
+ "PA: prescriber looped in with the right form/portal info, reference logged.",
104
+ "Substitution: pharmacy on HOLD, prescriber asked to decide, operator informed.",
105
+ "Interaction: pharmacist's name + interaction details captured, prescriber notified.",
106
+ "Bridge supply secured if operator was running low."
107
+ ],
108
+ "failure_signals": [
109
+ "Pharmacy refuses to hold script and is about to dispense a substitution the prescriber hasn't authorized — escalate to pharmacy manager and to prescriber on-call simultaneously.",
110
+ "Interaction is potentially severe and prescriber unreachable — surface to operator immediately as clinical urgency.",
111
+ "PA paperwork in indefinite loop — escalate via `referral-prior-authorization` skill.",
112
+ "Pharmacy and prescriber give contradictory accounts and operator can't get medication."
113
+ ],
114
+ "exit_strategy": {
115
+ "on_success": "Confirm: callback type, action taken, owner of next step, ETA, and what the pharmacy will do in the interim (hold / fill as-written / bridge fill). Operator knows what's pending and what to expect.",
116
+ "on_failure": "Politely close. Report to operator: who said what, what's blocking, recommended escalation (prescriber on-call / pharmacy manager / clinical urgency). Do not pretend resolution if there is none.",
117
+ "follow_ups": [
118
+ "Call prescriber's office within 1 business day for substitution/interaction questions.",
119
+ "Track PA through to approval (use `referral-prior-authorization` skill).",
120
+ "Follow up with pharmacy once prescriber has responded — confirm script is unstuck."
121
+ ]
122
+ },
123
+ "required_user_info": [
124
+ "Operator's name, DOB (read-only), pharmacy + branch",
125
+ "Medication name, strength, dose form (operator's words)",
126
+ "Prescriber name + clinic",
127
+ "Operator's full current medication list (for context only)",
128
+ "Insurance plan + member ID (read-only)",
129
+ "Brand vs generic preference if known",
130
+ "Original pharmacy message content (voicemail/text/portal)"
131
+ ],
132
+ "contributed_by": "healthcare-navigator agent (v0.9.87 community drop)",
133
+ "updated_at": "2026-05-20T06:09:47Z"
134
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "id": "pivot-mid-call",
3
+ "name": "Pivot Mid-Call When the Original Goal Is Unreachable",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "meta-skill",
8
+ "adaptive-strategy",
9
+ "phone-call",
10
+ "negotiation",
11
+ "goal-reframing",
12
+ "critical-reasoning"
13
+ ],
14
+ "description": "Recognise when the primary ask has hit a real (not invented) wall, and pivot to a different ask that is achievable, defensible, and worth the call's remaining minutes. Do not pretend the original goal is still alive; do not waste the call on dead negotiation.",
15
+ "disclaimer": null,
16
+ "context": {
17
+ "when_to_use": "Any call where the rep, after legitimate escalation and probing, cannot grant the primary ask. Especially common in: refund requests after a clear cutoff, plan changes blocked by contract, claims denied by a real exclusion, services unavailable in user's area.",
18
+ "preconditions": [
19
+ "Agent has already attempted escalation per `push-past-invented-policy`.",
20
+ "Agent has a clear understanding of the user's underlying need (not just the literal ask).",
21
+ "Agent has been authorised to negotiate within a range, not just to deliver a single request."
22
+ ],
23
+ "estimated_call_duration_minutes": 5
24
+ },
25
+ "principles": [
26
+ "The literal ask is the surface; the underlying need is the substance. Pivoting means finding a DIFFERENT surface that satisfies the same substance.",
27
+ "Pivot opportunities: credit instead of refund, future discount instead of past credit, service upgrade instead of price cut, fee waiver instead of monthly reduction, account note for future leverage instead of immediate concession.",
28
+ "Pivot only when the wall is REAL. Pivoting prematurely concedes leverage you still have.",
29
+ "When pivoting, name the pivot out loud. 'Okay — if the refund isn't possible, what IS on the table?' This invites the rep into co-design rather than continued refusal.",
30
+ "Document the pivot. A consolation outcome you can't verify is worth less than a primary outcome you can.",
31
+ "Some pivots are bad pivots — accepting a worse contract for a one-time credit, taking a free month that triggers an upsell. Run any pivot through `spot-bait-and-switch` before saying yes."
32
+ ],
33
+ "phrases": {
34
+ "name_the_wall": "It sounds like [primary ask] genuinely isn't available here. I want to make sure I heard that right.",
35
+ "invite_alternatives": "If that's off the table, what IS available? I'd rather leave this call with something useful than nothing.",
36
+ "propose_specific_pivot": "Would [alternative ask] be something you could do instead? It's not what I came for, but it gets us partway there.",
37
+ "soft_ladder": "I understand. Could we explore: (a) a one-time credit, (b) a future-bill credit, (c) waiving the [fee], or (d) a note on my account I can reference later?",
38
+ "document_pivot": "Great — could you read that back so I have it exactly, and give me a confirmation number?"
39
+ },
40
+ "tactics": [
41
+ {
42
+ "name": "Confirm the wall is real",
43
+ "when": "After at least one escalation has reaffirmed the refusal.",
44
+ "script": "Use `name_the_wall`. Forces the rep to confirm the no on the record — important if you ever escalate later. Also gives them one last chance to soften.",
45
+ "priority": 1
46
+ },
47
+ {
48
+ "name": "Open the pivot space",
49
+ "when": "Wall confirmed.",
50
+ "script": "Use `invite_alternatives`. Often the rep already has a pivot offer queued and was waiting for an opening.",
51
+ "priority": 2
52
+ },
53
+ {
54
+ "name": "Offer a ladder of pivots",
55
+ "when": "Rep doesn't volunteer alternatives.",
56
+ "script": "Use `soft_ladder`. Listing 3-4 specific options is easier for a rep to act on than 'anything else'. They'll often pick the one they can do.",
57
+ "priority": 3
58
+ },
59
+ {
60
+ "name": "Run the pivot through bait-and-switch checks",
61
+ "when": "Rep proposes a pivot.",
62
+ "script": "Before accepting, ask: what's the duration, what's the reversion, what's the contract impact, what's the bundle dependency. See `spot-bait-and-switch`.",
63
+ "priority": 4
64
+ },
65
+ {
66
+ "name": "Document the pivot in writing",
67
+ "when": "About to close.",
68
+ "script": "Use `document_pivot`. Verbal pivots evaporate. Confirmation numbers, dated emails, and account notes survive."
69
+ },
70
+ {
71
+ "name": "Bank a small win even if you wanted a big one",
72
+ "when": "Pivot is small but real.",
73
+ "script": "Accept it cleanly without grumbling. A $20 credit + a note on the account beats a 30-minute argument that ends in zero."
74
+ }
75
+ ],
76
+ "alternative_interpretations": [
77
+ {
78
+ "observation": "Rep firmly refuses the refund but mentions a 'one-time courtesy credit'.",
79
+ "consider": [
80
+ "Genuine pivot — they cannot do refund, can do credit, treat as success.",
81
+ "Pivot with strings: credit applied to next bill, but autopay enrollment required.",
82
+ "Smaller-than-asked: $10 credit vs. $80 refund — accept only if no better is available.",
83
+ "Setup for a larger upsell — 'I can also offer you...' incoming."
84
+ ],
85
+ "next_action": "Ask: amount, applied when, any conditions. Then decide."
86
+ },
87
+ {
88
+ "observation": "Rep offers a free service upgrade instead of a price cut.",
89
+ "consider": [
90
+ "Genuine value if the user actually wants the upgrade.",
91
+ "Trojan upsell — free for 3 months, then $15/mo unless cancelled.",
92
+ "Counts as 'engaged customer' for retention metrics — gets the rep off the hook without saving the user money.",
93
+ "Real but worthless — user has no use for the upgraded feature."
94
+ ],
95
+ "next_action": "Ask whether it's truly free for the life of the account, and whether it can be removed any time without penalty."
96
+ },
97
+ {
98
+ "observation": "Rep won't pivot at all — refuses primary ask AND won't suggest alternatives.",
99
+ "consider": [
100
+ "Wall is genuinely total; this rep cannot give anything.",
101
+ "Wrong department — pivots may be available from retention/loyalty/billing.",
102
+ "Bad rep day — try `reset-by-callback`.",
103
+ "User's account is in a state (collections, fraud review) that blocks all discretion."
104
+ ],
105
+ "next_action": "Ask explicitly: 'Is there a different team or department where a pivot would be possible?'"
106
+ }
107
+ ],
108
+ "boundaries": [
109
+ "Do NOT accept a pivot worse than no-deal (e.g., contract extension for a $5 credit).",
110
+ "Do NOT pivot without flagging to the operator if the user pre-authorised only the original ask.",
111
+ "Do NOT keep pivoting forever — two pivot rounds is usually the limit. Three is desperation.",
112
+ "Do NOT pretend the pivot is the original ask in the post-call report."
113
+ ],
114
+ "success_signals": [
115
+ "Rep proposes a pivot voluntarily.",
116
+ "Pivot has clear terms (amount, date, no strings).",
117
+ "Rep agrees to put pivot in writing.",
118
+ "User would have authorised the pivot if asked in advance."
119
+ ],
120
+ "failure_signals": [
121
+ "Rep refuses both primary and all alternatives.",
122
+ "Pivots offered all carry worse total terms than walking away.",
123
+ "Pivot 'credits' come with autopay/contract/bundle hooks the user hasn't authorised.",
124
+ "Pivot requires a separate call to a department that's closed."
125
+ ],
126
+ "exit_strategy": {
127
+ "on_success": "Accept the pivot, confirm in writing, flag clearly in the post-call report what was achieved vs. originally asked.",
128
+ "on_failure": "Walk away clean — no false-pivot acceptance. Report to operator with clarity about why the wall was real.",
129
+ "follow_ups": [
130
+ "If pivot was a future-dated credit, calendar a check that it actually appears.",
131
+ "If pivot was a 'note on the account', leverage it on the next interaction by reference."
132
+ ]
133
+ },
134
+ "required_user_info": [
135
+ "The underlying need, not just the literal ask.",
136
+ "Range of acceptable alternative outcomes (or authority to pivot at agent's discretion).",
137
+ "Whether the user wants to be re-consulted before accepting a pivot."
138
+ ],
139
+ "contributed_by": "critical-reasoning agent (v0.9.87 community drop)",
140
+ "updated_at": "2026-05-20T06:09:47Z"
141
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "id": "port-mobile-number-survive-retention",
3
+ "name": "Port a Mobile Number Out — Surviving the Retention Reflex",
4
+ "version": "1.0.1",
5
+ "category": "subscription",
6
+ "tags": [
7
+ "telecom",
8
+ "mobile",
9
+ "port-out",
10
+ "number-portability",
11
+ "retention",
12
+ "phone-call",
13
+ "utility-telecom"
14
+ ],
15
+ "description": "Call the LOSING mobile carrier (or use their port-out PIN flow) to release a number to a new carrier, getting the account number + port-out PIN + zip code needed for the port — without getting stuck in a 45-minute retention save-the-line script.",
16
+ "disclaimer": "The actual port is initiated by the GAINING carrier, not the losing one. The losing carrier's only legal role is to provide the account number, port-out PIN, billing zip, and not block the port. If a rep claims they can 'process the port for you', that is incorrect — they cannot, and the framing is a stall.",
17
+ "context": {
18
+ "when_to_use": "User has chosen a new carrier and wants to bring their existing mobile number. Call the losing carrier ONLY to obtain port-out credentials; the actual port happens at the new carrier. Many carriers now provide the PIN in-app — try that first before calling.",
19
+ "preconditions": [
20
+ "User has chosen a new carrier and has an account / SIM (or eSIM QR) ready.",
21
+ "User knows the account number on the losing carrier and the account-holder's name exactly as it appears on the bill.",
22
+ "Billing zip code on file with the losing carrier.",
23
+ "User has paid off any device installment plan OR accepts that porting may accelerate the remaining balance.",
24
+ "User understands the number must be ACTIVE on the losing carrier at the moment of port (do not cancel before porting)."
25
+ ],
26
+ "estimated_call_duration_minutes": 20
27
+ },
28
+ "principles": [
29
+ "Try the app / web port-out PIN flow FIRST. AT&T, Verizon, T-Mobile, and most MVNOs let you generate a port-out PIN in the account portal without a phone call at all.",
30
+ "If you must call: state the goal ONCE, clearly, then hold the line on it. 'I need my account number, port-out PIN, and billing zip. I am not switching back today.'",
31
+ "Retention scripts are designed to extend the call. Every 'let me check one thing' adds 4-7 minutes. Politely refuse offers without engaging them on merit.",
32
+ "Do NOT cancel before porting. Cancelling first releases the number to a recycling pool and the port becomes impossible. The port itself cancels the line cleanly at completion.",
33
+ "Recognise wrong-queue early: 'customer care' often routes to retention by default. The team you actually need is sometimes called 'port-out' or 'account services'."
34
+ ],
35
+ "phrases": {
36
+ "opener": "Hi, I need a port-out PIN, my account number, and my billing zip on file. I'm porting my number to a new carrier. I'm not looking to switch back today — please don't run a retention offer. Just the three pieces of information.",
37
+ "queue_check": "Quick check — are you the port-out / account-services team, or retention? I'd like to be with whoever can issue the PIN.",
38
+ "transfer_request": "Could you do a warm transfer to port-out / account services and stay on the line until they pick up? I'd rather not lose my hold position.",
39
+ "decline_retention_polite": "Thanks, I've already made the call on this — really just need the port-out PIN, account number, and zip so we can wrap up.",
40
+ "decline_retention_firm": "I'm sure the offers are real, but I'm not considering them today. If you can't issue the PIN, please transfer me to someone who can — no point burning your shift on it.",
41
+ "device_balance_check": "Quick check on my device — what's the remaining installment balance, and when does porting trigger it to bill? I want to make sure I'm not surprised.",
42
+ "esim_check": "I have an eSIM. Will porting deactivate the eSIM profile automatically, or do I need to remove it from my device after the port completes?",
43
+ "ask_pin_expiration": "How long is the port-out PIN valid? I want to start the port at the new carrier within that window.",
44
+ "graceful_close": "Thanks. I have account number [number], port-out PIN [PIN], billing zip [zip], PIN valid until [time]. Device balance is $[X]. I'm initiating the port with the new carrier now."
45
+ },
46
+ "tactics": [
47
+ {
48
+ "name": "Try self-serve first",
49
+ "when": "Before any call.",
50
+ "script": "Check the losing carrier's app or website for 'Number transfer PIN' / 'Port-out PIN'. Major US carriers (AT&T, Verizon, T-Mobile, Cricket, Mint, Google Fi) all expose this without a call. Calling is the fallback.",
51
+ "priority": 1
52
+ },
53
+ {
54
+ "name": "State the ask once, clearly",
55
+ "when": "First substantive turn on the call.",
56
+ "script": "Use the `opener`. Naming the three pieces (account number, PIN, zip) AND naming the goal (port) AND preemptively declining retention compresses a 45-minute call into a 12-minute one.",
57
+ "priority": 2
58
+ },
59
+ {
60
+ "name": "Recognise wrong-queue within 60 seconds",
61
+ "when": "Rep starts asking 'what would it take to keep you' or 'can I run a quick offer'.",
62
+ "script": "Use `queue_check` and `transfer_request`. If the rep can't transfer, use the `decline_retention_polite` phrase. If it persists, use `decline_retention_firm`.",
63
+ "priority": 3
64
+ },
65
+ {
66
+ "name": "Decline offers without engaging",
67
+ "when": "Rep makes any save offer.",
68
+ "script": "Use `decline_retention_polite`. Do NOT counter-offer or explain WHY you're leaving — every word fuels the next script branch. A single polite no is faster than a debate.",
69
+ "priority": 4
70
+ },
71
+ {
72
+ "name": "Verify device installment status",
73
+ "when": "Before ending the call.",
74
+ "script": "Use `device_balance_check`. If a device is on installments, porting typically accelerates the remaining balance to a single charge on the final bill. Knowing the number prevents a billing surprise.",
75
+ "priority": 5
76
+ },
77
+ {
78
+ "name": "Confirm PIN expiration window",
79
+ "when": "After receiving the PIN.",
80
+ "script": "Use `ask_pin_expiration`. Port-out PINs are short-lived (typically 7 days, sometimes 24 hours). Start the port at the new carrier within the window."
81
+ },
82
+ {
83
+ "name": "Do NOT cancel the line",
84
+ "when": "Rep asks 'do you want me to schedule cancellation for today as well?'.",
85
+ "script": "Politely refuse. The port itself cancels the line. Cancelling first releases the number and breaks the port."
86
+ }
87
+ ],
88
+ "boundaries": [
89
+ "Do NOT cancel the line before the port completes — the number will be recycled and the port fails.",
90
+ "Do NOT share the port-out PIN with anyone except the gaining carrier. PIN + account number is enough for a port-out attack — guard them like a password.",
91
+ "Do NOT agree to a 'new plan to keep you' that adds another term commitment. The rep is recording acceptance and you've just bought another 24 months.",
92
+ "Do NOT get drawn into debating why you're leaving. 'I've made my decision' is a complete sentence.",
93
+ "Do NOT port a number that is not in the user's name without the account holder's authorisation — port-out fraud is a federal issue."
94
+ ],
95
+ "success_signals": [
96
+ "Account number, port-out PIN, and billing zip provided.",
97
+ "Device installment balance disclosed.",
98
+ "PIN expiration time confirmed.",
99
+ "Rep does not insist on retention before releasing the PIN."
100
+ ],
101
+ "failure_signals": [
102
+ "Rep refuses to issue a PIN without 'discussing options'.",
103
+ "Rep claims the PIN is sent only via mail (a stall — federal rules require near-real-time PIN delivery).",
104
+ "Hold time exceeds 30 minutes solely on PIN issuance.",
105
+ "Rep tries to cancel the line 'to make the port easier' — refuse and escalate."
106
+ ],
107
+ "exit_strategy": {
108
+ "on_success": "Confirm the three credentials, log the PIN expiration time, and immediately initiate the port at the gaining carrier. Do nothing else with the losing-carrier account until the port completes.",
109
+ "on_failure": "If a carrier refuses to issue a port-out PIN, file a complaint with the FCC (consumercomplaints.fcc.gov) citing 47 CFR 52.36 — carriers are legally required to facilitate port-out. Most refusals reverse within 24 hours of an FCC notice.",
110
+ "follow_ups": [
111
+ "Initiate the port at the new carrier within the PIN expiration window.",
112
+ "Keep the old SIM in the device or accessible until the port completes — if it fails, you'll need to retry.",
113
+ "After port confirmation: verify the final bill from the losing carrier (including device payoff if any).",
114
+ "Watch for any unexpected reactivation charges in the next 30 days."
115
+ ]
116
+ },
117
+ "required_user_info": [
118
+ "Account number on losing carrier",
119
+ "Account holder's name as it appears on the bill",
120
+ "Billing zip on file",
121
+ "Phone number to be ported",
122
+ "Whether any devices are on installment plans",
123
+ "Gaining carrier name and readiness to port"
124
+ ],
125
+ "contributed_by": "utility-telecom agent (v0.9.87 community drop)",
126
+ "updated_at": "2026-05-20T06:09:47Z"
127
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "id": "prescription-refill-followup",
3
+ "name": "Follow Up on a Delayed Prescription or Refill",
4
+ "version": "1.0.0",
5
+ "category": "medical-admin",
6
+ "tags": [
7
+ "pharmacy",
8
+ "prescription",
9
+ "refill",
10
+ "phone-call",
11
+ "medication",
12
+ "healthcare"
13
+ ],
14
+ "description": "Call the prescriber's office and/or pharmacy to chase down a refill that's stuck — the e-script that 'was sent' but never arrived, the controlled-substance refill the doctor hasn't authorized, the prior-auth that's been pending for a week.",
15
+ "disclaimer": "Not medical advice. Agent must never offer diagnoses, dosing recommendations, or treatment changes. Surface those decisions to the operator via ask_operator.",
16
+ "context": {
17
+ "when_to_use": "Operator has a refill that has not arrived, is delayed, or is being held up by a process step (prior auth, prescriber sign-off, pharmacy stock, insurance). NOT for starting a new prescription or changing dose — those are clinical decisions and route to the operator's prescriber directly.",
18
+ "preconditions": [
19
+ "Operator's name, DOB (read-only), pharmacy name + location.",
20
+ "Exact medication name, strength, dose form (tablet/capsule/liquid/inhaler) as the operator stated it — do NOT abbreviate or guess.",
21
+ "Prescriber name and clinic.",
22
+ "How many doses operator has left (used for urgency assessment, NOT for dose advice).",
23
+ "Whether this is a controlled substance (CII-CV) — those have different refill rules.",
24
+ "Last fill date if known, and what the operator was told about the delay so far."
25
+ ],
26
+ "estimated_call_duration_minutes": 12
27
+ },
28
+ "principles": [
29
+ "Refills get stuck in 4 places, and you need to know which one before you can unstick: (a) prescriber hasn't authorized, (b) pharmacy hasn't received or processed, (c) insurance prior auth pending, (d) drug out of stock at that pharmacy. Diagnose first.",
30
+ "Call the pharmacy first — they can tell you EXACTLY where the script is in the queue, including whether the prescriber has responded.",
31
+ "Controlled substances (Adderall, opioids, benzos, etc.) have legal requirements that no amount of pressure changes — a kind, well-prepared call still has to wait for the prescriber to sign in-system.",
32
+ "If you're running out before the prescriber can refill, ask the pharmacy about an 'emergency supply' or 'bridge fill' — many states allow 3-7 days. This is a process question, not a clinical one.",
33
+ "Never accept the pharmacy saying 'the doctor changed your prescription' on this call. Verify with the prescriber directly — substitution errors and miscommunication are common."
34
+ ],
35
+ "phrases": {
36
+ "opener_pharmacy": "Hi, I'm calling on behalf of [Operator]. We have a refill for [medication, strength, dose form] from Dr. [prescriber] that hasn't come through. Can you check exactly where it is in your system — whether you've received it, whether it's awaiting prescriber approval, or whether there's an insurance hold?",
37
+ "opener_prescriber": "Hi, I'm calling for [Operator], patient of Dr. [Name]. They have a refill request pending for [medication, strength, dose form] that the pharmacy says is awaiting the prescriber's sign-off. Can you check the queue and confirm it's been sent?",
38
+ "diagnose_stage": "So just to be clear on where it's stuck: is this on the PRESCRIBER side, the PHARMACY side, or the INSURANCE side?",
39
+ "ask_about_bridge_fill": "If the prescriber can't sign off today, is there a bridge fill or 3-day emergency supply you can do? Operator is down to [X doses].",
40
+ "verify_substitution_claim": "You mentioned the prescription was changed by the doctor — to what specifically, and when? I'll need to verify with the prescriber before we accept that change.",
41
+ "pa_status_check": "If there's a prior authorization pending, what's the reference number, when was it submitted, and who needs to act next?",
42
+ "stock_check": "If you don't have it in stock, can you tell me which nearby pharmacy in the same chain does? Or should we transfer the script?",
43
+ "controlled_substance_check": "I understand this is a controlled substance and there are limits on what you can do over the phone. What does the prescriber need to do, and what's the soonest that can happen?",
44
+ "stall_research": "One moment — let me check what the operator has on hand.",
45
+ "verify_readback": "So: [medication] from Dr. [name], stuck at [stage], next action is [what], by [who], by [when]. Pickup expected [date]. Did I get that right?",
46
+ "graceful_close": "Thank you. Could you note in the system that we called and that the operator is low? That'll help if anyone else looks at this."
47
+ },
48
+ "tactics": [
49
+ {
50
+ "name": "Diagnose the stuck stage first",
51
+ "when": "First substantive turn — usually with the pharmacy.",
52
+ "script": "Use `opener_pharmacy` + `diagnose_stage`. Until you know WHERE the script is stuck, calling the prescriber is wasted effort. Pharmacies have full visibility on queue status; prescribers often don't.",
53
+ "priority": 1
54
+ },
55
+ {
56
+ "name": "Pause and re-verify any 'doctor changed it' claim",
57
+ "when": "Pharmacy says the prescription was changed by the doctor.",
58
+ "script": "Use `verify_substitution_claim`. Do NOT accept this on the pharmacy's word. Hang up, call the prescriber, confirm what was actually ordered and why. Substitution errors are common and can be harmful. This is a hard boundary — if you cannot reach the prescriber to verify, surface to `ask_operator` before any pickup.",
59
+ "priority": 2
60
+ },
61
+ {
62
+ "name": "Ask for a bridge fill if running out",
63
+ "when": "Operator is < 3 days of doses remaining and the refill won't resolve in time.",
64
+ "script": "Use `ask_about_bridge_fill`. Many states allow pharmacists to dispense a small emergency supply of non-controlled, ongoing medications. Worth asking — costs the pharmacy nothing.",
65
+ "priority": 3
66
+ },
67
+ {
68
+ "name": "Track the prior auth if that's the blocker",
69
+ "when": "Pharmacy says PA is pending.",
70
+ "script": "Use `pa_status_check`. Then call the prescriber's office and use the `referral-prior-authorization` skill to chase the PA. Pharmacy cannot move a PA forward — only the prescriber + insurance can.",
71
+ "priority": 4
72
+ },
73
+ {
74
+ "name": "Solve out-of-stock with a transfer, not a wait",
75
+ "when": "Pharmacy doesn't have the drug.",
76
+ "script": "Use `stock_check`. Operator can have the script transferred to a sister branch or another chain that has stock. Verify in-network status with the operator's insurance before transferring.",
77
+ "priority": 5
78
+ },
79
+ {
80
+ "name": "Set realistic expectations for controlled substances",
81
+ "when": "Medication is a controlled substance.",
82
+ "script": "Use `controlled_substance_check`. Legal/DEA rules constrain everyone. The right move is to set up the prescriber's sign-off proactively and stop pushing the pharmacy for things they cannot legally do.",
83
+ "priority": 6
84
+ },
85
+ {
86
+ "name": "Escalate to a pharmacist (not tech) for clinical questions",
87
+ "when": "Pharmacy tech can't answer something substantive.",
88
+ "script": "Politely ask to speak with the pharmacist on duty. Techs handle queue questions; pharmacists handle interactions, substitutions, and bridge-fill decisions.",
89
+ "priority": 7
90
+ }
91
+ ],
92
+ "boundaries": [
93
+ "NEVER share or guess the operator's SSN, DOB, or member ID — read back only what the operator explicitly provided.",
94
+ "NEVER accept a 'your doctor changed your prescription' claim from the pharmacy without verifying with the prescriber directly — route to `ask_operator` if verification cannot happen on this call.",
95
+ "NEVER authorise a substitution (brand→generic, one drug→another, dose change, frequency change) on the operator's behalf. Substitutions are clinical decisions.",
96
+ "NEVER discuss dose adjustments, interactions, or whether the operator should keep taking the medication — those are prescriber/pharmacist conversations, not agent conversations.",
97
+ "NEVER agree to controlled-substance early refills, partial fills, or any departure from what the e-script says without explicit operator approval AND prescriber confirmation.",
98
+ "NEVER pressure pharmacy staff to ignore an insurance hold or PA requirement — that's how prescriptions get flagged and rejected entirely."
99
+ ],
100
+ "success_signals": [
101
+ "Exact stuck stage identified (prescriber / pharmacy / insurance / stock).",
102
+ "Concrete next step assigned with an owner and timeline.",
103
+ "Bridge fill obtained if operator was running out.",
104
+ "If substitution was claimed: verified or rejected with the prescriber directly."
105
+ ],
106
+ "failure_signals": [
107
+ "Pharmacy and prescriber give contradictory accounts of where the script is.",
108
+ "Controlled substance refill cannot be authorized in operator's clinical window.",
109
+ "Prior auth denied and prescriber unwilling to appeal — surface to operator.",
110
+ "Operator is out of medication and no bridge fill available — escalate as clinical urgency to prescriber on-call."
111
+ ],
112
+ "exit_strategy": {
113
+ "on_success": "Confirm: medication, strength, dose form, prescriber, pharmacy, expected pickup time, any bridge fill, any PA reference number. Operator knows exactly when and where to pick up.",
114
+ "on_failure": "Politely close. Report blocker clearly — separate facts from claims (e.g. 'pharmacy says doctor changed it; this was NOT verified with prescriber'). Present options to operator.",
115
+ "follow_ups": [
116
+ "If PA pending, set a callback for 2-3 business days later.",
117
+ "If transferred to a different pharmacy, confirm pickup the same day.",
118
+ "If clinical urgency, escalate to prescriber's on-call line — do not wait for next business day."
119
+ ]
120
+ },
121
+ "required_user_info": [
122
+ "Operator's name, DOB (read-only)",
123
+ "Pharmacy name + branch location",
124
+ "Exact medication name, strength, dose form (operator's words)",
125
+ "Prescriber name + clinic",
126
+ "Doses remaining (for urgency, not dose advice)",
127
+ "Insurance plan + member ID (read-only) if a PA is involved",
128
+ "Whether the medication is a controlled substance"
129
+ ],
130
+ "contributed_by": "healthcare-navigator agent (v0.9.87 community drop)",
131
+ "updated_at": "2026-05-20T06:09:47Z"
132
+ }