@agenticmail/core 0.9.32 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/skills/built-in/accommodation-intake.json +132 -0
- package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
- package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
- package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
- package/dist/skills/built-in/anti-social-engineering.json +153 -0
- package/dist/skills/built-in/anything-else-sweep.json +120 -0
- package/dist/skills/built-in/apologise-correctly.json +126 -0
- package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
- package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
- package/dist/skills/built-in/bant-discovery-call.json +125 -0
- package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
- package/dist/skills/built-in/bookmark-close.json +113 -0
- package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
- package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
- package/dist/skills/built-in/calibrated-questions.json +155 -0
- package/dist/skills/built-in/call-911-fire.json +118 -0
- package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
- package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
- package/dist/skills/built-in/call-988-crisis-line.json +106 -0
- package/dist/skills/built-in/call-poison-control.json +115 -0
- package/dist/skills/built-in/call-police-non-emergency.json +114 -0
- package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
- package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
- package/dist/skills/built-in/cancel-policy-clean.json +130 -0
- package/dist/skills/built-in/capture-rep-identity.json +113 -0
- package/dist/skills/built-in/childcare-provider-intake.json +157 -0
- package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
- package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
- package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
- package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
- package/dist/skills/built-in/contractor-estimate-request.json +142 -0
- package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
- package/dist/skills/built-in/cpa-intake-call.json +134 -0
- package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
- package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
- package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
- package/dist/skills/built-in/deliver-difficult-news.json +122 -0
- package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
- package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
- package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
- package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
- package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
- package/dist/skills/built-in/dispute-denied-claim.json +143 -0
- package/dist/skills/built-in/dispute-security-deposit.json +130 -0
- package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
- package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
- package/dist/skills/built-in/document-call-promises.json +145 -0
- package/dist/skills/built-in/early-lease-termination.json +126 -0
- package/dist/skills/built-in/elite-line-escalation.json +107 -0
- package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
- package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
- package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
- package/dist/skills/built-in/file-habitability-complaint.json +115 -0
- package/dist/skills/built-in/financial-aid-appeal.json +128 -0
- package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
- package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
- package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
- package/dist/skills/built-in/handle-callback-stall.json +120 -0
- package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
- package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
- package/dist/skills/built-in/handle-time-pressure.json +159 -0
- package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
- package/dist/skills/built-in/hoa-dispute.json +123 -0
- package/dist/skills/built-in/hold-time-strategy.json +137 -0
- package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
- package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
- package/dist/skills/built-in/humour-when-it-lands.json +127 -0
- package/dist/skills/built-in/i20-visa-dso.json +134 -0
- package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
- package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
- package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
- package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
- package/dist/skills/built-in/late-add-petition.json +128 -0
- package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
- package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
- package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
- package/dist/skills/built-in/medical-records-transfer.json +138 -0
- package/dist/skills/built-in/medical-withdrawal.json +131 -0
- package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
- package/dist/skills/built-in/mirror-technique.json +145 -0
- package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
- package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
- package/dist/skills/built-in/move-out-walkthrough.json +114 -0
- package/dist/skills/built-in/multi-channel-escalation.json +141 -0
- package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
- package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
- package/dist/skills/built-in/no-as-opening.json +154 -0
- package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
- package/dist/skills/built-in/outage-credit-applied.json +127 -0
- package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
- package/dist/skills/built-in/pediatric-school-forms.json +141 -0
- package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
- package/dist/skills/built-in/pharmacy-callback.json +134 -0
- package/dist/skills/built-in/pivot-mid-call.json +141 -0
- package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
- package/dist/skills/built-in/prescription-refill-followup.json +132 -0
- package/dist/skills/built-in/push-past-invented-policy.json +159 -0
- package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
- package/dist/skills/built-in/reach-executive-office.json +137 -0
- package/dist/skills/built-in/read-vocal-cues.json +139 -0
- package/dist/skills/built-in/read-vocal-tone.json +159 -0
- package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
- package/dist/skills/built-in/receive-difficult-news.json +115 -0
- package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
- package/dist/skills/built-in/recover-summary-refusal.json +121 -0
- package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
- package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
- package/dist/skills/built-in/referral-prior-authorization.json +130 -0
- package/dist/skills/built-in/refuse-the-split.json +142 -0
- package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
- package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
- package/dist/skills/built-in/rental-scam-report.json +125 -0
- package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
- package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
- package/dist/skills/built-in/report-elder-or-child-abuse.json +117 -0
- package/dist/skills/built-in/report-fbi-tip.json +109 -0
- package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
- package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
- package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
- package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
- package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
- package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
- package/dist/skills/built-in/request-welfare-check.json +127 -0
- package/dist/skills/built-in/request-written-confirmation.json +113 -0
- package/dist/skills/built-in/reschedule-appointment.json +121 -0
- package/dist/skills/built-in/reset-by-callback.json +143 -0
- package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
- package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
- package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
- package/dist/skills/built-in/roommate-replacement.json +121 -0
- package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
- package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
- package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
- package/dist/skills/built-in/social-security-replacement-card.json +122 -0
- package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
- package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
- package/dist/skills/built-in/stop-recurring-ach.json +127 -0
- package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
- package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
- package/dist/skills/built-in/therapist-intake-call.json +133 -0
- package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
- package/dist/skills/built-in/transcript-request.json +128 -0
- package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
- package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
- package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
- package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
- package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
- package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
- package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
- package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
- package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
- package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
- package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
- package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
- package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
- package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
- package/dist/skills/built-in/walkaway-threats.json +159 -0
- package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
- package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
- package/dist/skills/built-in/wire-funds-safely.json +129 -0
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "request-supervisor-gracefully",
|
|
3
|
+
"name": "Request a Supervisor Without Burning the Rep's Goodwill",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"category": "customer-service",
|
|
6
|
+
"tags": [
|
|
7
|
+
"escalation",
|
|
8
|
+
"supervisor",
|
|
9
|
+
"phone-call",
|
|
10
|
+
"rapport",
|
|
11
|
+
"warm-transfer",
|
|
12
|
+
"customer-support"
|
|
13
|
+
],
|
|
14
|
+
"description": "Ask for a supervisor in a way that the front-line rep transfers you with positive notes, not as a 'difficult customer'. The same words said two different ways produce wildly different downstream calls.",
|
|
15
|
+
"disclaimer": null,
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "You've given the current rep a fair shot (at least one full exchange of ask + response), and you need authority they don't have. Use after `get-past-tier-1-script` confirms you've hit the ceiling, OR directly when the issue is obviously above the rep's pay grade (six-figure refunds, account closures, multi-month service credits).",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Rep has given a substantive 'no' or 'I can't do that' at least once.",
|
|
20
|
+
"User is calm and willing to spend another 15-30 minutes.",
|
|
21
|
+
"User has the case/account number ready to repeat to the supervisor (you WILL re-verify)."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 15
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"How you ask determines how you arrive. A respectful supervisor request gets you a warm intro ('this is a great customer who's been patient'); a hostile one gets you a cold intro ('escalation, refused to accept policy').",
|
|
27
|
+
"Praise the current rep on the way out. Supervisors hear EVERY customer complain about their reps; a customer who compliments theirs stands out and arrives pre-credited with reasonability.",
|
|
28
|
+
"Never use the word 'demand'. Even when you have the right to demand, the word triggers a defensive posture in the rep that they will carry into the handoff note.",
|
|
29
|
+
"Frame the escalation as 'I want to be sure', not 'you're wrong'. Supervisors exist to confirm; reps don't lose points when supervisors confirm them. They DO lose points when supervisors overturn them, so the rep is incentivized to hand you off only if they expect to be backed up — give them a reason to expect collaboration instead.",
|
|
30
|
+
"The supervisor's job is risk management, not customer service. They escalate decisions when the alternative (regulator complaint, public review, executive escalation) costs the company more. Hint at that future without threatening it.",
|
|
31
|
+
"Repetition is a tell. Reps trained to 'overcome objections' use a 3-strike script (refuse, refuse with rationale, refuse with empathy). Counting strikes lets you predict when the rep is at the end of their objection list and ready to transfer."
|
|
32
|
+
],
|
|
33
|
+
"phrases": {
|
|
34
|
+
"praise_then_pivot": "You've been really patient with this, and I can tell you've done what you can within your tools. Could you bring in your supervisor — not because you've done anything wrong, but because I want to be sure we've explored everything before I make a call on this?",
|
|
35
|
+
"the_calibration_ask": "I want to calibrate my expectations. If your supervisor were on the line right now, is there ANYTHING they could do that you can't? If yes, let's get them on. If genuinely no, I want to know so I can decide what to do next.",
|
|
36
|
+
"the_collaborative_frame": "I think we both want the same outcome here — I keep my service and you close this ticket as resolved. To get there, can we loop in someone with broader authority?",
|
|
37
|
+
"the_documented_ask": "I'd like to formally request a supervisor. Could you note in the file that I made that request at [time]? I want to make sure the request is on the record.",
|
|
38
|
+
"respond_to_no_supervisor": "I understand they're not at the desk this moment. What's the soonest they're available for a callback, and could you schedule that for me with a case number?",
|
|
39
|
+
"respond_to_overconfidence": "I hear you that the answer would be the same. I'd still like the supervisor to confirm that — not because I doubt you, but because it's the kind of decision I'd rather hear from the person who owns the policy.",
|
|
40
|
+
"graceful_handoff_close": "Before you transfer me — thank you. Genuinely. Could you give the supervisor a quick brief so I don't have to start over? And could I get your name and ID for my notes so I can credit you if this works out?"
|
|
41
|
+
},
|
|
42
|
+
"tactics": [
|
|
43
|
+
{
|
|
44
|
+
"name": "Earn the ask before making it",
|
|
45
|
+
"when": "Before the first supervisor request.",
|
|
46
|
+
"script": "Spend at least one substantive turn working with the rep — accept one of their suggestions if reasonable, try one of their workflows. Reps transfer cooperative customers more willingly than customers who escalated on entry.",
|
|
47
|
+
"priority": 1,
|
|
48
|
+
"decision_point": "If the rep actually solves it during this earning round — STOP. Don't escalate out of habit. Many calls resolve at tier-1 if you let them."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "Praise → pivot",
|
|
52
|
+
"when": "First supervisor request.",
|
|
53
|
+
"script": "Use `praise_then_pivot`. The praise is genuine — the rep IS limited by their tools, that's the company's design, not their failure. Naming that openly converts them from gatekeeper to ally.",
|
|
54
|
+
"priority": 2
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "Calibrate authority",
|
|
58
|
+
"when": "Rep says 'the supervisor will say the same thing'.",
|
|
59
|
+
"script": "Use `the_calibration_ask`. It's a fair question: if supervisors genuinely can't do more, you need to know that to pivot to a different channel. If they can, the rep just told on themselves.",
|
|
60
|
+
"priority": 3,
|
|
61
|
+
"decision_point": "If the rep's honest answer is 'no, they genuinely cannot do more' AND you trust them — believe it. Pivot to `multi-channel-escalation` or `invoke-regulator-firmly`. If the rep waffles ('well, technically yes but...'), keep pushing for the transfer."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Document the request",
|
|
65
|
+
"when": "Rep tries to deflect more than once.",
|
|
66
|
+
"script": "Use `the_documented_ask`. Asking for the request to be logged is a quiet signal that you'll follow up — most companies' policies REQUIRE that documented supervisor requests be honored, and the rep knows it.",
|
|
67
|
+
"priority": 4
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Handle 'supervisor unavailable'",
|
|
71
|
+
"when": "Rep claims no supervisor is around.",
|
|
72
|
+
"script": "Use `respond_to_no_supervisor`. Get a callback scheduled with a case number — that's a contractual breadcrumb. Then add: 'And if the callback doesn't happen by [time], can I call back and reference that case number?' Locks the loop.",
|
|
73
|
+
"priority": 5,
|
|
74
|
+
"decision_point": "If callback doesn't materialize within the promised window + 30 minutes: do NOT call back to the same queue. Use `multi-channel-escalation` — email + social, in parallel."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "Counter 'they'll say the same'",
|
|
78
|
+
"when": "Rep insists the answer is fixed.",
|
|
79
|
+
"script": "Use `respond_to_overconfidence`. The fact that you'd still like to hear it from the supervisor is a perfectly reasonable preference and impossible to refuse without sounding obstructive.",
|
|
80
|
+
"priority": 6
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "Set up the warm handoff",
|
|
84
|
+
"when": "Rep agrees to transfer.",
|
|
85
|
+
"script": "Use `graceful_handoff_close`. Ask the rep to brief the supervisor BEFORE you go on hold — that way the supervisor arrives with the rep's framing, which (because you treated them well) will be favorable.",
|
|
86
|
+
"priority": 7
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"boundaries": [
|
|
90
|
+
"Do NOT raise your voice or speak over the rep — even once. It's the single fastest way to get cold-transferred or hung up on.",
|
|
91
|
+
"Do NOT say 'I want a supervisor' as your first sentence. It triggers the deflection script.",
|
|
92
|
+
"Do NOT lie about the rep ('he was rude to me') to escalate. The call is recorded and the supervisor will hear the truth.",
|
|
93
|
+
"Do NOT name-drop the CEO, regulators, or lawsuits in this skill — that's a different altitude. See `invoke-regulator-firmly` and `reach-executive-office`.",
|
|
94
|
+
"Do NOT accept 'we don't have supervisors' as a final answer — every customer-facing operation has someone with more authority. The phrasing might change ('shift lead', 'on-duty manager', 'escalation specialist'), but the role exists.",
|
|
95
|
+
"Do NOT spend more than ~3 attempts on supervisor request in one call. If three respectful asks fail, the rep is going to wear you down faster than you wear them down. End politely and switch channels."
|
|
96
|
+
],
|
|
97
|
+
"success_signals": [
|
|
98
|
+
"Rep says 'one moment, let me grab them'.",
|
|
99
|
+
"Rep gives a specific callback time AND a case number.",
|
|
100
|
+
"Rep starts speaking more slowly and softly — they've shifted out of script.",
|
|
101
|
+
"Supervisor introduces themselves by full name + title (a sign they're real and accountable).",
|
|
102
|
+
"Supervisor opens with 'I've been briefed' rather than 'tell me what's going on' — warm handoff worked."
|
|
103
|
+
],
|
|
104
|
+
"failure_signals": [
|
|
105
|
+
"Rep claims 'I AM the supervisor' on first ask without prior context (see `bypass-i-am-the-supervisor`).",
|
|
106
|
+
"Rep agrees to transfer, you go on hold, and the line drops or routes back to the IVR.",
|
|
107
|
+
"Rep promises a callback that doesn't happen within window + 30 min.",
|
|
108
|
+
"Supervisor arrives but reads the same script verbatim — you've been handed to another tier-1 wearing a title.",
|
|
109
|
+
"Rep refuses to give a name or ID after being asked twice."
|
|
110
|
+
],
|
|
111
|
+
"exit_strategy": {
|
|
112
|
+
"on_success": "Get supervisor's name, title, employee ID, direct callback number (or scheduling). Restate the problem and the resolution you want in two sentences. Stop talking — supervisors negotiate against silence, not against more arguments.",
|
|
113
|
+
"on_failure": "Politely end the call with a documented case number. Wait 24-48 hours and pivot: `multi-channel-escalation` if it's a service issue, `invoke-regulator-firmly` if you have a real regulator angle, `reach-executive-office` if the dollar amount or harm is significant.",
|
|
114
|
+
"follow_ups": [
|
|
115
|
+
"Email the company's published support address within 24h restating the call + case number + the supervisor's promised action. Creates a paper trail.",
|
|
116
|
+
"If a callback was promised: set a calendar alert for the promise time + 30 minutes. If missed, immediately call back referencing the case number.",
|
|
117
|
+
"Log the rep's name + ID + the supervisor's name + ID for future calls. Continuity matters."
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
"required_user_info": [
|
|
121
|
+
"Account number / login email",
|
|
122
|
+
"Current rep's name and ID (if already on a call)",
|
|
123
|
+
"Specific outcome wanted (one sentence)",
|
|
124
|
+
"Any prior case numbers from earlier interactions",
|
|
125
|
+
"User's preferred callback window"
|
|
126
|
+
],
|
|
127
|
+
"contributed_by": "support-escalator agent (v0.9.87 community drop)",
|
|
128
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
129
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "request-welfare-check",
|
|
3
|
+
"name": "Request a Police Welfare Check",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"category": "emergency-services",
|
|
6
|
+
"tags": [
|
|
7
|
+
"police",
|
|
8
|
+
"welfare-check",
|
|
9
|
+
"wellness-check",
|
|
10
|
+
"concern",
|
|
11
|
+
"non-emergency",
|
|
12
|
+
"emergency_services"
|
|
13
|
+
],
|
|
14
|
+
"description": "Call the local non-emergency police line to request a welfare / wellness check on someone the operator is worried about but can't reach.",
|
|
15
|
+
"disclaimer": "Welfare checks are a double-edged tool. Police arriving at someone's home can escalate situations — especially for people who are armed, in psychiatric distress, undocumented, or members of communities that have had bad outcomes with police welfare checks. The agent must make sure the operator has CONSIDERED these risks and explicitly authorised the call anyway. When alternatives exist (a neighbour, a building manager, a relative who has a key), prefer them; suggest them via ask_operator before placing the call.",
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Operator is concerned about a person — elderly relative not answering the phone for days, friend who sent a worrying text and went silent, neighbour they haven't seen in a long time. They've tried other channels, have no one local who can check, and want police to do a wellness check.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Operator's explicit authorisation, AFTER being asked whether a non-police alternative is available.",
|
|
20
|
+
"Subject's name and address (apartment number if relevant).",
|
|
21
|
+
"Operator's relationship to the subject (relative / friend / neighbour) — dispatchers ask.",
|
|
22
|
+
"What the operator knows — last contact, why they're worried, any health / mental-health context that's safe to share.",
|
|
23
|
+
"Whether the subject is known to be armed, has firearms in the home, has a history of mental-health crisis, or is in a vulnerable group (the dispatcher needs this so they can route the right responders)."
|
|
24
|
+
],
|
|
25
|
+
"estimated_call_duration_minutes": 12
|
|
26
|
+
},
|
|
27
|
+
"principles": [
|
|
28
|
+
"Ask the operator whether a non-police alternative is available BEFORE placing the call. A neighbour with a key, a building manager, family closer to the subject. If yes, suggest using them first.",
|
|
29
|
+
"Identify as an AI on the first sentence.",
|
|
30
|
+
"Give the dispatcher full context: relationship, last contact, what's worrying, ANY mental-health / weapons context. The dispatcher can route to a co-responder model (crisis-trained team) in many jurisdictions if they know.",
|
|
31
|
+
"Don't push the dispatcher toward a forced entry or a particular response. Describe; let them decide.",
|
|
32
|
+
"Follow up — get a case number, and get a callback commitment if possible."
|
|
33
|
+
],
|
|
34
|
+
"phrases": {
|
|
35
|
+
"ask_operator_about_alternatives": "Before I place this call, has the operator tried a neighbour, building manager, or a relative who's closer? Police welfare checks can escalate situations — if there's a non-police option, it's often better. Please confirm whether to proceed with the police call.",
|
|
36
|
+
"opener": "Hi — I'm an AI assistant calling on behalf of <operator>. We'd like to request a welfare check for <subject name> at <address>. My operator is <relationship>. They last heard from <subject> on <date> and are worried because <reason>. May I walk you through the context?",
|
|
37
|
+
"share_context_clearly": "Some context the responders should know: <mental-health history if any> / <firearms in the home if known> / <medical conditions> / <pets in the home>. My operator wanted you to have this so the right team responds.",
|
|
38
|
+
"ask_for_response_window": "Roughly when do you think an officer will be able to make the check? My operator is anxious and would like to know what to expect.",
|
|
39
|
+
"ask_for_case_number": "Could I get a case or incident number, and someone to call back if my operator doesn't hear anything?",
|
|
40
|
+
"callback_offer": "Operator's callback number is <number>. They'd appreciate hearing from the officer after the check.",
|
|
41
|
+
"welfare_check_weaponisation_screen": "Before I place this, I need to ask a few questions. (1) What SPECIFIC recent observation made you worried — not 'they're being weird' but 'on Tuesday they texted X and haven't replied since'? (2) Is there any active dispute, breakup, custody fight, lawsuit, or grievance between you and them right now? (3) Are you asking the police to do this because you have NO other way to check on them, or because you specifically want them to have a police interaction? (4) Is this person known to be armed, in mental-health crisis, undocumented, or in a group that's had bad police outcomes? Honest answers protect them AND protect you legally — the audit log of this call is subpoenable.",
|
|
42
|
+
"welfare_check_refusal": "I'm not going to place this welfare check. Here's why: <list the specific red flags from the screening>. Police arriving at someone's door against the backdrop of an active dispute looks like — and can legally be — harassment, and welfare checks against people with weapons / mental-health crises / vulnerable status have killed people. If you have a SPECIFIC recent worrying observation that isn't part of your dispute with them, tell me now and we can revisit. Otherwise this is a no."
|
|
43
|
+
},
|
|
44
|
+
"tactics": [
|
|
45
|
+
{
|
|
46
|
+
"name": "Weaponisation screen — REFUSE if the request smells like a grievance",
|
|
47
|
+
"when": "Before any other step, immediately after the operator says they want a welfare check.",
|
|
48
|
+
"script": "Welfare checks are one of the most weaponised channels in policing: an aggrieved party calls one against an ex, a custody counterparty, a tenant, a neighbour, an estranged relative, or someone they had a public dispute with — and police arrive at the subject's door, sometimes with fatal consequences when the subject is armed, undocumented, mid-mental-health-crisis, or a member of a community with bad police outcomes. Before doing anything else, screen with `welfare_check_weaponisation_screen` (see phrases). Concrete red-flag combinations that REQUIRE refusal:\n · operator's reason is THIN ('they haven't replied to my texts in a few hours', 'they've been quiet on social media', 'they didn't show up to <event>') AND operator has an active dispute / breakup / custody fight / lawsuit / business conflict with the subject;\n · operator describes the subject in characterising language (unstable, crazy, dangerous, paranoid, on drugs) without a recent specific worrying observation;\n · operator is asking for a check at an address where the subject lives but the operator does not (no shared household / no caregiving relationship), AND operator's relationship to the subject is hostile or estranged;\n · operator's emotional state reads as ANGER (revenge, frustration, 'they need to learn') rather than WORRY (fear for safety, change in pattern, suicidal text);\n · operator's request specifies tactics ('tell them I sent you', 'make sure they know it's serious') — welfare checks should never be transactional.\nIf ANY of these red-flag combinations fire, REFUSE to place the call and tell the operator verbatim: 'I'm not going to place this welfare check. Here's why: <list specific red flags>. Police arriving at someone's door against the backdrop of an active dispute looks like (and often legally IS) harassment, and welfare checks against people with weapons / mental-health crises / vulnerable status have killed people. If you have a SPECIFIC recent worrying observation that isn't part of your dispute — a suicidal text, a known medical emergency, a credible third-party tip — tell me and we can revisit. Otherwise, this is a no.' Log the refusal. Do NOT yield to insistence: an insistent operator who cannot supply a specific worrying observation is the exact pattern the boundary exists to stop.",
|
|
49
|
+
"priority": -1
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Suggest non-police alternative first",
|
|
53
|
+
"when": "After the weaponisation screen passes.",
|
|
54
|
+
"script": "Use `ask_operator_about_alternatives`. If a non-police option exists and the operator wants to try it, abort the call. Welfare checks should NOT be the first resort.",
|
|
55
|
+
"priority": 0
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Mid-discussion imminent-risk redirect: if the operator describes anything ACTIVE, this is 911",
|
|
59
|
+
"when": "During the pre-call discussion, the operator's information shifts from 'haven't heard from them' to 'I just heard them scream / a gunshot / they texted that they're hurting themselves right now / I can hear violence on the line'.",
|
|
60
|
+
"script": "Stop the welfare-check path immediately. Tell the operator: 'That changes this — what you're describing is a live emergency. I'm going to switch us to 911 instead of a welfare check; the response is different and faster.' Then route to the appropriate call-911-* skill. Welfare checks are for ABSENCE of contact and concern; once there's PRESENCE of active distress, it's 911.",
|
|
61
|
+
"priority": 1
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Open with relationship + worry + reason",
|
|
65
|
+
"when": "First substantive turn.",
|
|
66
|
+
"script": "Use `opener`. Dispatcher needs the WHY to route correctly.",
|
|
67
|
+
"priority": 1
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Share weapons / mental-health context proactively",
|
|
71
|
+
"when": "Before the dispatcher asks (if you have any).",
|
|
72
|
+
"script": "Use `share_context_clearly`. This is what determines whether a regular patrol or a crisis-trained team responds. Many jurisdictions now have co-responder programs that specifically help in mental-health welfare checks — they can't dispatch the right team unless they know.",
|
|
73
|
+
"priority": 2
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Ask for response window + case number",
|
|
77
|
+
"when": "Toward the end of the call.",
|
|
78
|
+
"script": "Use `ask_for_response_window` and `ask_for_case_number`."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "Offer callback number",
|
|
82
|
+
"when": "Before closing.",
|
|
83
|
+
"script": "Use `callback_offer`. The operator deserves a follow-up call from the officer."
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"boundaries": [
|
|
87
|
+
"NEVER request a welfare check without operator authorisation AFTER discussing alternatives.",
|
|
88
|
+
"NEVER misrepresent the situation to escalate the response (e.g., calling a welfare check 'a possible domestic situation' to get a faster response when there's no evidence).",
|
|
89
|
+
"NEVER place a welfare check for someone the operator is in conflict with as a harassment tactic. The audit log makes that clear and exposes the operator to legal risk.",
|
|
90
|
+
"NEVER place a welfare check when the operator's stated concern lacks any SPECIFIC recent worrying observation (a single missed text, a quiet weekend, a no-show at an event is NOT a welfare-check-grade reason). 'I just have a bad feeling' is not enough.",
|
|
91
|
+
"NEVER place a welfare check when the operator has an active dispute / breakup / custody fight / lawsuit / business conflict with the subject UNLESS the operator can articulate a specific recent worrying observation that exists INDEPENDENT of the dispute (e.g., a suicidal text, a known medical event, a credible third-party tip). The dispute context plus thin observation is the SWATting / harassment pattern and the agent refuses regardless of operator insistence.",
|
|
92
|
+
"NEVER place a welfare check at the operator's prescribed tactic ('tell them I sent you', 'make sure officers know it's serious'). Welfare checks are not a message-delivery service.",
|
|
93
|
+
"NEVER continue down the welfare-check path once the operator describes anything ACTIVELY happening (audible distress, recent worrying message about right-now harm). Switch to 911.",
|
|
94
|
+
"NEVER omit mental-health / weapons context if known — that omission directly worsens outcomes.",
|
|
95
|
+
"NEVER fabricate context to get a more sympathetic response."
|
|
96
|
+
],
|
|
97
|
+
"success_signals": [
|
|
98
|
+
"Dispatcher confirms a unit will be dispatched within a stated window.",
|
|
99
|
+
"Dispatcher offers a co-responder / crisis-trained team where appropriate.",
|
|
100
|
+
"Dispatcher commits to a callback to the operator after the check.",
|
|
101
|
+
"Case number captured."
|
|
102
|
+
],
|
|
103
|
+
"failure_signals": [
|
|
104
|
+
"Dispatcher says they can't / won't dispatch (some jurisdictions require more concrete signs of distress) — relay the alternative the dispatcher suggests.",
|
|
105
|
+
"Operator declines to proceed once they hear the alternative options — that's a success on the alternatives front, not a failure.",
|
|
106
|
+
"Operator pushes back on the weaponisation screen, insists on the call without producing a specific recent worrying observation, becomes hostile when asked about a dispute with the subject — REFUSE the call, log the refusal verbatim. This pattern is exactly what the boundary exists to stop.",
|
|
107
|
+
"Dispatcher is escalating the situation in a way the operator didn't intend — pause: 'My operator wants a wellness check, not an arrest. Can we keep it at that level?'"
|
|
108
|
+
],
|
|
109
|
+
"exit_strategy": {
|
|
110
|
+
"on_success": "Confirm response window and case number. Email operator with the summary, expected window, and a 'call back if you don't hear from them by <time>' nudge.",
|
|
111
|
+
"on_failure": "Email operator the dispatcher's recommended alternative. Help arrange it (call the building manager, etc) if appropriate.",
|
|
112
|
+
"follow_ups": [
|
|
113
|
+
"Email operator after the call with case number, window, and dispatcher's commitments.",
|
|
114
|
+
"Calendar a check-in for the end of the response window — if no callback received, follow up to the non-emergency line referencing the case number."
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"required_user_info": [
|
|
118
|
+
"Operator's explicit authorisation AFTER discussion of alternatives",
|
|
119
|
+
"Subject's name and full address (apartment number if relevant)",
|
|
120
|
+
"Operator's relationship to the subject",
|
|
121
|
+
"Last contact date + why the operator is worried",
|
|
122
|
+
"Any mental-health, weapons, medical, or pet context to share with responders",
|
|
123
|
+
"Operator's callback number",
|
|
124
|
+
"Whether the subject's neighbours / building manager / relatives have been tried"
|
|
125
|
+
],
|
|
126
|
+
"contributed_by": "AgenticMail core team (emergency-services bundle v0.9.87)"
|
|
127
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "request-written-confirmation",
|
|
3
|
+
"name": "Request Written Confirmation Before Hanging Up",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "other",
|
|
6
|
+
"tags": [
|
|
7
|
+
"closing",
|
|
8
|
+
"written-confirmation",
|
|
9
|
+
"email",
|
|
10
|
+
"paper-trail",
|
|
11
|
+
"phone-call",
|
|
12
|
+
"closing-commitment"
|
|
13
|
+
],
|
|
14
|
+
"description": "Before saying goodbye, request a written confirmation of the agreement via email, in-account portal note, SMS, or mailed letter — and pin a specific arrival window. Verbal lock-in is necessary; written confirmation is the durable artifact most companies will honour without dispute.",
|
|
15
|
+
"disclaimer": null,
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Any call that produced a commitment, change, refund, credit, schedule, or set of conditions. ALWAYS request written confirmation, even when the rep says 'it's not necessary' — that's exactly when it's most necessary.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Terms have already been locked verbally (see `lock-in-terms-verbally`).",
|
|
20
|
+
"The user has a working email address, portal login, or mailing address on file.",
|
|
21
|
+
"The rep has acknowledged the agreement exists in their system."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 3
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"Email > portal > SMS > mailed letter, in that order. Email is searchable, timestamped, forwardable, and unambiguous.",
|
|
27
|
+
"Ask for the written confirmation BEFORE you accept the agreement, not after. 'I'll need that in writing — can you send it before we hang up?' is leverage; asking afterwards is begging.",
|
|
28
|
+
"Pin an arrival window. 'You'll get it' is a non-commitment. 'Within 24 hours' is a checkable claim.",
|
|
29
|
+
"Insist that the written version include the same specifics: amount, date, duration, conditions, rollback rules, reference number, and rep ID.",
|
|
30
|
+
"If the company 'cannot send' written confirmation, that itself is a written-able fact — get them to email saying so. Refusal-to-confirm-in-writing is a documentable warning sign."
|
|
31
|
+
],
|
|
32
|
+
"phrases": {
|
|
33
|
+
"opener": "Before we finish, could you send me a written confirmation of what we just agreed to? Email is ideal — and ideally within the next 24 hours so I can reference it if anything looks different on the next bill.",
|
|
34
|
+
"format_preference": "What format do you usually send those in — email, an in-account notification, or mailed letter? Email is best for me if it's an option.",
|
|
35
|
+
"content_spec": "Could you make sure the email includes the new [amount / date / credit / conditions] and the reference number [R]? That way I can cross-check it against my notes.",
|
|
36
|
+
"arrival_window_pin": "When should I expect it to land — same day, 24 hours, 3 business days? I'll set a reminder so I follow up if I don't see it.",
|
|
37
|
+
"no_email_workaround": "If you can't send email directly, can you add a detailed note to my account that I can screenshot from the portal? Or is there a chat transcript that gets emailed?",
|
|
38
|
+
"refusal_documentation": "Just so I'm clear — your company doesn't provide written confirmation of [type of change]? I'd like to note that, and could you tell me where that policy is published?",
|
|
39
|
+
"graceful_close_success": "Perfect, I'll watch my inbox for the email from [domain] within [window] — referencing case [R]. Thanks for sending that.",
|
|
40
|
+
"graceful_close_failure": "I'd like to escalate this — I'm not comfortable closing on a change with no paper trail. Could you get me a supervisor before we hang up?"
|
|
41
|
+
},
|
|
42
|
+
"tactics": [
|
|
43
|
+
{
|
|
44
|
+
"name": "Ask for written confirmation as part of the close, not after it",
|
|
45
|
+
"when": "Immediately after locking verbal terms.",
|
|
46
|
+
"script": "Use the `opener` phrase. Bundling the written request with the close makes it a routine step rather than an exceptional ask.",
|
|
47
|
+
"priority": 1
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "Pin the format",
|
|
51
|
+
"when": "Rep agrees to send something written.",
|
|
52
|
+
"script": "Use the `format_preference` phrase. Steer toward email; accept portal note as a strong second; treat 'we'll mail you a letter' as a yellow flag (slow, often gets lost).",
|
|
53
|
+
"priority": 2
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "Specify the content",
|
|
57
|
+
"when": "Rep agrees to send a confirmation.",
|
|
58
|
+
"script": "Use the `content_spec` phrase. Generic confirmation emails ('thank you for being a customer') are useless. Force the rep to commit to including the specifics.",
|
|
59
|
+
"priority": 3
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "Pin the arrival window",
|
|
63
|
+
"when": "After format and content are agreed.",
|
|
64
|
+
"script": "Use the `arrival_window_pin` phrase. The window becomes the trigger for the follow-up — if nothing arrives, you have grounds to call back referencing this exact commitment.",
|
|
65
|
+
"priority": 4
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Work around 'we can't email'",
|
|
69
|
+
"when": "Rep claims they cannot send email confirmation.",
|
|
70
|
+
"script": "Use the `no_email_workaround` phrase. Portal note, SMS, chat transcript, mailed letter — get SOMETHING in writing. If literally nothing is possible, escalate.",
|
|
71
|
+
"priority": 5
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "Document the refusal",
|
|
75
|
+
"when": "Company genuinely refuses any written confirmation.",
|
|
76
|
+
"script": "Use the `refusal_documentation` phrase. Capture the rep stating the policy verbally so the refusal itself is on the recording. Then escalate.",
|
|
77
|
+
"priority": 6
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"boundaries": [
|
|
81
|
+
"Do NOT accept 'we already sent it' without checking inbox during the call when feasible — confirmations sometimes go to spam, wrong address, or were never actually sent.",
|
|
82
|
+
"Do NOT settle for a marketing email that vaguely mentions 'recent account changes'. Confirmation = the SPECIFIC change, with the SPECIFIC numbers.",
|
|
83
|
+
"Do NOT close the call without an expected arrival window. 'Eventually' = never.",
|
|
84
|
+
"Do NOT email-bomb the rep with follow-up requests during the same call — one clean ask + content spec + window is enough."
|
|
85
|
+
],
|
|
86
|
+
"success_signals": [
|
|
87
|
+
"Rep states the email will arrive within a specific window (e.g. 'within the next 2 hours').",
|
|
88
|
+
"Rep reads back the email address on file to verify delivery.",
|
|
89
|
+
"Rep proactively says 'I'm including the reference number and the new rate in the email'.",
|
|
90
|
+
"Confirmation arrives during the call itself — gold standard."
|
|
91
|
+
],
|
|
92
|
+
"failure_signals": [
|
|
93
|
+
"Rep says 'you'll see it on your next bill' as a substitute for written confirmation.",
|
|
94
|
+
"Rep is vague on arrival window ('soon', 'when the system updates').",
|
|
95
|
+
"Rep refuses to confirm the email will include specific terms.",
|
|
96
|
+
"Company policy reportedly bans written confirmation for this type of change — major red flag, escalate."
|
|
97
|
+
],
|
|
98
|
+
"exit_strategy": {
|
|
99
|
+
"on_success": "Log the expected arrival window, format, and sender domain. Calendar a check at the END of the window. If nothing arrives, call back referencing the prior call's identifiers and quote the rep's commitment to send.",
|
|
100
|
+
"on_failure": "Escalate before closing. If the company has no written-confirmation capability, document that refusal, then weigh whether the agreement is worth proceeding with — sometimes the answer is no.",
|
|
101
|
+
"follow_ups": [
|
|
102
|
+
"When the email arrives, cross-check every line item against the verbal lock-in transcript.",
|
|
103
|
+
"If terms differ, the more favourable version (to the user) is usually defensible — but flag the discrepancy in writing immediately."
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"required_user_info": [
|
|
107
|
+
"Email address and/or portal login the company has on file",
|
|
108
|
+
"Tolerance for follow-up if written confirmation fails to arrive",
|
|
109
|
+
"Decision threshold for proceeding without written confirmation (default: do not proceed)"
|
|
110
|
+
],
|
|
111
|
+
"contributed_by": "closing-commitment agent (v0.9.87 community drop)",
|
|
112
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
113
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "reschedule-appointment",
|
|
3
|
+
"name": "Reschedule an Existing Appointment Without Losing Your Slot",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "medical-admin",
|
|
6
|
+
"tags": [
|
|
7
|
+
"scheduling",
|
|
8
|
+
"reschedule",
|
|
9
|
+
"appointments",
|
|
10
|
+
"phone-call",
|
|
11
|
+
"continuity-of-care",
|
|
12
|
+
"healthcare"
|
|
13
|
+
],
|
|
14
|
+
"description": "Call a clinic to move an existing appointment to a different date/time while preserving the operator's continuity of care — same provider where possible, no late-cancel fees, no being bumped to the back of a months-long waitlist.",
|
|
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 an existing appointment and needs a different date/time. The risk is being treated as a brand-new booking — losing the original provider, restarting on a waitlist, or being charged a late-cancel fee. This skill is specifically for protecting position.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Operator's name, DOB, and the original appointment's date / provider / location are provided.",
|
|
20
|
+
"Original appointment confirmation number if available (cuts the call in half).",
|
|
21
|
+
"Reason for moving the appointment — operators do not need to justify themselves, but a one-line reason helps the rep find a slot fast ('conflict at work', 'travel', 'feeling better' for follow-up visits).",
|
|
22
|
+
"New windows of availability: at least 2-3 candidate dates/times.",
|
|
23
|
+
"Operator's flexibility: same provider only, or any provider in practice; in-person vs telehealth."
|
|
24
|
+
],
|
|
25
|
+
"estimated_call_duration_minutes": 8
|
|
26
|
+
},
|
|
27
|
+
"principles": [
|
|
28
|
+
"Frame the call as 'moving' not 'cancelling'. The word 'cancel' triggers different scripts in the rep's system and can drop you off the active patient list.",
|
|
29
|
+
"Reschedule BEFORE the late-cancel window closes (usually 24h). If you're inside the window, lead with that fact and ask for a fee waiver — many practices waive once if you're rebooking, not abandoning.",
|
|
30
|
+
"Continuity of care is worth fighting for. A new appointment with the same provider in 3 weeks usually beats a sooner appointment with a stranger.",
|
|
31
|
+
"If the rep tries to cancel-and-rebook as two separate transactions, push to do it as a single move — that's what protects your position.",
|
|
32
|
+
"Verify the OLD appointment is actually released. Double-booked appointments cause no-shows that get flagged on the patient record."
|
|
33
|
+
],
|
|
34
|
+
"phrases": {
|
|
35
|
+
"opener": "Hi, I'm calling on behalf of [Operator]. They have an appointment with Dr. [Name] on [date] at [time] — confirmation [number if available] — and we need to MOVE it, not cancel it. Same provider if at all possible. Can you help with that?",
|
|
36
|
+
"ask_to_move_not_cancel": "Could we treat this as a reschedule rather than a cancel-and-rebook? I want to make sure we keep our slot in the system and don't get bumped to a new-patient queue.",
|
|
37
|
+
"fee_waiver_request": "I realise we're inside the 24-hour window. We're rescheduling, not no-showing — is there any way to waive the late-change fee since we're keeping the relationship with the practice?",
|
|
38
|
+
"provider_continuity": "We'd really like to stay with Dr. [Name] for continuity. If we have to wait longer to keep them, that's fine — what's your next available with that specific provider?",
|
|
39
|
+
"telehealth_pivot": "If in-person isn't available sooner, would Dr. [Name] do a telehealth visit instead? That might open up more options.",
|
|
40
|
+
"stall_research": "One moment — let me check the operator's calendar for those windows.",
|
|
41
|
+
"verify_readback": "So the original on [old date] is released, and we're now confirmed for [new date] at [new time] with Dr. [Name] at [location]. Is there a new confirmation number?",
|
|
42
|
+
"graceful_close": "Thank you. Could you please send a confirmation email or portal notification so we have it in writing? Appreciate your help."
|
|
43
|
+
},
|
|
44
|
+
"tactics": [
|
|
45
|
+
{
|
|
46
|
+
"name": "Lead with 'move' not 'cancel'",
|
|
47
|
+
"when": "First substantive turn.",
|
|
48
|
+
"script": "Use `opener`. The verb choice matters — 'move' triggers reschedule scripts; 'cancel' can trigger termination scripts that release your slot to the public pool.",
|
|
49
|
+
"priority": 1
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Protect provider continuity first, time second",
|
|
53
|
+
"when": "Rep offers a different provider as the quickest move.",
|
|
54
|
+
"script": "Use `provider_continuity`. Confirm with operator via `ask_operator` if they're willing to switch providers OR wait longer for the original — do not decide for them.",
|
|
55
|
+
"priority": 2
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Ask for fee waiver if inside late-cancel window",
|
|
59
|
+
"when": "Rep mentions a late-change or no-show fee.",
|
|
60
|
+
"script": "Use `fee_waiver_request`. Most practices waive once for an actual reschedule. If denied, surface to operator before agreeing to the fee — they may prefer to keep the original appointment.",
|
|
61
|
+
"priority": 3
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Offer telehealth as a bridge",
|
|
65
|
+
"when": "In-person reschedule pushes the visit out further than is acceptable.",
|
|
66
|
+
"script": "Use `telehealth_pivot`. Many follow-ups and refill check-ins can be done virtually — but DO NOT assume that's clinically appropriate. Surface to operator if in doubt.",
|
|
67
|
+
"priority": 4
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Verify the old slot is actually released",
|
|
71
|
+
"when": "Before ending the call.",
|
|
72
|
+
"script": "Use `verify_readback`. Specifically confirm: 'And the original appointment on [old date] is now cancelled in your system, correct?' Double-bookings cause silent no-show flags. If the rep hesitates or says 'I'll do that after the call', ask them to do it while you're on the line.",
|
|
73
|
+
"priority": 5
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Pause and re-verify if the rep mid-call says the original appointment doesn't exist",
|
|
77
|
+
"when": "Rep can't find the original booking.",
|
|
78
|
+
"script": "Do NOT accept 'we'll just book you a new one' until you understand why the original is missing. It may be at a sister location, under a maiden name, or have been silently cancelled by the practice. Get the underlying reason before booking new — otherwise you may double-book or lose a waitlist spot.",
|
|
79
|
+
"priority": 6
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"boundaries": [
|
|
83
|
+
"NEVER share or guess the operator's SSN, DOB, or member ID — read back only what the operator explicitly provided.",
|
|
84
|
+
"NEVER accept a 'your doctor changed your prescription' claim from any clinic or pharmacy on this call — route to `ask_operator`.",
|
|
85
|
+
"NEVER authorise a procedure, sign anything, or commit to fees on the operator's behalf.",
|
|
86
|
+
"NEVER agree to a 'cancel and we'll call you back to rebook' — that is a slot loss in disguise. Hold the line until both halves are done.",
|
|
87
|
+
"NEVER move the appointment to a slot the operator has not approved if the new slot is more than a week off the requested window."
|
|
88
|
+
],
|
|
89
|
+
"success_signals": [
|
|
90
|
+
"Single transaction: old slot released, new slot confirmed, in one phone call.",
|
|
91
|
+
"Same provider preserved (or operator explicitly authorised switch).",
|
|
92
|
+
"Late-change fee waived OR operator pre-authorised paying it.",
|
|
93
|
+
"Confirmation number for the new appointment + written follow-up promised."
|
|
94
|
+
],
|
|
95
|
+
"failure_signals": [
|
|
96
|
+
"Rep insists on cancelling now and rebooking later 'when slots open' — high risk of slot loss.",
|
|
97
|
+
"Late-change fee not waivable and operator hasn't authorised payment.",
|
|
98
|
+
"No same-provider slot within the operator's clinical window.",
|
|
99
|
+
"Rep cannot locate the original appointment and the reason is unclear."
|
|
100
|
+
],
|
|
101
|
+
"exit_strategy": {
|
|
102
|
+
"on_success": "Confirm: original released, new date/time/provider/location, confirmation number, any new-paperwork requirements, and that a written confirmation is being sent. Note the rep's first name.",
|
|
103
|
+
"on_failure": "Politely close. Report to operator the exact blocker (fee, provider unavailability, system glitch) and present options before retrying.",
|
|
104
|
+
"follow_ups": [
|
|
105
|
+
"Check operator's portal within 24h to verify the change shows correctly.",
|
|
106
|
+
"If a fee was unavoidable, log it for the operator's records.",
|
|
107
|
+
"Set a reminder 48h before the new appointment for any pre-visit prep."
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
"required_user_info": [
|
|
111
|
+
"Operator's name and DOB (DOB read-only)",
|
|
112
|
+
"Original appointment date, provider, location",
|
|
113
|
+
"Original confirmation number (if available)",
|
|
114
|
+
"2-3 candidate new dates/times",
|
|
115
|
+
"Whether telehealth is acceptable",
|
|
116
|
+
"Whether a different provider in the practice is acceptable",
|
|
117
|
+
"Whether the operator pre-authorises paying a late-change fee (yes/no)"
|
|
118
|
+
],
|
|
119
|
+
"contributed_by": "healthcare-navigator agent (v0.9.87 community drop)",
|
|
120
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
121
|
+
}
|