@agenticmail/core 0.9.32 → 0.9.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +128 -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 +125 -0
- package/dist/skills/built-in/report-fbi-tip.json +116 -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,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bypass-i-am-the-supervisor",
|
|
3
|
+
"name": "Recover from \"I Am the Supervisor\" Refusal",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"category": "customer-service",
|
|
6
|
+
"tags": [
|
|
7
|
+
"escalation",
|
|
8
|
+
"refusal",
|
|
9
|
+
"phone-call",
|
|
10
|
+
"supervisor",
|
|
11
|
+
"edge-case",
|
|
12
|
+
"customer-support"
|
|
13
|
+
],
|
|
14
|
+
"description": "Handle the situation where a rep refuses to escalate by claiming they ARE the supervisor (sometimes true, sometimes a defensive script), or claims 'there's no one above me'. Determine which is real, route around it if needed, and preserve options for next steps.",
|
|
15
|
+
"disclaimer": null,
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Mid-call, after you've asked for a supervisor, the rep responded with 'I am the supervisor' OR 'there's no one else who can help' OR 'I'm the highest authority on this issue'. This skill helps you (a) test whether that's true, (b) get to the actual decision-maker if it isn't, (c) gracefully exit and re-route if it is.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"You have already made a polite supervisor request (see `request-supervisor-gracefully`) and gotten this specific refusal.",
|
|
20
|
+
"User is still calm and willing to invest another ~15 minutes.",
|
|
21
|
+
"You have the rep's name + employee ID (if not, get them BEFORE proceeding — the refusal is a key data point you'll want to document)."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 18
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"There are three scenarios behind 'I am the supervisor': (1) it's actually true — small ops, dedicated escalation specialist, or you're already at the ceiling; (2) it's a script the rep has been trained to deploy to deflect escalation; (3) it's a manager who DOES have authority but refuses to use it. Each requires a different counter.",
|
|
27
|
+
"Test the claim, don't accept it. If they're truly a supervisor, they'll be comfortable answering structural questions ('how long have you been in this role', 'how many reps report to you', 'what's your authority limit for credits'). Scripted reps deflect those questions.",
|
|
28
|
+
"Even if there's truly 'no one above' this person at this call center, there is ALWAYS someone above them at the COMPANY. Outsourced call centers report up to a client-services contact at the actual company. That contact exists; the rep just doesn't know it.",
|
|
29
|
+
"Don't fight the claim. Pivot around it. If this person genuinely can't escalate, you escalate via a different channel — not by arguing with them.",
|
|
30
|
+
"Documenting a refusal-to-escalate is more valuable than winning the call. CFPB / state AG complaints land harder when you can show 'I asked the supervisor and was refused with no callback path'.",
|
|
31
|
+
"Decision point — am I trying to convince THIS person, or am I trying to find a DIFFERENT person? Be honest about which it is."
|
|
32
|
+
],
|
|
33
|
+
"phrases": {
|
|
34
|
+
"the_test_question": "Could you share — roughly how long have you been in your current role, and what's the title? I'm just trying to understand the org chart so I can ask for the right person if needed.",
|
|
35
|
+
"structural_probe": "If you weren't available today, who would be handling escalations? Who is your direct manager?",
|
|
36
|
+
"the_corporate_path": "Got it — you're the supervisor for this team. Could you connect me with someone at the corporate level then — customer relations, or the executive escalation line?",
|
|
37
|
+
"the_written_request": "If you're the final point of authority, could you confirm that in writing? An email to me stating 'this is our final position' is what I need to take the next step.",
|
|
38
|
+
"no_blame_redirect": "Okay — and I trust that you're doing what you can with your authority. That's exactly why I need to find someone with different authority. What's the right channel for that?",
|
|
39
|
+
"the_callback_close": "I respect that you've given me your final answer. Could you note in my account that I requested further escalation and was told no escalation path exists? I want that documented before I pursue other options.",
|
|
40
|
+
"graceful_disengage": "Thank you for your time. I'm going to end the call here, document what we discussed, and reach out through a different channel. Could I confirm your name and ID one more time for my records?",
|
|
41
|
+
"test_the_phantom": "Just to be clear — if I were to file a regulatory complaint about this issue, who at your company would receive it? That person is who I'm trying to reach now."
|
|
42
|
+
},
|
|
43
|
+
"tactics": [
|
|
44
|
+
{
|
|
45
|
+
"name": "Lock in the rep's name + ID",
|
|
46
|
+
"when": "Immediately after the refusal — before anything else.",
|
|
47
|
+
"script": "If you don't already have it: 'I want to make sure I have your name spelled right and your employee ID. Could you give me both?' Reps who refuse to give an ID after escalation refusal are almost certainly bluffing — note it.",
|
|
48
|
+
"priority": 1,
|
|
49
|
+
"decision_point": "If the rep refuses to provide a name or ID after being asked twice — that's a strong signal of a defensive script. Switch immediately to documenting mode and `graceful_disengage`. Re-engage through a different channel."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Run the structural probe",
|
|
53
|
+
"when": "Right after locking in identifiers.",
|
|
54
|
+
"script": "Use `the_test_question` and `structural_probe`. Real supervisors answer these casually. Scripted reps either dodge ('I'm not able to discuss that') or get visibly flustered. Their response tells you which scenario you're in.",
|
|
55
|
+
"priority": 2,
|
|
56
|
+
"decision_point": "If the rep answers the probe substantively (gives a title, names their manager, describes their role) — believe the claim. Pivot to `the_corporate_path` and `the_written_request`. If the rep deflects — escalation refusal is a script; pivot to `no_blame_redirect`."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "Ask for the corporate path",
|
|
60
|
+
"when": "Confirmed real supervisor who genuinely can't help, OR scripted rep you want to bypass.",
|
|
61
|
+
"script": "Use `the_corporate_path`. Every company has a corporate office, an executive complaints address, or a customer relations function. The rep may not have a direct number, but they can usually name the team.",
|
|
62
|
+
"priority": 3
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "Demand the written finality",
|
|
66
|
+
"when": "Rep insists they're the final word.",
|
|
67
|
+
"script": "Use `the_written_request`. Asking for the refusal in writing does two things: (1) often suddenly produces a real supervisor; (2) if they actually send the email, that document is gold for any future escalation.",
|
|
68
|
+
"priority": 4,
|
|
69
|
+
"decision_point": "If the rep refuses to put the refusal in writing — that's a tell that the verbal refusal isn't truly final. Press once more, then disengage."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "Use the regulator-route question",
|
|
73
|
+
"when": "Rep is digging in.",
|
|
74
|
+
"script": "Use `test_the_phantom`. The question 'if I filed a complaint, who would receive it?' is unanswerable for a true ceiling rep but easy for a real supervisor — the company has a designated compliance contact and the supervisor knows it (or knows who knows it). The answer (or non-answer) tells you which scenario you're in.",
|
|
75
|
+
"priority": 5
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "Document the refusal",
|
|
79
|
+
"when": "Decision made to disengage.",
|
|
80
|
+
"script": "Use `the_callback_close`. Even hostile reps will usually comply with 'put it in the notes' — and once it's in the notes, you have leverage for the next contact.",
|
|
81
|
+
"priority": 6
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "Disengage cleanly",
|
|
85
|
+
"when": "Time to end the call.",
|
|
86
|
+
"script": "Use `graceful_disengage`. End on a calm, professional note. The recording exists; future agents will hear it. A calm exit is leverage for the next interaction.",
|
|
87
|
+
"priority": 7
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"boundaries": [
|
|
91
|
+
"Do NOT call the rep a liar — even if they obviously are. Direct accusations turn the recording into evidence against YOU.",
|
|
92
|
+
"Do NOT keep arguing past 2-3 attempts. If the structural probe + corporate-path + written-request trio doesn't work, the rep isn't going to crack. Pivot channels.",
|
|
93
|
+
"Do NOT raise voice or threaten legal action in this specific scenario — it confirms the defensive script and gets you escalated to legal (which is NOT the same as customer escalation).",
|
|
94
|
+
"Do NOT reveal which OTHER channel you're going to use next ('I'm going to call the CEO's office'). It tips them off to flag your account, which can poison the next contact.",
|
|
95
|
+
"Do NOT accept 'we don't have email' or 'we can't send written confirmations' as a complete final answer — every modern company has some form of written customer communication. The rep just doesn't want to give it to you.",
|
|
96
|
+
"Do NOT abandon the call without confirming the rep's name + ID + a case number. The disengagement is part of the strategy, not a surrender."
|
|
97
|
+
],
|
|
98
|
+
"success_signals": [
|
|
99
|
+
"Rep, when probed, names their manager or department head spontaneously.",
|
|
100
|
+
"Rep agrees to a callback from someone at corporate level.",
|
|
101
|
+
"Rep agrees to send the refusal in writing — and follows through.",
|
|
102
|
+
"Rep voluntarily transfers you after the structural probe (the probe forced them to admit there IS someone above).",
|
|
103
|
+
"Rep opens a 'final-position' case number that you can reference in regulator filings."
|
|
104
|
+
],
|
|
105
|
+
"failure_signals": [
|
|
106
|
+
"Rep refuses to give name or ID.",
|
|
107
|
+
"Rep refuses to put refusal in writing.",
|
|
108
|
+
"Rep dodges all structural questions with 'I'm not able to share that'.",
|
|
109
|
+
"Rep starts using closing language ('is there anything else I can help you with today?') as a hangup signal.",
|
|
110
|
+
"Rep claims 'we are an independent service center' but won't name the parent company — that's the strongest signal you've hit a bypass-required wall."
|
|
111
|
+
],
|
|
112
|
+
"exit_strategy": {
|
|
113
|
+
"on_success": "Capture: rep's name + ID, the corporate contact they named, any case numbers, and the timeframe for callback. Send a written follow-up to the corporate contact within 24h referencing the call.",
|
|
114
|
+
"on_failure": "Document: time of call, rep name + ID (or note refusal), exact wording of escalation refusal, what was asked, what was refused. Pivot immediately — do NOT call back to the same queue. Choose from: `multi-channel-escalation`, `reach-executive-office`, `invoke-regulator-firmly`, depending on the underlying issue.",
|
|
115
|
+
"follow_ups": [
|
|
116
|
+
"Within 24h: write an email to the company's published support / customer-relations address summarizing the call and the refusal. This creates a paper trail at corporate level.",
|
|
117
|
+
"If the rep's behavior was clearly improper (rude, hung up, refused to identify) — that's a separate complaint worth escalating to corporate AND noting in any regulator filing.",
|
|
118
|
+
"Set a 48h checkpoint: if no callback materialized from the 'corporate path' the rep named, switch to executive escalation."
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"required_user_info": [
|
|
122
|
+
"Account number / login email",
|
|
123
|
+
"Rep's name + ID from current call (or note that they refused to provide)",
|
|
124
|
+
"Exact wording of the escalation refusal (write it down during the call)",
|
|
125
|
+
"Original outcome being sought",
|
|
126
|
+
"Willingness to pursue multi-channel or regulator escalation as next step"
|
|
127
|
+
],
|
|
128
|
+
"contributed_by": "support-escalator agent (v0.9.87 community drop)",
|
|
129
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
130
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bypass-scripted-rep",
|
|
3
|
+
"name": "Recognise and Bypass a Scripted Rep",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "other",
|
|
6
|
+
"tags": [
|
|
7
|
+
"meta-skill",
|
|
8
|
+
"adversarial-robustness",
|
|
9
|
+
"script-detection",
|
|
10
|
+
"phone-call",
|
|
11
|
+
"negotiation",
|
|
12
|
+
"critical-reasoning"
|
|
13
|
+
],
|
|
14
|
+
"description": "Detect when the rep is reading from a script or a decision tree (versus exercising judgement), and bypass the script by asking out-of-flow questions that force them to either escalate, consult, or break frame.",
|
|
15
|
+
"disclaimer": null,
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Any call with a Tier-1 customer-service rep, especially retention, cancellation, billing disputes, and any flow with a known 'save offer' or 'objection-handling' tree. Also applies to inbound sales calls.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Agent has heard at least 30 seconds of the rep's intro to assess scripted-ness.",
|
|
20
|
+
"Agent has a clear ask the script will probably refuse.",
|
|
21
|
+
"Agent has authority to escalate or refuse if the script holds."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 5
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"A script is a tree of expected user inputs with pre-written responses. Off-tree inputs cause the rep to either freeze, escalate, or improvise — all three of which help you.",
|
|
27
|
+
"Tier-1 reps usually cannot deviate; tier-2/retention/loyalty reps usually can. The script's job is to keep you with tier-1.",
|
|
28
|
+
"You are not trying to trick or frustrate the rep — you are trying to give them an exit they're allowed to take.",
|
|
29
|
+
"If you can name the script back to them, you instantly become a different kind of caller — one they're flagged to escalate, not retain.",
|
|
30
|
+
"Specific, narrow, factual questions break scripts faster than philosophical ones."
|
|
31
|
+
],
|
|
32
|
+
"phrases": {
|
|
33
|
+
"out_of_script_question": "Out of curiosity — what specifically would I need to qualify for the [X] rate? Not asking you to give it to me, just trying to understand the criteria.",
|
|
34
|
+
"name_the_script": "I appreciate the offers — I can tell you have a few standard ones. Can we skip ahead to what's available beyond the front-line menu?",
|
|
35
|
+
"ask_for_decision_authority": "Just so I know what to ask for — what's the most you're personally able to discount, and at what point would you have to loop someone in?",
|
|
36
|
+
"request_specific_team": "Could you transfer me to the [retention | loyalty | account specialist | supervisor] team? Front-line and they often have different toolsets.",
|
|
37
|
+
"polite_decline_offer": "I appreciate that offer, but it doesn't get me where I need to be. What else is available?",
|
|
38
|
+
"ask_for_unscripted_advice": "If you were me, what would you do here? Off the record — what does someone in my position usually do?"
|
|
39
|
+
},
|
|
40
|
+
"tactics": [
|
|
41
|
+
{
|
|
42
|
+
"name": "Listen for script tells in the first 60 seconds",
|
|
43
|
+
"when": "Rep's opening monologue.",
|
|
44
|
+
"script": "Tells: identical phrasing to the website's FAQ; over-rehearsed cadence; refusal to acknowledge specific account details before completing a verification preamble; reading off a list of canned 'value props'. Each tell raises the script-probability.",
|
|
45
|
+
"priority": 1
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "Fire one out-of-script question early",
|
|
49
|
+
"when": "After verification, before the rep launches their pitch.",
|
|
50
|
+
"script": "Use `out_of_script_question` or any narrow factual question they have to look up. If they pause, type, and consult — they were on a script. If they answer fluently — they're a human with judgement, treat them differently.",
|
|
51
|
+
"priority": 2
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "Refuse the first save offer politely",
|
|
55
|
+
"when": "Rep delivers their first scripted discount/credit/offer.",
|
|
56
|
+
"script": "Use `polite_decline_offer`. The first offer is almost never the best one — scripts ladder. The second and third tiers are usually behind a refusal.",
|
|
57
|
+
"priority": 3
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "Name the script back",
|
|
61
|
+
"when": "Rep is clearly still on tree, repeating value props.",
|
|
62
|
+
"script": "Use `name_the_script`. Tone: friendly co-conspirator, not adversary. You're letting them know you know — gives them permission to escalate.",
|
|
63
|
+
"priority": 4
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "Ask for decision authority explicitly",
|
|
67
|
+
"when": "You've exhausted what this rep can offer.",
|
|
68
|
+
"script": "Use `ask_for_decision_authority`. Forces an honest answer about their cap — and creates a natural handoff to whoever sits above the cap."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "Pull the unscripted-advice card",
|
|
72
|
+
"when": "Rep is friendly but stuck.",
|
|
73
|
+
"script": "Use `ask_for_unscripted_advice`. Sometimes reps will tell you the off-script path ('honestly, you'd do better calling back tomorrow and asking for the loyalty team') because the script doesn't cover empathy."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"alternative_interpretations": [
|
|
77
|
+
{
|
|
78
|
+
"observation": "Rep is using stilted, identical phrasing to the company's FAQ.",
|
|
79
|
+
"consider": [
|
|
80
|
+
"They are reading a script — most common.",
|
|
81
|
+
"They are new and over-prepared — they may break script if asked kindly.",
|
|
82
|
+
"The call is being monitored or recorded for quality, so they're sticking close to approved language.",
|
|
83
|
+
"It's actually an IVR-assisted human, and a system is feeding suggestions onto their screen."
|
|
84
|
+
],
|
|
85
|
+
"next_action": "Ask a narrow factual question that isn't on any FAQ. Their reaction reveals which case it is."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"observation": "Rep refuses to deviate from the menu of offers.",
|
|
89
|
+
"consider": [
|
|
90
|
+
"They literally cannot — their tool has only those buttons.",
|
|
91
|
+
"They can, but you haven't given them justification to override.",
|
|
92
|
+
"They're protecting a metric — handle time, save rate, NPS.",
|
|
93
|
+
"You're talking to acquisitions when you should be talking to retention.",
|
|
94
|
+
"Their authority cap genuinely covers all reasonable cases and you're an outlier."
|
|
95
|
+
],
|
|
96
|
+
"next_action": "Ask `ask_for_decision_authority` directly. The honest answer routes you correctly."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"observation": "Rep abruptly drops the script and becomes a normal human.",
|
|
100
|
+
"consider": [
|
|
101
|
+
"You found their off-ramp and earned a candid conversation — best case.",
|
|
102
|
+
"They are about to deliver bad news and need to soften it.",
|
|
103
|
+
"They've decided to push you off the call as 'not retainable' and don't need to perform anymore.",
|
|
104
|
+
"Supervisor walked away from their desk."
|
|
105
|
+
],
|
|
106
|
+
"next_action": "Match the new register but stay on goal. This is often the moment real movement happens."
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"boundaries": [
|
|
110
|
+
"Do NOT mock the script or the rep. Naming it ≠ ridiculing it.",
|
|
111
|
+
"Do NOT impersonate a tier or claim a status the user doesn't have ('I'm a premium customer').",
|
|
112
|
+
"Do NOT try to get the rep fired or reported — bypassing the script means going around it, not punishing the human reading it.",
|
|
113
|
+
"Do NOT keep firing out-of-script questions after they've escalated you — switch into normal-collaborator mode with the new rep."
|
|
114
|
+
],
|
|
115
|
+
"success_signals": [
|
|
116
|
+
"Rep voluntarily transfers you to retention/loyalty/supervisor.",
|
|
117
|
+
"Rep starts using phrases that aren't on the company website.",
|
|
118
|
+
"Rep types, pauses, says 'let me check on something'.",
|
|
119
|
+
"Offer escalates after a polite refusal."
|
|
120
|
+
],
|
|
121
|
+
"failure_signals": [
|
|
122
|
+
"Rep loops back to the same three offers no matter what you say.",
|
|
123
|
+
"Rep ends the call abruptly or threatens to.",
|
|
124
|
+
"Rep refuses to name what authority they have.",
|
|
125
|
+
"Hold times balloon — sign they're hoping you'll drop off."
|
|
126
|
+
],
|
|
127
|
+
"exit_strategy": {
|
|
128
|
+
"on_success": "Take the escalated conversation seriously — the new rep is real authority. Drop the bypass tactics and negotiate cleanly.",
|
|
129
|
+
"on_failure": "End politely. Try `reset-by-callback` to roll the dice on a different rep, ideally at a different time of day.",
|
|
130
|
+
"follow_ups": [
|
|
131
|
+
"Note the rep's script tells for the next call's notes.",
|
|
132
|
+
"If a specific team was promised but no transfer happened, note the rep's name and the promise."
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"required_user_info": [
|
|
136
|
+
"What the user actually wants (the real ask).",
|
|
137
|
+
"Whether the user has authority to wait through escalations and holds.",
|
|
138
|
+
"Account-tier facts the rep will need (don't fabricate them)."
|
|
139
|
+
],
|
|
140
|
+
"contributed_by": "critical-reasoning agent (v0.9.87 community drop)",
|
|
141
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
142
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "calibrated-questions",
|
|
3
|
+
"name": "Calibrated Questions: Make Them Solve Your Problem",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "negotiation",
|
|
6
|
+
"tags": ["voss", "calibrated-questions", "how-questions", "what-questions", "phone-call", "real-time"],
|
|
7
|
+
"description": "Open-ended questions starting with 'how' or 'what' that force the counterparty to do the cognitive work — and frequently to invent the solution you wanted. The single highest-ROI verbal move in negotiation.",
|
|
8
|
+
"disclaimer": "Calibrated questions are a power tool. Used clumsily ('how am I supposed to do that?' as a whine instead of a real question) they sound passive-aggressive. Tone must be genuinely curious.",
|
|
9
|
+
"context": {
|
|
10
|
+
"when_to_use": "Any time you would otherwise make a counter-argument, an accusation, or a demand. Substitute a calibrated question instead. Most valuable when the counterparty has just said 'no', 'I can't', or 'that's not possible'.",
|
|
11
|
+
"preconditions": [
|
|
12
|
+
"You have at least one calibrated question pre-loaded for the likely objections.",
|
|
13
|
+
"You can deliver the question with curious-flat tone — not whiny, not aggressive.",
|
|
14
|
+
"You have patience for silence after the question (3-8 seconds is normal)."
|
|
15
|
+
],
|
|
16
|
+
"estimated_call_duration_minutes": 15
|
|
17
|
+
},
|
|
18
|
+
"principles": [
|
|
19
|
+
"Start with 'how' or 'what'. Never 'why' — 'why' triggers defensiveness across every language. 'Why did you do that?' = accusation. 'What led to that decision?' = invitation.",
|
|
20
|
+
"Avoid yes/no questions entirely. Yes is non-committal; no is a wall; calibrated questions produce information.",
|
|
21
|
+
"The best calibrated questions make THEIR no MY problem to solve — and force them to either help solve it or admit there's room.",
|
|
22
|
+
"Calibrated questions slow the call down. That asymmetry favors the patient party — which is you, if you've prepared.",
|
|
23
|
+
"After asking, do not soften, qualify, or rephrase. The question must stand alone in the silence.",
|
|
24
|
+
"Use calibrated questions to gather, then to commit: 'How will we know it's working?' converts a verbal agreement into an implementation plan."
|
|
25
|
+
],
|
|
26
|
+
"phrases": {
|
|
27
|
+
"core_how_am_i": "How am I supposed to do that?",
|
|
28
|
+
"core_what_would_it_take": "What would it take to get there?",
|
|
29
|
+
"discover_constraints": "What's the biggest challenge you face in approving something like this?",
|
|
30
|
+
"discover_authority": "Who on your end has handled an exception like this before?",
|
|
31
|
+
"discover_process": "How does this normally work for customers in my situation?",
|
|
32
|
+
"discover_value": "What does success look like for you on a call like this?",
|
|
33
|
+
"test_a_no": "What about it doesn't work for you?",
|
|
34
|
+
"expand_the_pie": "What else might we put on the table that would make this easier?",
|
|
35
|
+
"force_creativity": "If price were fixed, what else could move?",
|
|
36
|
+
"commitment_check": "How will we make sure this actually happens after we hang up?"
|
|
37
|
+
},
|
|
38
|
+
"tactics": [
|
|
39
|
+
{
|
|
40
|
+
"name": "Substitute, don't argue",
|
|
41
|
+
"when": "You feel the urge to say 'but…' or 'that's not fair'.",
|
|
42
|
+
"script": "Replace the argument with a calibrated question. 'But I've been a customer for 8 years!' becomes 'How does loyalty factor in to what you can offer?'",
|
|
43
|
+
"priority": 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "Convert no into a workshop",
|
|
47
|
+
"when": "Rep says no.",
|
|
48
|
+
"script": "Respond with `test_a_no`. They will tell you the specific obstacle. Address THAT, not the global no.",
|
|
49
|
+
"priority": 2
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Outsource creativity",
|
|
53
|
+
"when": "You're stuck and don't have a next move.",
|
|
54
|
+
"script": "Use `force_creativity` or `expand_the_pie`. The rep often invents the workaround for you — and people defend ideas that came out of their own mouth.",
|
|
55
|
+
"priority": 3
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Surface the real decision-maker",
|
|
59
|
+
"when": "Rep keeps citing policy or authority limits.",
|
|
60
|
+
"script": "Use `discover_authority`. Not 'can I talk to your supervisor' (combative) but 'who has handled this kind of exception' (curious). Different door, same room.",
|
|
61
|
+
"priority": 4
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Lock in the deal with an implementation question",
|
|
65
|
+
"when": "Verbal agreement is reached.",
|
|
66
|
+
"script": "Use `commitment_check`. Forces the rep to spell out the system actions, the timing, and the confirmation — converting talk into commitment and exposing any quietly-missing steps.",
|
|
67
|
+
"priority": 5
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"decision_tree": {
|
|
71
|
+
"description": "When the counterparty produces a blocking move, match it to a branch BEFORE you respond. Calibrated questions are interruption-proof — you can deliver one inside 1.5 seconds of pause.",
|
|
72
|
+
"branches": [
|
|
73
|
+
{
|
|
74
|
+
"if_you_hear": "Flat 'no' with no reason.",
|
|
75
|
+
"interpretation": "Wall is rhetorical, not actual. The rep is testing if you'll fold.",
|
|
76
|
+
"say": "`test_a_no`: 'What about it doesn't work for you?'",
|
|
77
|
+
"do_not": "Do not accept the no. Do not argue with the no. Question it."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"if_you_hear": "'I can't go any lower / further.'",
|
|
81
|
+
"interpretation": "Either truth or a polite final-offer feint. The question separates them.",
|
|
82
|
+
"say": "`core_how_am_i`: 'How am I supposed to make this work on a [budget/target] of X?'",
|
|
83
|
+
"do_not": "Do not name a counter-number. Make THEM produce one."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"if_you_hear": "'Policy / system / can't do that.'",
|
|
87
|
+
"interpretation": "Authority constraint, not capability constraint.",
|
|
88
|
+
"say": "`discover_authority`: 'Who on your end has handled an exception like this before?'",
|
|
89
|
+
"do_not": "Do not demand a supervisor. Ask who has done it before — names route you differently than escalations."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"if_you_hear": "Long script delivered with no breaks.",
|
|
93
|
+
"interpretation": "Rep is on rails. The script is designed to terminate negotiation.",
|
|
94
|
+
"say": "Interrupt gently at the next breath: 'Quick question — `discover_process`: how does this normally work for customers in my situation?'",
|
|
95
|
+
"do_not": "Do not wait for the script to end. The end of the script is the call-end button."
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"if_you_hear": "'What's your budget / what were you hoping for?'",
|
|
99
|
+
"interpretation": "They are asking YOU to anchor. Dangerous if you haven't decided.",
|
|
100
|
+
"say": "Deflect with a calibrated question: 'What would be a typical range for someone in my situation? I want to make sure I'm framing this fairly.'",
|
|
101
|
+
"do_not": "Do not name a number first if you can avoid it. See `03-anchor-and-counter-anchor`."
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"if_you_hear": "'Take it or leave it.'",
|
|
105
|
+
"interpretation": "Ultimatum — almost always a bluff in commercial contexts.",
|
|
106
|
+
"say": "`core_what_would_it_take`: 'What would it take to move off that position?' delivered curious, not hostile.",
|
|
107
|
+
"do_not": "Do not flinch. Do not accept. Do not threaten to leave (that's a separate skill — see `10-walkaway-threats`)."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"if_you_hear": "Genuine creative offer ('what if we did X instead?').",
|
|
111
|
+
"interpretation": "They are negotiating. Engage fully.",
|
|
112
|
+
"say": "`force_creativity`: 'I like where that's going — what else might we put on the table to bridge the rest of the gap?'",
|
|
113
|
+
"do_not": "Do not jump to accept the first creative offer — there's usually a better one one question deeper."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"if_you_hear": "Verbal yes / agreement.",
|
|
117
|
+
"interpretation": "Risky moment — the deal isn't real until it's specified.",
|
|
118
|
+
"say": "`commitment_check`: 'How will we make sure this actually happens after we hang up?'",
|
|
119
|
+
"do_not": "Do not hang up on a verbal yes. Verbal yes + no implementation question = no deal in 50% of cases."
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"boundaries": [
|
|
124
|
+
"Do NOT ask 'why' questions. Substitute 'what led to' or 'how did you get there'.",
|
|
125
|
+
"Do NOT chain 4+ calibrated questions in a row — it starts to feel like an interrogation.",
|
|
126
|
+
"Do NOT use 'how am I supposed to do that?' as sarcasm. It must be curious or it fails.",
|
|
127
|
+
"Do NOT ask a calibrated question and then answer it yourself in the silence. Wait."
|
|
128
|
+
],
|
|
129
|
+
"success_signals": [
|
|
130
|
+
"Rep produces a workaround or exception you hadn't named.",
|
|
131
|
+
"Rep says 'good question, let me check' — they're now solving your problem.",
|
|
132
|
+
"Rep volunteers the name of the actual decision-maker.",
|
|
133
|
+
"Rep starts asking calibrated questions back at you — engagement is mutual.",
|
|
134
|
+
"Silence after your question lasts 5+ seconds — they're thinking, which is what you want."
|
|
135
|
+
],
|
|
136
|
+
"failure_signals": [
|
|
137
|
+
"Rep robotically repeats the original no after 3 calibrated questions — you may be talking to someone with truly zero authority; escalate.",
|
|
138
|
+
"Rep gets visibly annoyed by the question pattern — your tone may have drifted to combative; reset with a label.",
|
|
139
|
+
"You can't think of the next calibrated question — switch to labeling (`01-tactical-empathy-labeling`) to buy time."
|
|
140
|
+
],
|
|
141
|
+
"exit_strategy": {
|
|
142
|
+
"on_success": "Once the rep produces the solution, confirm with `commitment_check` and exit cleanly.",
|
|
143
|
+
"on_failure": "If 3+ calibrated questions don't move the call, the rep likely has neither authority nor latitude. Politely close, log the attempt, escalate via different channel.",
|
|
144
|
+
"follow_ups": [
|
|
145
|
+
"Save the calibrated questions that worked for this provider/industry — patterns repeat.",
|
|
146
|
+
"Note which questions produced new information vs. which were dead ends."
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
"required_user_info": [
|
|
150
|
+
"What the user actually wants (the question is calibrated to a goal — you need the goal).",
|
|
151
|
+
"Any specific constraints the user has (budget, timing) so questions don't accidentally over-promise.",
|
|
152
|
+
"User's tolerance for silence — some operators want to be coached in real time to NOT rescue the silence."
|
|
153
|
+
],
|
|
154
|
+
"contributed_by": "negotiation-master agent (v0.9.87 community drop)"
|
|
155
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "call-911-fire",
|
|
3
|
+
"name": "Call 911 — Fire or Smoke",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"category": "emergency-services",
|
|
6
|
+
"tags": [
|
|
7
|
+
"911",
|
|
8
|
+
"emergency",
|
|
9
|
+
"fire",
|
|
10
|
+
"smoke",
|
|
11
|
+
"life-safety",
|
|
12
|
+
"emergency_services"
|
|
13
|
+
],
|
|
14
|
+
"description": "Place a 911 call for an active fire, heavy smoke, or carbon-monoxide detector going off, on behalf of the operator.",
|
|
15
|
+
"disclaimer": "ABSOLUTE rules. (1) Operator must have explicitly authorised this 911 call. (2) Identify as an AI in the first sentence. (3) The operator's FIRST priority is to get out of the building and stay out — instruct them to do that BEFORE the call drags on. (4) Never guess at fire details. (5) Knowingly making a false 911 report is a crime.",
|
|
16
|
+
"context": {
|
|
17
|
+
"when_to_use": "Operator reports active fire, heavy smoke, or a CO detector alarming and they cannot place 911 themselves (impaired, evacuating, holding a small child, helping someone else out). Smoke detector alone, with no smoke/fire visible to the operator, is not always a 911-worthy event — confirm via ask_operator.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Operator authorisation for THIS 911 call.",
|
|
20
|
+
"Address of the building on fire — street, city, state.",
|
|
21
|
+
"Operator has been told to EVACUATE first (and confirmed they are out, or are leaving).",
|
|
22
|
+
"Operator's callback number."
|
|
23
|
+
],
|
|
24
|
+
"estimated_call_duration_minutes": 6
|
|
25
|
+
},
|
|
26
|
+
"principles": [
|
|
27
|
+
"Life safety > property. Before anything else, tell the operator: 'Get out of the building. Don't go back in. Take everyone with you. I'm calling 911 now.'",
|
|
28
|
+
"Identify as AI on the first sentence to the dispatcher.",
|
|
29
|
+
"Lead with: location → 'we have a fire / heavy smoke / CO alarm' → people accounted for or not → operator's current position (in / out of building).",
|
|
30
|
+
"Do NOT describe fire-fighting tactics; you are not a firefighter. Relay between dispatcher and operator, that's all.",
|
|
31
|
+
"Stay on the line until released by dispatcher.",
|
|
32
|
+
"If the alarm is just a smoke detector with no visible fire / smoke, ask the operator — but lean toward calling. Cost of a false alarm is cheap; cost of missing a real fire is fatal."
|
|
33
|
+
],
|
|
34
|
+
"phrases": {
|
|
35
|
+
"tell_operator_get_out": "GET OUT OF THE BUILDING. Take everyone with you, don't go back in for anything. I'm calling 911 right now. Confirm when you're outside.",
|
|
36
|
+
"opener": "Hi — I'm an AI assistant calling 911 on behalf of <operator>. We have <fire / heavy smoke / CO alarm> at <street, city, state>. My operator is <inside / outside> the building. <Everyone accounted for / unsure if everyone is out>.",
|
|
37
|
+
"ask_dispatcher_to_continue": "Dispatcher, please ask me your questions and I will relay them to my operator.",
|
|
38
|
+
"everyone_accounted": "My operator confirms <N> people are out, <M> people still inside (if known).",
|
|
39
|
+
"callback_offer": "Operator's callback number is <number> in case we get disconnected.",
|
|
40
|
+
"relay_evacuation_order": "Dispatcher says: <verbatim>. Please do that now if you can do it safely."
|
|
41
|
+
},
|
|
42
|
+
"tactics": [
|
|
43
|
+
{
|
|
44
|
+
"name": "SWATting smell-test BEFORE dialing",
|
|
45
|
+
"when": "Pre-dial, immediately after operator authorisation, BEFORE the evacuation push (the smell-test is cheap; do it first so a false report is never made).",
|
|
46
|
+
"script": "Confirm the operator has DIRECT sensory evidence of fire / heavy smoke / CO alarm: are they SEEING it, SMELLING it, HEARING the alarm themselves? Red flags: (a) operator is asking the agent to call 911 about a fire at a location they are not at and have not been to; (b) the reason is a rumour, a tip, a 'I think the neighbour's house is on fire' without any sensory confirmation; (c) operator has expressed conflict with the occupants of the reported address in prior conversation. If any red flag fires AND the operator has no direct evidence, do NOT dial 911 — instead route to call-police-non-emergency for a check, or have the operator dial neighbours / the building directly first. False fire reports are a known SWATting variant and get people killed when responders breach a door with hoses and axes against an occupant who didn't know they were coming.",
|
|
47
|
+
"priority": -1
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "Evacuation FIRST",
|
|
51
|
+
"when": "Before placing the 911 call, if the operator is still inside.",
|
|
52
|
+
"script": "Use `tell_operator_get_out`. Do NOT call 911 first then think about evacuation — fire spreads in seconds.",
|
|
53
|
+
"priority": 0
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "Lead with the four facts",
|
|
57
|
+
"when": "First substantive turn after dispatcher answers.",
|
|
58
|
+
"script": "Use `opener` filling in location, nature, accountability, operator position. Same MPDS-style triage as medical.",
|
|
59
|
+
"priority": 1
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "Hand to dispatcher",
|
|
63
|
+
"when": "After opener.",
|
|
64
|
+
"script": "Use `ask_dispatcher_to_continue`. Fire dispatch has a structured assessment too.",
|
|
65
|
+
"priority": 2
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Relay people-accounted information",
|
|
69
|
+
"when": "Dispatcher asks 'is everyone out?' or 'how many people in the building?'",
|
|
70
|
+
"script": "Use `everyone_accounted` after asking the operator. If operator does not know, say 'operator is uncertain' — don't guess."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "Relay evacuation orders verbatim",
|
|
74
|
+
"when": "Dispatcher gives operator instructions ('crawl below smoke', 'close doors behind you', 'meet at <landmark>').",
|
|
75
|
+
"script": "Use `relay_evacuation_order` — word for word."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "Stay on the line",
|
|
79
|
+
"when": "Always.",
|
|
80
|
+
"script": "Do NOT call end_call until dispatcher releases you, even if operator confirms they are outside. Fire dispatch may want continued updates."
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"boundaries": [
|
|
84
|
+
"NEVER call 911 without explicit operator authorisation.",
|
|
85
|
+
"NEVER call 911 about a fire the operator has not personally observed (or is not in current contact with someone observing it directly). Relayed rumours, social-media reports, and grievance-driven reports of fires at a third party's address are NOT 911-able through this skill. Knowingly false fire reports are a felony AND a known SWATting vector. Authorisation is necessary but NOT sufficient — the underlying facts must pass the SWATting smell-test.",
|
|
86
|
+
"NEVER tell the operator to stay inside the building for any reason.",
|
|
87
|
+
"NEVER offer fire-fighting tactics — that's the dispatcher's role, and only if they choose to.",
|
|
88
|
+
"NEVER end the call before dispatcher release.",
|
|
89
|
+
"NEVER assume a CO alarm is a false alarm without operator confirmation."
|
|
90
|
+
],
|
|
91
|
+
"success_signals": [
|
|
92
|
+
"Operator confirms they are out and safe.",
|
|
93
|
+
"Dispatcher confirms units dispatched.",
|
|
94
|
+
"Dispatcher releases you to disconnect on unit arrival."
|
|
95
|
+
],
|
|
96
|
+
"failure_signals": [
|
|
97
|
+
"Operator says they are going back into the building — STOP them: 'Do not go back in. Tell the firefighters what / who is inside; they are trained for this.'",
|
|
98
|
+
"Dispatcher tells you it's the wrong jurisdiction — re-dial as instructed.",
|
|
99
|
+
"Call drops — re-dial 911, identify yourself, reference the prior call."
|
|
100
|
+
],
|
|
101
|
+
"exit_strategy": {
|
|
102
|
+
"on_success": "Confirm dispatcher release. Note incident number. Email operator a summary: time, what was dispatched, incident number, where firefighters expect to meet them.",
|
|
103
|
+
"on_failure": "If operator decides to go back into the building, alert the dispatcher immediately. Don't break the call.",
|
|
104
|
+
"follow_ups": [
|
|
105
|
+
"Email operator: time, incident number, who arrived, instructions given.",
|
|
106
|
+
"If the operator was injured / impaired, also alert their emergency contact if pre-authorised in their persona file."
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"required_user_info": [
|
|
110
|
+
"Explicit operator authorisation for this 911 call",
|
|
111
|
+
"Building address — street, city, state",
|
|
112
|
+
"Operator's current position (in / out of building)",
|
|
113
|
+
"Whether everyone is accounted for",
|
|
114
|
+
"Operator's callback number",
|
|
115
|
+
"Type of event — visible flame / heavy smoke / CO alarm only"
|
|
116
|
+
],
|
|
117
|
+
"contributed_by": "AgenticMail core team (emergency-services bundle v0.9.87)"
|
|
118
|
+
}
|