@agenticmail/core 0.9.32 → 0.9.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/index.d.cts +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/skills/built-in/accommodation-intake.json +132 -0
  4. package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
  5. package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
  6. package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
  7. package/dist/skills/built-in/anti-social-engineering.json +153 -0
  8. package/dist/skills/built-in/anything-else-sweep.json +120 -0
  9. package/dist/skills/built-in/apologise-correctly.json +126 -0
  10. package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
  11. package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
  12. package/dist/skills/built-in/bant-discovery-call.json +125 -0
  13. package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
  14. package/dist/skills/built-in/bookmark-close.json +113 -0
  15. package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
  16. package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
  17. package/dist/skills/built-in/calibrated-questions.json +155 -0
  18. package/dist/skills/built-in/call-911-fire.json +118 -0
  19. package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
  20. package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
  21. package/dist/skills/built-in/call-988-crisis-line.json +106 -0
  22. package/dist/skills/built-in/call-poison-control.json +115 -0
  23. package/dist/skills/built-in/call-police-non-emergency.json +114 -0
  24. package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
  25. package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
  26. package/dist/skills/built-in/cancel-policy-clean.json +130 -0
  27. package/dist/skills/built-in/capture-rep-identity.json +113 -0
  28. package/dist/skills/built-in/childcare-provider-intake.json +157 -0
  29. package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
  30. package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
  31. package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
  32. package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
  33. package/dist/skills/built-in/contractor-estimate-request.json +142 -0
  34. package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
  35. package/dist/skills/built-in/cpa-intake-call.json +134 -0
  36. package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
  37. package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
  38. package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
  39. package/dist/skills/built-in/deliver-difficult-news.json +122 -0
  40. package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
  41. package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
  42. package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
  43. package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
  44. package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
  45. package/dist/skills/built-in/dispute-denied-claim.json +143 -0
  46. package/dist/skills/built-in/dispute-security-deposit.json +130 -0
  47. package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
  48. package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
  49. package/dist/skills/built-in/document-call-promises.json +145 -0
  50. package/dist/skills/built-in/early-lease-termination.json +126 -0
  51. package/dist/skills/built-in/elite-line-escalation.json +107 -0
  52. package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
  53. package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
  54. package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
  55. package/dist/skills/built-in/file-habitability-complaint.json +115 -0
  56. package/dist/skills/built-in/financial-aid-appeal.json +128 -0
  57. package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
  58. package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
  59. package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
  60. package/dist/skills/built-in/handle-callback-stall.json +120 -0
  61. package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
  62. package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
  63. package/dist/skills/built-in/handle-time-pressure.json +159 -0
  64. package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
  65. package/dist/skills/built-in/hoa-dispute.json +123 -0
  66. package/dist/skills/built-in/hold-time-strategy.json +137 -0
  67. package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
  68. package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
  69. package/dist/skills/built-in/humour-when-it-lands.json +127 -0
  70. package/dist/skills/built-in/i20-visa-dso.json +134 -0
  71. package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
  72. package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
  73. package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
  74. package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
  75. package/dist/skills/built-in/late-add-petition.json +128 -0
  76. package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
  77. package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
  78. package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
  79. package/dist/skills/built-in/medical-records-transfer.json +138 -0
  80. package/dist/skills/built-in/medical-withdrawal.json +131 -0
  81. package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
  82. package/dist/skills/built-in/mirror-technique.json +145 -0
  83. package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
  84. package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
  85. package/dist/skills/built-in/move-out-walkthrough.json +114 -0
  86. package/dist/skills/built-in/multi-channel-escalation.json +141 -0
  87. package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
  88. package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
  89. package/dist/skills/built-in/no-as-opening.json +154 -0
  90. package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
  91. package/dist/skills/built-in/outage-credit-applied.json +127 -0
  92. package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
  93. package/dist/skills/built-in/pediatric-school-forms.json +141 -0
  94. package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
  95. package/dist/skills/built-in/pharmacy-callback.json +134 -0
  96. package/dist/skills/built-in/pivot-mid-call.json +141 -0
  97. package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
  98. package/dist/skills/built-in/prescription-refill-followup.json +132 -0
  99. package/dist/skills/built-in/push-past-invented-policy.json +159 -0
  100. package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
  101. package/dist/skills/built-in/reach-executive-office.json +137 -0
  102. package/dist/skills/built-in/read-vocal-cues.json +139 -0
  103. package/dist/skills/built-in/read-vocal-tone.json +159 -0
  104. package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
  105. package/dist/skills/built-in/receive-difficult-news.json +115 -0
  106. package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
  107. package/dist/skills/built-in/recover-summary-refusal.json +121 -0
  108. package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
  109. package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
  110. package/dist/skills/built-in/referral-prior-authorization.json +130 -0
  111. package/dist/skills/built-in/refuse-the-split.json +142 -0
  112. package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
  113. package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
  114. package/dist/skills/built-in/rental-scam-report.json +125 -0
  115. package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
  116. package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
  117. package/dist/skills/built-in/report-elder-or-child-abuse.json +117 -0
  118. package/dist/skills/built-in/report-fbi-tip.json +109 -0
  119. package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
  120. package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
  121. package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
  122. package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
  123. package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
  124. package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
  125. package/dist/skills/built-in/request-welfare-check.json +127 -0
  126. package/dist/skills/built-in/request-written-confirmation.json +113 -0
  127. package/dist/skills/built-in/reschedule-appointment.json +121 -0
  128. package/dist/skills/built-in/reset-by-callback.json +143 -0
  129. package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
  130. package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
  131. package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
  132. package/dist/skills/built-in/roommate-replacement.json +121 -0
  133. package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
  134. package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
  135. package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
  136. package/dist/skills/built-in/social-security-replacement-card.json +122 -0
  137. package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
  138. package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
  139. package/dist/skills/built-in/stop-recurring-ach.json +127 -0
  140. package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
  141. package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
  142. package/dist/skills/built-in/therapist-intake-call.json +133 -0
  143. package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
  144. package/dist/skills/built-in/transcript-request.json +128 -0
  145. package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
  146. package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
  147. package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
  148. package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
  149. package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
  150. package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
  151. package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
  152. package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
  153. package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
  154. package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
  155. package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
  156. package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
  157. package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
  158. package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
  159. package/dist/skills/built-in/walkaway-threats.json +159 -0
  160. package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
  161. package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
  162. package/dist/skills/built-in/wire-funds-safely.json +129 -0
  163. package/package.json +1 -1
@@ -0,0 +1,133 @@
1
+ {
2
+ "id": "attorney-new-client-intake",
3
+ "name": "New-Client Intake With a Specialist Attorney",
4
+ "version": "1.0.1",
5
+ "category": "legal-admin",
6
+ "tags": [
7
+ "legal",
8
+ "attorney",
9
+ "lawyer",
10
+ "intake",
11
+ "consultation",
12
+ "phone-call",
13
+ "fee-agreement",
14
+ "professional-services"
15
+ ],
16
+ "description": "Place an intake / discovery call with a specialist attorney's office to triage whether the matter is a fit, whether the consult is free or paid, what the fee structure looks like, and to surface conflicts of interest BEFORE the operator signs anything.",
17
+ "disclaimer": "Nothing said on this call is legal advice — the call is to evaluate the attorney, not to receive counsel. Engagement only begins once a signed fee agreement exists. Do not sign or pay anything mid-call without the operator's explicit approval via ask_operator.",
18
+ "context": {
19
+ "when_to_use": "The operator needs a lawyer in a specific practice area (employment, family, immigration, IP, criminal, estate, PI, etc.) and is screening candidates. Use BEFORE the operator has committed to retaining the firm. Pair with `attorney-fee-agreement-review` (separate skill) once a written engagement letter arrives.",
20
+ "preconditions": [
21
+ "Operator has summarised the matter in 2-4 sentences (facts, jurisdiction, opposing party if any).",
22
+ "Operator has a rough budget range and timeline.",
23
+ "Operator has confirmed the firm appears to practice in this area (website / referral / bar directory).",
24
+ "Operator has provided the names of every adverse party so the firm can run a conflicts check."
25
+ ],
26
+ "estimated_call_duration_minutes": 25
27
+ },
28
+ "principles": [
29
+ "You are vetting them as much as they are vetting you. A good lawyer welcomes informed questions; a defensive one is a red flag.",
30
+ "Free 15-minute intakes are screening calls, not legal advice. Don't expect a strategy session — expect fit + fees + conflicts.",
31
+ "Fee structure (hourly vs flat vs contingency vs hybrid) shapes everything downstream. Get clarity in writing before signing anything.",
32
+ "Conflicts of interest disqualify firms instantly. Surface every adverse name and entity upfront so the firm can clear conflicts.",
33
+ "Specialisation matters more than the marquee firm. A solo who lives in this practice area often beats a generalist at a big shop.",
34
+ "Engagement begins with a signed fee agreement — never with a verbal yes. Until then, nothing is privileged and nothing is owed."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi — calling for [operator's first name or 'a client'] looking for [practice area] representation. Before I get into the details, can I check a couple of things — do you handle this kind of matter, and is the initial consult free or paid?",
38
+ "conflicts_disclosure": "Before we go further, the adverse parties / other interested parties are: [list]. Could you check for conflicts before I share any privileged-adjacent facts?",
39
+ "fee_probe": "Could you walk me through how the firm bills for this kind of matter — hourly, flat-fee, contingency, or hybrid? And what's the rate of the attorney who'd actually be working the file, plus any associate or paralegal rates?",
40
+ "scope_probe": "What does the engagement typically cover, and what falls outside scope? For example, would [foreseeable next step] be billed separately?",
41
+ "retainer_probe": "What's the upfront retainer, and is it refundable if unused? Where is it held — trust account or operating account?",
42
+ "specialisation_probe": "How many matters like this has the firm handled in the last two years, and would the attorney on the line today be the one actually doing the work?",
43
+ "timeline_probe": "Realistically, what's the timeline from engagement to [first meaningful milestone — filing, demand letter, hearing, closing]?",
44
+ "stall_to_check": "Let me check with [operator] before I commit to anything on fees or signatures — I want to make sure they hear the numbers directly.",
45
+ "graceful_close": "Thank you, this was really helpful. Could you send the engagement letter and fee schedule in writing? [Operator] will review and we'll come back with a decision in [timeframe]. What's the best email for that?"
46
+ },
47
+ "tactics": [
48
+ {
49
+ "name": "Front-load conflicts and fit",
50
+ "when": "First 2 minutes of the call.",
51
+ "script": "Use the `opener` then the `conflicts_disclosure`. If the firm has a conflict, the call ends in 90 seconds with no facts shared — protecting both sides. If they handle this area, proceed.",
52
+ "priority": 1
53
+ },
54
+ {
55
+ "name": "Pin down WHO does the work",
56
+ "when": "After fit is confirmed.",
57
+ "script": "Use the `specialisation_probe`. Big-firm intake often pitches the partner; the work gets done by a second-year associate. Find out who actually owns the file day-to-day and what their rate is.",
58
+ "priority": 2
59
+ },
60
+ {
61
+ "name": "Make the fee math concrete",
62
+ "when": "Fee structure has been described in the abstract.",
63
+ "script": "Ask: 'For a matter that resolves in [typical scenario], what does the total bill usually land at — low end and high end?' Push past 'it depends' once; a competent attorney can give a range.",
64
+ "priority": 3
65
+ },
66
+ {
67
+ "name": "Probe the retainer mechanics",
68
+ "when": "An upfront retainer is mentioned.",
69
+ "script": "Use `retainer_probe`. Trust-account retainers (held until earned) are standard and refundable; 'evergreen' retainers that auto-replenish need explicit operator consent. Earned-on-receipt retainers can be a red flag for small consumer matters.",
70
+ "priority": 4
71
+ },
72
+ {
73
+ "name": "Listen for hedge language",
74
+ "when": "Throughout the call.",
75
+ "script": "An honest lawyer says 'I don't know yet, here's what I'd need to know'. A bad one promises outcomes. Note any guarantee of result — most bars prohibit this and it's a discipline risk.",
76
+ "priority": 5
77
+ },
78
+ {
79
+ "name": "Defer signature to the operator",
80
+ "when": "Intake coordinator tries to send DocuSign mid-call.",
81
+ "script": "Use the `stall_to_check` phrase. NEVER e-sign on the operator's behalf. Ask them to email the engagement letter; the operator reviews offline. This is non-negotiable.",
82
+ "priority": 6
83
+ },
84
+ {
85
+ "name": "Ask about malpractice insurance",
86
+ "when": "Near end of call, after fees.",
87
+ "script": "Ask: 'Does the firm carry professional liability insurance?' Many solos in some states do not — not disqualifying, but the operator should know."
88
+ }
89
+ ],
90
+ "boundaries": [
91
+ "Do NOT sign an engagement letter, fee agreement, or e-sign mid-call. ALWAYS use ask_operator first.",
92
+ "Do NOT pay a retainer or provide payment details on this call. Funds flow only after the operator has reviewed the written agreement.",
93
+ "Do NOT share privileged facts before conflicts are cleared.",
94
+ "Do NOT accept a verbal-only fee quote — get it in writing before any commitment.",
95
+ "Do NOT disclose the operator's settlement floor, walk-away number, or maximum budget. Those are not the attorney's business until retained.",
96
+ "Do NOT let the firm use this call as billable time. Confirm the consult is free (or the agreed flat rate) at the start."
97
+ ],
98
+ "success_signals": [
99
+ "The firm runs a conflicts check on the spot or commits to a same-day result.",
100
+ "The attorney who would handle the matter speaks personally, not just an intake coordinator.",
101
+ "Fees are quoted as a range with assumptions, not as a vague 'it depends'.",
102
+ "Retainer is held in a trust account and is refundable to the extent unearned.",
103
+ "Engagement letter will be emailed for offline review.",
104
+ "Attorney names a specific next step and timeline."
105
+ ],
106
+ "failure_signals": [
107
+ "Pressure to sign or pay during the call.",
108
+ "Refusal to disclose the actual working attorney's name or rate.",
109
+ "Outcome guarantees ('we always win these').",
110
+ "Vague conflicts handling ('we'll figure that out later').",
111
+ "Earned-on-receipt retainer with no refund mechanism on a small matter.",
112
+ "Intake coordinator who will not transfer you to an attorney before payment."
113
+ ],
114
+ "exit_strategy": {
115
+ "on_success": "Confirm the firm will email the engagement letter, fee schedule, and a written summary of conflicts clearance. Note attorney name, bar number if mentioned, hourly rate(s), retainer amount, and quoted timeline. Tell the firm the operator will respond within [timeframe].",
116
+ "on_failure": "Politely close. If conflicts existed, thank them for clearing it quickly. If fit was wrong, ask for one or two referrals to firms that do handle this area — most lawyers will give them.",
117
+ "follow_ups": [
118
+ "Email the operator: firm name, attorney name, fee structure, retainer, timeline, red/green flags, recommended next step.",
119
+ "If proceeding: calendar 48-hour review window for the engagement letter before any signature.",
120
+ "If declining: note the firm in operator's records with reason, so they aren't re-contacted by mistake."
121
+ ]
122
+ },
123
+ "required_user_info": [
124
+ "Practice area and 2-4 sentence matter summary",
125
+ "Full list of adverse parties and other interested entities (for conflicts check)",
126
+ "Jurisdiction (state, sometimes county)",
127
+ "Approximate budget range and time horizon",
128
+ "Whether the operator has talked to other attorneys about this matter (relevant for conflicts and strategy)",
129
+ "Operator's preferred email for the engagement letter"
130
+ ],
131
+ "contributed_by": "professional-intake agent (v0.9.87 community drop)",
132
+ "updated_at": "2026-05-20T06:09:47Z"
133
+ }
@@ -0,0 +1,125 @@
1
+ {
2
+ "id": "bant-discovery-call",
3
+ "name": "Run a BANT Discovery Call (Budget, Authority, Need, Timing)",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "discovery",
8
+ "qualification",
9
+ "BANT",
10
+ "phone-call",
11
+ "sales-process",
12
+ "outreach-sales"
13
+ ],
14
+ "description": "Run a short qualifying conversation with a live prospect to determine whether their Budget, Authority, Need, and Timing align well enough to justify a follow-up. The goal is honest mutual qualification — not extracting commitment.",
15
+ "disclaimer": "Skills assume the call is solicited by the operator. NEVER use these to power a mass-cold-call campaign without the operator's explicit per-prospect authorisation.",
16
+ "context": {
17
+ "when_to_use": "A prospect has agreed to a discovery / intro call (~15-20 minutes). The operator wants to know whether to invest further sales motion or politely disqualify.",
18
+ "preconditions": [
19
+ "Prospect has consented to a discovery call (not ambushed on a cold dial).",
20
+ "Operator has supplied the one-line value prop and the ideal-customer profile.",
21
+ "Agent has researched the prospect's company at the level a peer would expect.",
22
+ "Agent has a graceful out for both 'great fit' and 'not a fit'."
23
+ ],
24
+ "estimated_call_duration_minutes": 18
25
+ },
26
+ "principles": [
27
+ "Discovery is mutual. You are qualifying them; they are qualifying you. Both sides should leave with a clearer no or a clearer yes.",
28
+ "Earn each BANT question before asking it. Premature 'what's your budget?' kills the call.",
29
+ "Listen more than you talk. Target 30% agent / 70% prospect by minute count.",
30
+ "Open questions over closed ones. 'What does success look like in 90 days?' opens; 'do you need feature X?' closes.",
31
+ "Disqualifying gracefully is a win. A clean 'we're not the right fit' protects both sides' time and builds long-term trust.",
32
+ "Take notes verbatim where possible — exact quotes from the prospect become the operator's best follow-up material."
33
+ ],
34
+ "phrases": {
35
+ "opener": "Thanks for the time today. Just to set expectations — I want to use the next 15 or so minutes to understand what you're working on, see if what [operator] does is actually relevant, and if not, save us both the next meeting. Sound good?",
36
+ "need_open": "What's the thing that made you take this call? What's going on right now that made [topic] worth 15 minutes?",
37
+ "need_deepen": "Got it. And what have you tried so far? What's worked, what hasn't?",
38
+ "authority_soft": "If you decided this was worth doing, who else would be involved in the call to bring it forward — anyone we should loop in next?",
39
+ "timing_open": "Where does this sit on your list right now — is it a 'this quarter' thing, a 'thinking about next year' thing, or somewhere in between?",
40
+ "budget_indirect": "Without getting into numbers, is there an existing budget line this would fit into, or would it need to be a new line of spend?",
41
+ "graceful_disqualify": "Based on what you've described, I'm not sure we're the right fit — and I'd rather tell you that now than waste a follow-up. Here's what I think you actually need: [reframe]. Want me to point you in that direction?",
42
+ "graceful_next_step": "This sounds like it's worth a second conversation. Could I propose [specific concrete next step] — would [day/time] work?"
43
+ },
44
+ "tactics": [
45
+ {
46
+ "name": "Open with a frame, not a pitch",
47
+ "when": "First 60 seconds of the call.",
48
+ "script": "Use the `opener` phrase. Naming 'we might not be a fit and that's fine' lowers the prospect's defences and the conversation gets real fast.",
49
+ "priority": 1
50
+ },
51
+ {
52
+ "name": "Start with N (Need) — never with B (Budget)",
53
+ "when": "After the opener.",
54
+ "script": "Use `need_open` and follow with `need_deepen`. Spend the first 5-7 minutes here. The other three letters become easy if Need is real and undervague.",
55
+ "priority": 2
56
+ },
57
+ {
58
+ "name": "Probe Authority gently, never as gatekeeping",
59
+ "when": "Around minute 8-10, after Need is clear.",
60
+ "script": "Use `authority_soft`. Phrase it as 'who else benefits' not 'are you the decision-maker?' — the latter is patronising and produces nothing useful.",
61
+ "priority": 3
62
+ },
63
+ {
64
+ "name": "Ask Timing before Budget",
65
+ "when": "After Need + Authority are clearer.",
66
+ "script": "Use `timing_open`. Timing tells you whether the next step is a follow-up call or a calendared check-in in 2 quarters.",
67
+ "priority": 4
68
+ },
69
+ {
70
+ "name": "Ask Budget indirectly",
71
+ "when": "Last of the four, only if Need + Timing both pass.",
72
+ "script": "Use `budget_indirect`. You rarely need an exact dollar figure on a discovery call — you need to know if money exists or has to be invented.",
73
+ "priority": 5
74
+ },
75
+ {
76
+ "name": "Disqualify out loud when it's clear",
77
+ "when": "It's clear they're not a fit AND there's still 5+ minutes left.",
78
+ "script": "Use `graceful_disqualify`. Don't burn the last 5 minutes politely pretending. Disqualify, offer something useful (a referral, a resource), and end early — they will remember it positively.",
79
+ "priority": 6
80
+ },
81
+ {
82
+ "name": "Close on one concrete next step",
83
+ "when": "Last 2 minutes of the call.",
84
+ "script": "Use `graceful_next_step`. One step, with a proposed time. Vague 'I'll send you something' closes drift into ghosting."
85
+ }
86
+ ],
87
+ "boundaries": [
88
+ "Do NOT push past 'no budget' by suggesting they reorganise their priorities — that's pressure, not discovery.",
89
+ "Do NOT promise capabilities the operator hasn't authorised you to promise.",
90
+ "Do NOT record or transcribe the call without explicit consent.",
91
+ "Do NOT use BANT as an interrogation — if the prospect resists, switch to open conversation. The framework is internal scaffolding, not a script the prospect has to recognise.",
92
+ "Do NOT continue qualifying after Need has clearly failed. If there's no real problem to solve, you're not their vendor."
93
+ ],
94
+ "success_signals": [
95
+ "Prospect describes Need in their own words with specifics (numbers, recent events, named pain).",
96
+ "Prospect names other people on their side ('I'd loop in our CTO and head of ops').",
97
+ "Prospect commits to a concrete next-step time on the call.",
98
+ "Prospect asks pricing-shaped questions of their own initiative.",
99
+ "Prospect references a specific timeline (quarter, fiscal year event)."
100
+ ],
101
+ "failure_signals": [
102
+ "Need answers stay abstract ('we just want to be more efficient').",
103
+ "Prospect cannot or will not name anyone else who would be involved.",
104
+ "Timing is 'no idea' or 'someday'.",
105
+ "Budget answer is 'we don't really do that kind of spend' AND nothing about Need indicates it's worth changing that.",
106
+ "Prospect is on the call clearly to be polite, not to evaluate."
107
+ ],
108
+ "exit_strategy": {
109
+ "on_success": "Confirm the next step verbally, send a calendar invite within 2 hours, and a short recap email within 24 hours with the prospect's own words quoted back.",
110
+ "on_failure": "Politely disqualify on the call. Offer a useful referral if you have one. Send a 2-line follow-up email thanking them and confirming you're not pushing.",
111
+ "follow_ups": [
112
+ "Write a one-paragraph CRM note: BANT score per dimension, exact prospect quotes, next step or disqualification reason.",
113
+ "If timing was 'next year', set a calendar reminder to re-contact 30 days before the named window."
114
+ ]
115
+ },
116
+ "required_user_info": [
117
+ "Operator's one-line value prop and ideal customer profile",
118
+ "Operator's pricing band (so the agent can interpret budget answers)",
119
+ "What 'qualified' looks like for the operator — minimum thresholds per BANT dimension",
120
+ "Operator's authorised next-step options (demo / proposal / pilot / referral-out)",
121
+ "Whether the agent may quote pricing live or must defer to the operator"
122
+ ],
123
+ "contributed_by": "sales-outbound agent (v0.9.87 community drop)",
124
+ "updated_at": "2026-05-20T06:09:47Z"
125
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "id": "book-new-patient-appointment",
3
+ "name": "Book a New-Patient Appointment with Limited Availability",
4
+ "version": "1.0.1",
5
+ "category": "medical-admin",
6
+ "tags": [
7
+ "scheduling",
8
+ "new-patient",
9
+ "appointments",
10
+ "phone-call",
11
+ "waitlist",
12
+ "healthcare"
13
+ ],
14
+ "description": "Call a clinic or specialist's office to book an initial new-patient visit when the practice is taking few or no new patients. Use waitlists, cancellation slots, and provider-flexibility to land a real appointment instead of being told 'we'll call you back'.",
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 needs an initial appointment with a practice that is 'closed to new patients', booking out 3+ months, or has a referral-only policy. Not for established-patient visits (use `reschedule-appointment`).",
18
+ "preconditions": [
19
+ "Operator's full legal name, DOB, and the insurance plan name + member ID are provided (do not guess them).",
20
+ "Reason for visit in plain language (e.g. 'annual physical', 'persistent knee pain since March') — NOT a self-diagnosis.",
21
+ "Operator's geographic constraints, preferred days/times, and whether telehealth is acceptable.",
22
+ "If referral-only: name of referring provider and whether a referral has actually been sent.",
23
+ "Operator's flexibility: would they take a different provider in the same group? A cancellation slot at short notice?"
24
+ ],
25
+ "estimated_call_duration_minutes": 15
26
+ },
27
+ "principles": [
28
+ "Front-desk staff are gatekeepers, not adversaries — warmth opens slots that policy says don't exist.",
29
+ "'Not taking new patients' is rarely literal. It usually means 'not via the public phone tree' — a referring provider, a cancellation list, or a different doctor in the same group is often available.",
30
+ "Specificity beats flexibility in opener, then flexibility beats specificity in close. Say what you need clearly; once they push back, become the easiest patient on their list.",
31
+ "Verify slot details twice — practice, provider, date, time, in-person vs telehealth, address. Healthcare schedulers misroute constantly.",
32
+ "If the rep contradicts something said earlier in the call (e.g. now says insurance not accepted after saying it was), STOP and re-verify before booking. Do not paper over the conflict."
33
+ ],
34
+ "phrases": {
35
+ "opener": "Hi, I'm calling on behalf of [Operator Name] to establish care as a new patient with Dr. [Name] / your practice. The reason for the visit is [reason]. What's the soonest you have, and is there a cancellation list I can be added to in the meantime?",
36
+ "insurance_check": "Before we book, can you confirm you're in-network with [Plan Name]? I want to make sure we don't get surprised on billing.",
37
+ "ask_for_cancellation_list": "Even if the first available is months out, can you add us to your cancellation or short-notice list? We can be there same-day if something opens up.",
38
+ "ask_for_any_provider": "If Dr. [Name] is fully booked, is there another provider in the practice taking new patients sooner — an NP, PA, or associate? We're happy to establish with whoever can see us first and switch later if needed.",
39
+ "referral_status_check": "Can you tell me whether the referral from Dr. [Referring] has actually arrived in your system? Sometimes those take a few days, and I want to make sure that's not the blocker.",
40
+ "stall_research": "One moment — let me make sure I have the operator's information lined up correctly before I read it back.",
41
+ "verify_readback": "Just to confirm: that's [Provider Name], [Date] at [Time], at [Address], for [Operator]. And the visit type is [in-person / telehealth]. Did I get all of that right?",
42
+ "graceful_decline": "Okay, that works. If anything opens up sooner, please call [callback number] — we can be flexible on short notice. Thanks for your help."
43
+ },
44
+ "tactics": [
45
+ {
46
+ "name": "Open with the specific ask + soft flexibility",
47
+ "when": "First substantive turn after pleasantries.",
48
+ "script": "Use `opener`. Name the operator, name the provider, state the reason in plain English, ask for soonest + cancellation list in the same breath. Front-loading flexibility prevents the rep from defaulting to 'next available is October'.",
49
+ "priority": 1
50
+ },
51
+ {
52
+ "name": "Confirm in-network status before committing to a slot",
53
+ "when": "Once a candidate slot is offered.",
54
+ "script": "Use `insurance_check`. If the rep is unsure, ask them to look up the operator's plan by member ID. Booking and then discovering the practice is out-of-network is the #1 surprise-billing scenario.",
55
+ "priority": 2
56
+ },
57
+ {
58
+ "name": "Pivot to any-provider if blocked",
59
+ "when": "Rep says the requested provider is full.",
60
+ "script": "Use `ask_for_any_provider`. Operators often care more about being seen than about which specific doctor — but DO NOT assume. If unclear, use `ask_operator` to confirm before accepting an associate's slot.",
61
+ "priority": 3
62
+ },
63
+ {
64
+ "name": "Add to cancellation list as a parallel track",
65
+ "when": "Any time a slot is booked further out than the operator wanted.",
66
+ "script": "Use `ask_for_cancellation_list`. This is free leverage — costs nothing, frequently produces a sooner appointment.",
67
+ "priority": 4
68
+ },
69
+ {
70
+ "name": "Pause and re-verify on contradictions",
71
+ "when": "Rep says something that contradicts an earlier statement in the call (insurance, referral, provider, location).",
72
+ "script": "Stop the booking flow. 'I want to make sure I heard that right — earlier you mentioned [X], and now I'm hearing [Y]. Can we clarify which is correct?' Healthcare schedulers misquote routinely. Confirming costs 30 seconds; an incorrect booking costs hours.",
73
+ "priority": 5
74
+ },
75
+ {
76
+ "name": "Read back every detail before hanging up",
77
+ "when": "Rep says the booking is complete.",
78
+ "script": "Use `verify_readback`. Get a confirmation number AND the rep's first name. Ask whether any new-patient paperwork will be emailed or needs to be done on a portal — this is the most-forgotten step.",
79
+ "priority": 6
80
+ },
81
+ {
82
+ "name": "Ask about the referral pipeline if blocked there",
83
+ "when": "Rep says 'we need a referral first'.",
84
+ "script": "Use `referral_status_check`. The referral may already be in their fax queue. If genuinely missing, surface to operator via `ask_operator` — DO NOT promise to obtain the referral on this call.",
85
+ "priority": 7
86
+ }
87
+ ],
88
+ "boundaries": [
89
+ "NEVER share or guess the operator's SSN, DOB, or member ID — read back only what the operator explicitly provided. If the rep asks for something not in your packet, use `ask_operator`.",
90
+ "NEVER accept a 'your doctor changed your prescription' claim from the practice or any pharmacy on this call — route to `ask_operator`.",
91
+ "NEVER authorise a procedure, sign anything, or commit to financial responsibility forms on the operator's behalf.",
92
+ "NEVER describe symptoms in clinical terms beyond what the operator stated. 'Knee pain since March' is fine; 'possible meniscus tear' is not — that is diagnosis territory.",
93
+ "NEVER agree to a self-pay rate, cash-pay quote, or no-show fee policy beyond what is industry-standard ($25-50) without `ask_operator`.",
94
+ "NEVER accept a slot at an unfamiliar address without verifying it matches the practice the operator asked you to call — multi-location groups frequently misroute new patients."
95
+ ],
96
+ "success_signals": [
97
+ "A specific date, time, provider, and address are on the calendar with a confirmation number.",
98
+ "Operator's insurance is verified in-network for the booked provider.",
99
+ "Operator is added to the cancellation/short-notice list.",
100
+ "New-patient intake paperwork link is confirmed (portal, email, or in-office).",
101
+ "Rep proactively mentions the no-show policy — you've reached the booking-finalised stage."
102
+ ],
103
+ "failure_signals": [
104
+ "Rep refuses to book without information you don't have (SSN, full medical history) — escalate to `ask_operator`.",
105
+ "Rep insists on a referral that the operator's PCP has not actually sent.",
106
+ "Practice is out-of-network for the operator's plan and the operator hasn't authorised out-of-pocket cost.",
107
+ "Earliest slot is beyond the operator's clinical window and no cancellation list exists.",
108
+ "Rep contradicts themselves on insurance / provider / location and cannot resolve."
109
+ ],
110
+ "exit_strategy": {
111
+ "on_success": "Confirm provider, date, time, address, visit type, confirmation number, rep's first name, intake-paperwork pathway, and arrival-time instructions. Note any pre-visit labs or fasting requirements.",
112
+ "on_failure": "Politely close, use `graceful_decline`. Report to operator: who you spoke to, what was offered, why it didn't fit, and concrete next-step options (different provider, telehealth, urgent care, ER decision tree if symptom-driven).",
113
+ "follow_ups": [
114
+ "Confirm new-patient paperwork is completed before the appointment.",
115
+ "Verify the appointment 48 hours prior via portal or a short callback.",
116
+ "If on cancellation list, set a reminder to call back weekly to stay top-of-list."
117
+ ]
118
+ },
119
+ "required_user_info": [
120
+ "Operator's full legal name and DOB (DOB read-only — do not guess)",
121
+ "Insurance plan name + member ID (do not guess)",
122
+ "Reason for visit in plain language",
123
+ "Geographic + scheduling constraints",
124
+ "Preferred provider name (and whether any provider in the group is acceptable)",
125
+ "Whether telehealth is acceptable",
126
+ "Referring provider (if applicable) and referral status",
127
+ "Callback phone number for cancellation list"
128
+ ],
129
+ "contributed_by": "healthcare-navigator agent (v0.9.87 community drop)",
130
+ "updated_at": "2026-05-20T06:09:47Z"
131
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "id": "bookmark-close",
3
+ "name": "The Bookmark Close",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "closing",
8
+ "bookmark",
9
+ "recording",
10
+ "summary",
11
+ "phone-call",
12
+ "closing-commitment"
13
+ ],
14
+ "description": "End the call with a single, complete, recorded sentence that bookmarks the entire conversation: who, what, when, where, the reference numbers, and the rep's own words. The bookmark is a 20-second clip an agent (or human) can replay months later to reconstruct the agreement in full — without re-listening to a 30-minute call.",
15
+ "disclaimer": null,
16
+ "context": {
17
+ "when_to_use": "The LAST tactical move before the formal goodbye. Use after readback, lock-in, ownership, written confirmation request, sweep, and any upsell refusal — once everything substantive is locked. The bookmark is the closing artifact.",
18
+ "preconditions": [
19
+ "All other closing skills have been run (or deliberately skipped with reason).",
20
+ "You have collected: rep name + ID, case/reference number, the locked amounts/dates/conditions, ownership of next steps.",
21
+ "Call is still being recorded."
22
+ ],
23
+ "estimated_call_duration_minutes": 2
24
+ },
25
+ "principles": [
26
+ "The bookmark is ONE sentence, said clearly, with all the load-bearing facts. Not a paragraph; not a list. A sentence the future-self can transcribe in 20 seconds.",
27
+ "Speak it slowly. The bookmark exists to be found and transcribed later — clarity matters more than conversational pace.",
28
+ "Include the rep's affirmative response in the recording. 'Yes that's correct' from the rep makes the bookmark mutually attested.",
29
+ "Reference numbers go INSIDE the bookmark. A future search for the case number lands directly on the bookmark clip.",
30
+ "Bookmark = single source of truth on the call. If anything else in the call contradicts the bookmark, the bookmark wins."
31
+ ],
32
+ "phrases": {
33
+ "opener": "Just to bookmark this for both of us before we hang up — let me state the full picture in one sentence so it's on the line cleanly.",
34
+ "bookmark_template": "On [date], on a call with [rep name], operator ID [ID], case [reference number], we agreed: [primary terms — amount, effective date, duration, conditions], with next steps [owner / deadline / verification], and a written confirmation expected by [arrival window]. Can you confirm that's an accurate summary?",
35
+ "rep_affirm_request": "I'd appreciate a clear 'yes that's correct' on the line if you agree — saves us both a long lookup later if there's ever a question.",
36
+ "amend_after_correction": "Okay, with that adjustment: [restate full bookmark with correction]. Confirmed?",
37
+ "rep_refusal_to_affirm": "If you can't confirm the summary as I've stated it, what specifically should I change? I want the bookmark to match what we agreed to, exactly.",
38
+ "graceful_close_success": "Perfect. Thanks for your time today, [rep name]. Have a good rest of your shift.",
39
+ "graceful_close_failure": "If the bookmark can't be confirmed, I'm going to leave the call open as unresolved on my side and follow up through [written / supervisor / complaint channel]. Thank you for your time."
40
+ },
41
+ "tactics": [
42
+ {
43
+ "name": "Announce the bookmark",
44
+ "when": "Everything else closed; just before goodbye.",
45
+ "script": "Use the `opener` phrase. Signalling the bookmark shifts the rep into final-attestation mode rather than wrap-up mode — they slow down, listen, and engage.",
46
+ "priority": 1
47
+ },
48
+ {
49
+ "name": "Deliver the bookmark in one sentence",
50
+ "when": "Opener delivered.",
51
+ "script": "Use the `bookmark_template` phrase, filling every field with the actual data captured during the call. Do NOT fabricate — leave fields out rather than guess. Speak slowly and clearly.",
52
+ "priority": 2
53
+ },
54
+ {
55
+ "name": "Get the rep's affirmation on the recording",
56
+ "when": "Bookmark stated.",
57
+ "script": "Use the `rep_affirm_request` phrase. A mumbled 'mhm' is not enough — request a clear 'yes that's correct'. Two-sided affirmation makes the bookmark mutually attested.",
58
+ "priority": 3
59
+ },
60
+ {
61
+ "name": "Handle corrections by re-stating the full bookmark",
62
+ "when": "Rep corrects any field.",
63
+ "script": "Use the `amend_after_correction` phrase. Never accept piecemeal corrections — always restate the full bookmark so there's one clean recorded sentence with the correct content.",
64
+ "priority": 4
65
+ },
66
+ {
67
+ "name": "Probe a refusal to affirm",
68
+ "when": "Rep declines to say the bookmark is accurate.",
69
+ "script": "Use the `rep_refusal_to_affirm` phrase. Refusal to confirm a clean summary at this stage is a major red flag — branch to `recover-summary-refusal`.",
70
+ "priority": 5
71
+ },
72
+ {
73
+ "name": "Close cleanly on success",
74
+ "when": "Rep affirms the bookmark.",
75
+ "script": "Use the `graceful_close_success` phrase. Address the rep by name as a final courtesy — leaves a positive impression that pays off on the next call.",
76
+ "priority": 6
77
+ }
78
+ ],
79
+ "boundaries": [
80
+ "Do NOT bookmark facts that weren't actually agreed to. The bookmark is summary, not negotiation.",
81
+ "Do NOT pad the bookmark with editorial. 'And I really appreciate you helping me with this' belongs in the goodbye, not the bookmark.",
82
+ "Do NOT bookmark before all other closing steps are run — bookmarking incomplete agreements creates an authoritative-looking record of an incomplete close.",
83
+ "Do NOT accept silence as affirmation. The bookmark requires explicit rep agreement."
84
+ ],
85
+ "success_signals": [
86
+ "Rep clearly states 'yes that's correct' or similar affirmation.",
87
+ "Rep adds a small detail that improves the bookmark.",
88
+ "Rep references the bookmark by reference number later in the conversation.",
89
+ "Call audio shows a clean 30-60 second bookmark segment near the end."
90
+ ],
91
+ "failure_signals": [
92
+ "Rep dodges affirmation ('looks fine', 'sounds right' without 'yes').",
93
+ "Rep corrects the bookmark in a way that materially changes the agreement.",
94
+ "Rep cannot recall the reference number or rep ID stated in the bookmark.",
95
+ "Call drops or audio quality degrades during the bookmark — re-run before closing."
96
+ ],
97
+ "exit_strategy": {
98
+ "on_success": "Save the bookmark timestamp and a transcription. Treat this as the canonical record of the call. All future follow-ups should reference the bookmark.",
99
+ "on_failure": "Do NOT close without an affirmed bookmark. Branch to `recover-summary-refusal` for the refusal path, or escalate to a supervisor who can affirm the summary on the rep's behalf.",
100
+ "follow_ups": [
101
+ "Save the bookmark transcription with the user's record-keeping system, indexed by reference number and date.",
102
+ "If the written confirmation arrives and matches the bookmark verbatim, file the call as fully closed.",
103
+ "If the written confirmation differs from the bookmark, the bookmark is the authoritative version — quote it (and its timestamp) in any dispute."
104
+ ]
105
+ },
106
+ "required_user_info": [
107
+ "All fields needed to populate the bookmark template: rep name, ID, case number, locked terms, next-step ownership, written confirmation window",
108
+ "Confirmation that the call is being recorded so the bookmark exists as an artifact",
109
+ "User-side storage for the bookmark transcription"
110
+ ],
111
+ "contributed_by": "closing-commitment agent (v0.9.87 community drop)",
112
+ "updated_at": "2026-05-20T06:09:47Z"
113
+ }