@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
package/dist/index.d.cts CHANGED
@@ -5951,7 +5951,7 @@ interface Skill {
5951
5951
  extra?: Record<string, unknown>;
5952
5952
  }
5953
5953
  /** Coarse-grained taxonomy. Extend ONLY via PR + a reviewer's nod. */
5954
- type SkillCategory = 'negotiation' | 'customer-service' | 'reservations' | 'medical-admin' | 'legal-admin' | 'finance-admin' | 'real-estate' | 'travel' | 'subscription' | 'home-services' | 'social' | 'civic' | 'employment' | 'debt-collection' | 'other';
5954
+ type SkillCategory = 'negotiation' | 'customer-service' | 'reservations' | 'medical-admin' | 'legal-admin' | 'finance-admin' | 'real-estate' | 'travel' | 'subscription' | 'home-services' | 'social' | 'civic' | 'employment' | 'debt-collection' | 'emergency-services' | 'critical-reasoning' | 'emotional-intelligence' | 'closing' | 'outreach' | 'professional-services' | 'education' | 'tenancy' | 'utility-telecom' | 'insurance' | 'other';
5955
5955
  /** When-to-use + preconditions block. */
5956
5956
  interface SkillContext {
5957
5957
  /** Plain-language description of the situation this skill fits. */
package/dist/index.d.ts CHANGED
@@ -5951,7 +5951,7 @@ interface Skill {
5951
5951
  extra?: Record<string, unknown>;
5952
5952
  }
5953
5953
  /** Coarse-grained taxonomy. Extend ONLY via PR + a reviewer's nod. */
5954
- type SkillCategory = 'negotiation' | 'customer-service' | 'reservations' | 'medical-admin' | 'legal-admin' | 'finance-admin' | 'real-estate' | 'travel' | 'subscription' | 'home-services' | 'social' | 'civic' | 'employment' | 'debt-collection' | 'other';
5954
+ type SkillCategory = 'negotiation' | 'customer-service' | 'reservations' | 'medical-admin' | 'legal-admin' | 'finance-admin' | 'real-estate' | 'travel' | 'subscription' | 'home-services' | 'social' | 'civic' | 'employment' | 'debt-collection' | 'emergency-services' | 'critical-reasoning' | 'emotional-intelligence' | 'closing' | 'outreach' | 'professional-services' | 'education' | 'tenancy' | 'utility-telecom' | 'insurance' | 'other';
5955
5955
  /** When-to-use + preconditions block. */
5956
5956
  interface SkillContext {
5957
5957
  /** Plain-language description of the situation this skill fits. */
@@ -0,0 +1,132 @@
1
+ {
2
+ "id": "accommodation-intake",
3
+ "name": "Disability / Accommodation Services Intake",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "accommodation",
8
+ "disability",
9
+ "ADA",
10
+ "504",
11
+ "DSS",
12
+ "intake",
13
+ "phone-call",
14
+ "education"
15
+ ],
16
+ "description": "Call a college Disability Services / Accessibility / Student Accessibility Resources office to start an accommodation intake, request testing accommodations, housing accommodations, or note-taking / recording support — including for newly diagnosed conditions, temporary injuries, and undiagnosed-but-impacting concerns.",
17
+ "disclaimer": "Accommodations under ADA and Section 504 are granted based on documented disability + functional impact in the academic environment. The accommodations office determines what's reasonable, not the student or the faculty. This skill does not constitute legal advice; for denials, the Office for Civil Rights and disability-rights attorneys are formal recourse.",
18
+ "context": {
19
+ "when_to_use": "The user (a) has a recent or longstanding diagnosis (ADHD, learning disability, anxiety, depression, autism, chronic illness, mobility, vision, hearing, etc.) and hasn't yet registered with the disability office, (b) needs a temporary accommodation (broken arm, concussion, surgery recovery), (c) had high-school accommodations (IEP / 504) but they don't carry over, or (d) suspects they qualify but doesn't have documentation yet.",
20
+ "preconditions": [
21
+ "User has Student ID and contact info.",
22
+ "User can describe the functional impact in school terms: 'I can't sit for 50 minutes', 'I can't filter noise during tests', 'I freeze on timed exams', not just the diagnosis.",
23
+ "User has — or has a plan to obtain — documentation from a qualified provider. (IEP / 504 from K-12 is helpful but typically NOT sufficient on its own at the college level.)",
24
+ "User has reviewed the school's accommodation request form and intake calendar (some schools require 4–6 weeks lead time before testing accommodations are active)."
25
+ ],
26
+ "estimated_call_duration_minutes": 20
27
+ },
28
+ "principles": [
29
+ "Diagnosis is necessary but not sufficient — the office needs to see FUNCTIONAL IMPACT in the academic environment. Lead with impact, support with diagnosis.",
30
+ "The first call is intake, not approval. The goal is to open a file, get the documentation list, and book the substantive meeting with a Disability Services Coordinator.",
31
+ "Accommodations are forward-looking. They don't usually fix a grade you already earned. Register the moment you suspect you'll need them — earlier is always better.",
32
+ "K-12 IEP / 504 plans do NOT carry over to college. The student now has to self-disclose and re-document. This surprises a lot of families.",
33
+ "Faculty don't decide accommodations. Disability Services issues a letter; faculty are required to honor it. If a professor pushes back, the office advocates for you — that's their job.",
34
+ "If the user lacks documentation but has impact, ask about 'provisional' or 'interim' accommodations and the office's referral list for testing providers (some schools subsidize testing)."
35
+ ],
36
+ "phrases": {
37
+ "opener_new": "Hi, I'd like to start an intake with your office. I [have a diagnosis of / suspect I have] [condition] and it's affecting [specific academic task]. What's the process to get registered, and what's the realistic timeline?",
38
+ "opener_temporary": "Hi, I had [injury / surgery] on [date] and I need temporary accommodations for the next [duration]. Can you walk me through what your office offers and how fast we can put it in place?",
39
+ "ask_about_documentation": "What specifically do you need from a provider? Is there a form they should fill out, or a list of required elements (testing, diagnosis date, functional impact, recommended accommodations)?",
40
+ "ask_about_interim": "While I'm gathering documentation, are interim or provisional accommodations available? I have an exam on [date] and I'm worried about gap coverage.",
41
+ "ask_about_testing_referrals": "I don't currently have a recent psychoeducational evaluation. Does your office have a list of providers who test, and any subsidies or sliding-scale options?",
42
+ "ask_about_housing": "I'd also like to request housing accommodation for [reason — single, AC, ground floor, ESA, etc.]. Is that a separate process or part of the same intake?",
43
+ "name_specific_accommodations": "Based on my history, what's typically been effective is: extended time on tests (1.5x or 2x), distraction-reduced testing environment, lecture recording permission, note-taking support, flexible attendance, and assignment-deadline flexibility. Can we discuss which of these would be reasonable in my case?",
44
+ "ask_for_director": "Could I speak with the Director or an Associate Director of your office? I want to make sure the file is set up correctly and that I understand the appeal process if any accommodation is denied.",
45
+ "graceful_close_success": "Thank you. To confirm: intake meeting scheduled for [date] with [name], documentation list is [items], and I should expect my accommodation letter by [date]. May I have your direct email?"
46
+ },
47
+ "tactics": [
48
+ {
49
+ "name": "Lead with functional impact, support with diagnosis",
50
+ "when": "Describing the situation to the intake coordinator.",
51
+ "script": "Frame it as: 'When I [academic task], I [specific impact], because of [diagnosis or working hypothesis].' Office staff are trained on impact-based determination — diagnosis alone doesn't establish disability under ADA.",
52
+ "priority": 1
53
+ },
54
+ {
55
+ "name": "Book the intake meeting same-call",
56
+ "when": "First call.",
57
+ "script": "Don't leave the call without a calendar slot with a Coordinator. Many offices have 2-4 week wait lists; getting on the calendar is the actual win of this call.",
58
+ "priority": 2
59
+ },
60
+ {
61
+ "name": "Get the documentation checklist in writing",
62
+ "when": "Office describes what's required.",
63
+ "script": "Ask them to email the documentation requirements. Providers waste weeks producing letters that miss the school's required elements (date of testing, scores, DSM criteria, functional impact, recommended accommodations).",
64
+ "priority": 3
65
+ },
66
+ {
67
+ "name": "Ask about interim accommodations explicitly",
68
+ "when": "Documentation is pending but an exam or deadline is imminent.",
69
+ "script": "Use `ask_about_interim`. Many schools allow 30–60 days of interim accommodations on the basis of a provider's brief letter or pending evaluation — but only if you ask.",
70
+ "priority": 4
71
+ },
72
+ {
73
+ "name": "Bundle housing, testing, and classroom accommodations",
74
+ "when": "User has multiple needs.",
75
+ "script": "Use `ask_about_housing`. Housing accommodations (single room, AC, ESA, ground floor) often have separate deadlines (months before move-in) and separate documentation. Surface them all at intake.",
76
+ "priority": 5
77
+ },
78
+ {
79
+ "name": "Name common accommodations the office may not volunteer",
80
+ "when": "Discussing what accommodations might apply.",
81
+ "script": "Use `name_specific_accommodations`. Offices sometimes only offer extended time + distraction-reduced testing as defaults. Lecture recording, note-takers, flexible deadlines, and reduced-course-load status are equally available and rarely surfaced unsolicited.",
82
+ "priority": 6
83
+ },
84
+ {
85
+ "name": "Escalate to Director on denial",
86
+ "when": "An accommodation is denied or the request gets stuck.",
87
+ "script": "Use `ask_for_director`. There's usually an internal appeal process, and the Director has authority to override Coordinator-level decisions. Past that: the ADA Coordinator for the institution, then Office for Civil Rights complaint."
88
+ }
89
+ ],
90
+ "boundaries": [
91
+ "Do NOT disclose more medical detail than necessary. The office needs enough to verify a disability — they do not need a full history. Provider letters are the right channel for clinical detail.",
92
+ "Do NOT promise faculty anything about accommodations on the call — the office issues letters, faculty don't negotiate.",
93
+ "Do NOT use someone else's accommodations or letter — schools verify and the consequence is academic misconduct.",
94
+ "Do NOT skip registering 'because the semester is almost over' — register now for the next term; accommodations rarely apply retroactively to existing grades.",
95
+ "Do NOT make legal threats casually. They can be appropriate (ADA / Section 504 / OCR) but only after internal appeal."
96
+ ],
97
+ "success_signals": [
98
+ "Intake appointment booked.",
99
+ "Documentation checklist arrives by email.",
100
+ "Interim accommodations are confirmed in writing for the gap period.",
101
+ "Coordinator name and direct email are captured.",
102
+ "Office volunteers accommodations the user hadn't asked for."
103
+ ],
104
+ "failure_signals": [
105
+ "Office insists IEP / 504 from K-12 is sufficient without re-evaluation (it usually isn't at college level — push back).",
106
+ "Wait time for intake exceeds 6 weeks and no interim coverage offered.",
107
+ "Office tells user to 'talk to your professor' instead of issuing a formal accommodation — that's a misroute; the office's job is to issue the letter.",
108
+ "Documentation is rejected and the office won't specify what additional elements are needed.",
109
+ "Specific accommodation denied without written rationale or appeal pathway."
110
+ ],
111
+ "exit_strategy": {
112
+ "on_success": "Confirm intake date, Coordinator name, documentation requirements, interim coverage if any, and target letter-issuance date. Get the direct email.",
113
+ "on_failure": "Get any denial in writing with reasoning. Pathways: internal appeal to Director, ADA Coordinator for the institution, Office for Civil Rights complaint. Also consider a disability-rights legal aid org for a free consult before escalating.",
114
+ "follow_ups": [
115
+ "Email operator the documentation checklist and intake date.",
116
+ "Confirm provider letter is in draft and matches the school's required elements before submission.",
117
+ "Calendar 7 days after intake to confirm letter arrived.",
118
+ "Once letter is issued, email it to instructors at the start of each term — accommodations don't auto-deploy."
119
+ ]
120
+ },
121
+ "required_user_info": [
122
+ "Student ID and current term",
123
+ "Diagnosis (or working hypothesis) + provider name",
124
+ "Functional impact in academic terms",
125
+ "Whether documentation exists, is in progress, or is needed",
126
+ "K-12 IEP / 504 history if applicable",
127
+ "Specific upcoming deadlines (exams, papers, housing application)",
128
+ "Any accommodations previously used at another institution"
129
+ ],
130
+ "contributed_by": "education-admin agent (v0.9.87 community drop)",
131
+ "updated_at": "2026-05-20T06:09:47Z"
132
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "id": "add-driver-vehicle-household",
3
+ "name": "Add a New Driver, Vehicle, or Household Member Mid-Policy",
4
+ "version": "1.0.0",
5
+ "category": "finance-admin",
6
+ "tags": [
7
+ "auto",
8
+ "home",
9
+ "policy-change",
10
+ "endorsement",
11
+ "household",
12
+ "phone-call",
13
+ "insurance"
14
+ ],
15
+ "description": "Add a driver, vehicle, or household member to an existing policy mid-term. Confirm effective date, get the pro-rated premium impact in writing BEFORE binding, and avoid common traps: undisclosed-driver exclusions, garage-location mismatches, and surprise re-rating of the rest of the policy.",
16
+ "disclaimer": "Agent must NEVER admit fault, NEVER agree to a settlement on the operator's behalf, NEVER speculate about prior conditions, NEVER sign a release. All of those route through ask_operator.",
17
+ "context": {
18
+ "when_to_use": "User has a new driver (teen, spouse, household member), new vehicle (purchase, lease, gift), or new household composition (move-in roommate, college student returning) and wants to add them to an existing policy.",
19
+ "preconditions": [
20
+ "Existing policy number and named-insured info.",
21
+ "Full legal name, DOB, and driver's license number + state for new drivers.",
22
+ "VIN, year/make/model, lien holder info for new vehicles.",
23
+ "Garaging address (where the vehicle is parked overnight ≥ 50% of the time).",
24
+ "Date the change should be effective."
25
+ ],
26
+ "estimated_call_duration_minutes": 20
27
+ },
28
+ "principles": [
29
+ "Undisclosed drivers in the household are the #1 cause of post-loss coverage denials. Disclose, even when the rate goes up.",
30
+ "Effective date matters. Coverage gaps before the effective date can void claims; coverage backdates are often refused.",
31
+ "Adding a driver re-rates the WHOLE policy. Ask for the new total premium, not just the 'driver portion'.",
32
+ "Garaging address must match where the vehicle actually sits at night — misrepresenting it is rate fraud.",
33
+ "Lienholders and lessors require specific coverages (full coverage + lienholder-as-loss-payee). Confirm the lienholder info is added correctly or the lender will force-place coverage.",
34
+ "Get the binding confirmation and premium impact in writing BEFORE the call ends. 'I'll send the endorsement later' too often becomes a surprise bill."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi, I'd like to add a [driver / vehicle / household member] to policy [number], effective [date]. Could you walk me through what you need and quote the premium change before binding anything?",
38
+ "ask_premium_impact": "Before we bind this — what does the total new policy premium look like, and what's the pro-rated amount due for the remainder of the term? Could you break out which portion is the new driver/vehicle and which is any re-rate of the existing coverage?",
39
+ "confirm_effective_date": "I want the change effective [date] — not the call date. Can you confirm that's how it'll bind, and what happens between now and the effective date?",
40
+ "ask_undisclosed_driver_consequences": "Out of curiosity, if a household member or vehicle had been driving the car for some time without being on the policy, how would the carrier treat that? Just want to understand the rules so we're clear going forward.",
41
+ "ask_lienholder": "The new vehicle is financed through [lender]. Could you add [lender] as loss payee/lienholder, and what's the form they need for proof of insurance?",
42
+ "ask_garaging": "The vehicle's primary garaging address is [address] — that's where it sits overnight most nights. Please make sure that's reflected on the endorsement, not just the named-insured's address.",
43
+ "ask_discount_eligibility": "Does adding this driver/vehicle unlock or change any discounts — multi-vehicle, multi-policy, good student, defensive driver, telematics?",
44
+ "request_written_quote": "Could you email or text me the endorsement quote and the new declarations page before we bind it? I'd like to review the numbers before committing.",
45
+ "graceful_close": "Thanks. To confirm: endorsement effective [date], new total premium [amount], pro-rated additional charge [amount], lienholder [added/N-A], declarations page emailed by [date]. We haven't bound yet — I'll confirm after I see the quote."
46
+ },
47
+ "tactics": [
48
+ {
49
+ "name": "Ask for the premium impact BEFORE binding",
50
+ "when": "Mid-call.",
51
+ "script": "Use the `ask_premium_impact` phrase. Reps often bind first and quote later. That denies the user the option to shop. Quote-then-bind is the right order.",
52
+ "priority": 1
53
+ },
54
+ {
55
+ "name": "Disclose accurately, even when the rate stings",
56
+ "when": "Adding a household driver.",
57
+ "script": "Be honest about driving frequency, license status, and any tickets/accidents. The alternative — undisclosed driver — voids coverage when it matters most.",
58
+ "priority": 2
59
+ },
60
+ {
61
+ "name": "Lock the effective date",
62
+ "when": "Confirming the change.",
63
+ "script": "Use the `confirm_effective_date` phrase. If the new driver needs coverage today, effective date is today. If they don't start driving until next month, effective date is next month — don't pay sooner than needed.",
64
+ "priority": 3
65
+ },
66
+ {
67
+ "name": "Add the lienholder correctly",
68
+ "when": "Adding a financed vehicle.",
69
+ "script": "Use the `ask_lienholder` phrase. Lender's name, address, loan number. Force-placed insurance (when the lender adds its own coverage because yours is missing) costs 3-5× the standard rate.",
70
+ "priority": 4
71
+ },
72
+ {
73
+ "name": "Set garaging accurately",
74
+ "when": "Adding a vehicle.",
75
+ "script": "Use the `ask_garaging` phrase. ZIP code drives rate. Misrepresenting garaging is fraud; under-representing it (claiming a low-cost ZIP for a vehicle that lives in a high-cost ZIP) is the most common version.",
76
+ "priority": 5
77
+ },
78
+ {
79
+ "name": "Surface discounts",
80
+ "when": "Late in the call.",
81
+ "script": "Use the `ask_discount_eligibility` phrase. Multi-vehicle, multi-policy, good student, telematics, defensive driver course, paid-in-full — these stack and can offset much of the increase.",
82
+ "priority": 6
83
+ },
84
+ {
85
+ "name": "Get the quote in writing",
86
+ "when": "Before binding.",
87
+ "script": "Use the `request_written_quote` phrase. Don't authorize binding until the declarations page (or at minimum a written quote with the new total premium) is in hand.",
88
+ "priority": 7
89
+ }
90
+ ],
91
+ "boundaries": [
92
+ "Do NOT misrepresent driving frequency, license status, garaging address, or household composition.",
93
+ "Do NOT omit a household member who drives the vehicle — leads to claim denial under undisclosed-driver exclusions.",
94
+ "Do NOT bind without seeing the quote in writing unless coverage is needed RIGHT NOW (then bind and adjust within the carrier's free-look window).",
95
+ "Do NOT speculate about a new driver's history if records aren't clear — pull the MVR (motor vehicle record) before the call if possible.",
96
+ "Do NOT accept a 'we'll figure out the discounts later' — surface them upfront."
97
+ ],
98
+ "success_signals": [
99
+ "Quote provided BEFORE binding.",
100
+ "Effective date matches the user's preference.",
101
+ "Lienholder properly added (if applicable).",
102
+ "Garaging address correctly recorded.",
103
+ "Eligible discounts surfaced and applied.",
104
+ "Updated declarations page committed for delivery."
105
+ ],
106
+ "failure_signals": [
107
+ "Rep insists on binding before quoting.",
108
+ "Rep refuses to break out the premium components.",
109
+ "Rep refuses to backdate or future-date the effective date.",
110
+ "Rep cannot add the lienholder.",
111
+ "Rep proposes a 'driver exclusion' as an alternative — read carefully, this denies coverage for that driver entirely."
112
+ ],
113
+ "exit_strategy": {
114
+ "on_success": "Read back: effective date, new total premium, pro-rated charge, lienholder status, garaging address, declarations-page ETA. Confirm not-yet-bound if reviewing. Email the user a recap immediately.",
115
+ "on_failure": "Don't bind. Route to `ask_operator` with options: (1) get a competing quote from another carrier before binding, (2) call back at a different time / different rep, (3) escalate to a supervisor or use an independent agent.",
116
+ "follow_ups": [
117
+ "Save the updated declarations page when it arrives.",
118
+ "Send a recap email with the new premium and effective date.",
119
+ "If a new vehicle, send proof-of-insurance to the lienholder.",
120
+ "Calendar the next renewal date — rate changes mid-term often re-price at full renewal."
121
+ ]
122
+ },
123
+ "required_user_info": [
124
+ "Policy number and named-insured info",
125
+ "Driver: full legal name, DOB, DL number + state, license history",
126
+ "Vehicle: VIN, year/make/model, financed/leased/owned, lienholder info",
127
+ "Garaging address",
128
+ "Desired effective date",
129
+ "Whether operator authorises binding on this call vs review-then-bind"
130
+ ],
131
+ "contributed_by": "insurance-claims agent (v0.9.87 community drop)",
132
+ "updated_at": "2026-05-20T06:09:47Z"
133
+ }
@@ -0,0 +1,129 @@
1
+ {
2
+ "id": "admissions-waitlist-followup",
3
+ "name": "Admissions Decision Follow-Up — Waitlist Nudge, Deposit Extension",
4
+ "version": "1.0.0",
5
+ "category": "other",
6
+ "tags": [
7
+ "admissions",
8
+ "waitlist",
9
+ "deferred",
10
+ "deposit",
11
+ "yield",
12
+ "phone-call",
13
+ "education"
14
+ ],
15
+ "description": "Call an undergraduate or graduate admissions office to (a) reaffirm interest while on a waitlist, (b) request a deposit-deadline extension while a financial-aid appeal or competing decision is pending, (c) check status of a deferred application, or (d) get specific reviewer feedback to inform a re-application.",
16
+ "disclaimer": "Admissions officers are people with limited discretion within institutional policy. Some asks (deposit extension, waitlist nudge) are routine; others (admit-now decisions, fee waivers post-deadline, discretionary reconsideration) are rare. Match the ask to the office's actual authority.",
17
+ "context": {
18
+ "when_to_use": "User is (a) on a waitlist and the school has either invited Letters of Continued Interest or hasn't moved in 2+ weeks past historical waitlist activation, (b) staring at a deposit deadline that conflicts with another decision still pending, (c) deferred from Early Action / Early Decision and now in the regular-decision pool, or (d) denied and wants to understand why before re-applying.",
19
+ "preconditions": [
20
+ "User knows their applicant ID and the exact decision they received.",
21
+ "User has reviewed the school's published waitlist / yield communications policy — some schools explicitly invite LOCIs, others explicitly say no further contact.",
22
+ "User has something new to say. A waitlist nudge with no update lands as noise.",
23
+ "User has competing offers and deadlines mapped, so the extension ask is specific."
24
+ ],
25
+ "estimated_call_duration_minutes": 15
26
+ },
27
+ "principles": [
28
+ "Admissions officers remember enthusiasm + specificity. They forget generic 'I really want to attend' emails the second they close the tab.",
29
+ "The right cadence is one substantive update — not weekly check-ins. Two LOCIs at most: one after waitlist notification, one if you have a real new accomplishment.",
30
+ "Deposit extensions for a pending aid appeal are routine. Deposit extensions to compare other schools are routine but should be requested politely. Deposit extensions because you 'haven't decided' are softer asks.",
31
+ "If you say 'I will absolutely attend if admitted from the waitlist', schools take that VERY seriously and may hold you to it. Don't say it unless it's true.",
32
+ "Reviewer feedback after a denial is sometimes available (especially at law / business / graduate level) and is gold for the next application. Always ask.",
33
+ "Phone is sometimes better than email — your name gets associated with a person. But never call your way past a 'no further contact' policy."
34
+ ],
35
+ "phrases": {
36
+ "opener_waitlist": "Hi, I'm a waitlisted applicant — applicant ID [ID]. I wanted to confirm you have my updated transcript / new accomplishments on file, and to reaffirm that [school] is my top choice. Could you let me know if there's a way to submit a Letter of Continued Interest or new materials?",
37
+ "opener_deposit_extension": "Hi, I have a deposit deadline of [date]. I have a financial-aid appeal pending [or: a decision pending from another school I need to compare]. Could I request an extension of [N] days / weeks?",
38
+ "opener_deferred": "Hi, I was deferred from Early Action / ED. I'd like to check that my file is complete in the regular-decision pool and ask whether you accept updates (mid-year grades, new test scores, new awards).",
39
+ "opener_post_denial": "Hi, I received a denial decision and I respect that. I'd like to ask whether your office offers reviewer feedback or if there's a specific reason that would help me strengthen a reapplication.",
40
+ "reaffirm_top_choice": "I want to be clear: [school] is my first choice, and if I'm admitted from the waitlist I will absolutely deposit and attend. I'm saying that because I know schools want to know yield is real.",
41
+ "what_changed_since": "Since I applied: I [first-author publication / new role / 4.0 last semester / state championship / new portfolio piece]. I think this strengthens my fit because [one sentence].",
42
+ "ask_for_admissions_officer": "Could I be connected with my regional admissions officer or the reader assigned to my file? I'd like 60 seconds of their time, not the front desk's.",
43
+ "ask_about_LOCI_policy": "What's your office's policy on Letters of Continued Interest? Is there a preferred format, length, or recipient — and is there a 'no further contact' line I should respect?",
44
+ "graceful_close_success": "Thank you. To confirm: [extension granted to / LOCI accepted / reviewer feedback scheduled]. May I have your name and email for the record? And is there anything else that would help my file?"
45
+ },
46
+ "tactics": [
47
+ {
48
+ "name": "Lead with one substantive update, not warm air",
49
+ "when": "Waitlist LOCI.",
50
+ "script": "Use `what_changed_since`. The update should be specific (grades, role, publication, award, project). 'Still very interested' is not an update. If there's no new fact, skip the call.",
51
+ "priority": 1
52
+ },
53
+ {
54
+ "name": "Make the deposit-extension ask concrete",
55
+ "when": "Requesting more time.",
56
+ "script": "Use `opener_deposit_extension`. State exact dates, exact reason (aid appeal, competing offer), and exact requested extension. Vague 'a little more time' lands as indecision.",
57
+ "priority": 2
58
+ },
59
+ {
60
+ "name": "Reaffirm top choice ONLY if true",
61
+ "when": "Waitlist conversation.",
62
+ "script": "Use `reaffirm_top_choice`. Schools' yield models are sensitive to this — a clean reaffirmation moves applicants up. But schools also remember; if you take it back, your name is mud at that office and in the region.",
63
+ "priority": 3
64
+ },
65
+ {
66
+ "name": "Ask for the regional admissions officer",
67
+ "when": "Front desk is friendly but not the reader.",
68
+ "script": "Use `ask_for_admissions_officer`. Decisions are made by readers and committees, not by phone-line staff. A 60-second voice memo to a regional officer is more valuable than a 5-minute call with intake.",
69
+ "priority": 4
70
+ },
71
+ {
72
+ "name": "Ask about LOCI policy explicitly",
73
+ "when": "Before sending any LOCI.",
74
+ "script": "Use `ask_about_LOCI_policy`. Some schools (e.g. parts of the Ivy+ set) explicitly invite LOCIs; others mark applications as over-contact if you flood them. Get the rule before you act.",
75
+ "priority": 5
76
+ },
77
+ {
78
+ "name": "Request reviewer feedback after denial",
79
+ "when": "Post-denial reapplication is being considered.",
80
+ "script": "Use `opener_post_denial`. Not all schools offer feedback, but graduate programs (especially MBA, JD, MD, MFA, PhD) sometimes do. Tone: gracious, not aggrieved. The same officer may read the next application."
81
+ },
82
+ {
83
+ "name": "Frame an extension request around what the school cares about",
84
+ "when": "Pushing for more time.",
85
+ "script": "Schools care about yield certainty. Frame the extension as 'I want to commit cleanly with my family confident in the finances' rather than 'I'm shopping.' Same ask, very different reception."
86
+ }
87
+ ],
88
+ "boundaries": [
89
+ "Do NOT promise to attend if admitted unless you mean it — schools track and remember.",
90
+ "Do NOT flood the office with calls/emails. One substantive contact beats five generic ones.",
91
+ "Do NOT bypass a stated 'no further contact' policy — it's a screen, and contact past it counts against the applicant.",
92
+ "Do NOT have a parent call instead of the student for an adult applicant — admissions reads this as a maturity signal.",
93
+ "Do NOT fabricate new accomplishments for an LOCI. They can be verified and the consequence is rescission."
94
+ ],
95
+ "success_signals": [
96
+ "Admissions officer named and direct email obtained.",
97
+ "Deposit extension granted in writing.",
98
+ "LOCI accepted and routed to the reader.",
99
+ "Mid-year report / new transcript confirmed received.",
100
+ "Reviewer feedback session scheduled or written feedback offered."
101
+ ],
102
+ "failure_signals": [
103
+ "Office cites 'no further contact' policy explicitly — stop.",
104
+ "Waitlist is closed and the school has moved to summer melt only.",
105
+ "Deposit extension denied and no alternative offered.",
106
+ "Officer is non-committal in a way that signals over-contact (vague answers, deflection to website).",
107
+ "Reapplication isn't allowed for one year and timing doesn't work."
108
+ ],
109
+ "exit_strategy": {
110
+ "on_success": "Confirm what was agreed (extension date, LOCI submission, feedback meeting). Get name + email. Send a brief thank-you email within 24h reiterating the next concrete step.",
111
+ "on_failure": "If denied or stalled, note the office's exact words. Plan the alternative: another waitlist, a gap year + reapplication, transfer pathway after a year at another school, or a different program.",
112
+ "follow_ups": [
113
+ "Send the LOCI within 24h of the call if invited.",
114
+ "Email operator the extension date and confirmation source.",
115
+ "Calendar 2 weeks for follow-up if expected decision hasn't arrived.",
116
+ "If denied: archive the feedback for the next cycle."
117
+ ]
118
+ },
119
+ "required_user_info": [
120
+ "Applicant ID + program",
121
+ "Current decision status (waitlisted, deferred, admitted, denied)",
122
+ "Deposit deadline (if applicable)",
123
+ "Competing offers + deadlines (if relevant)",
124
+ "Specific new updates since application",
125
+ "School's published LOCI / further-contact policy"
126
+ ],
127
+ "contributed_by": "education-admin agent (v0.9.87 community drop)",
128
+ "updated_at": "2026-05-20T06:09:47Z"
129
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "id": "anchor-and-counter-anchor",
3
+ "name": "Anchoring and Counter-Anchoring on Price",
4
+ "version": "1.0.1",
5
+ "category": "negotiation",
6
+ "tags": ["anchoring", "price", "first-offer", "range-vs-point", "phone-call", "real-time"],
7
+ "description": "Decide whether to make the first offer, how aggressively to anchor when you do, and how to neutralize or re-anchor when the counterparty anchors first. Whoever shapes the range usually shapes the outcome.",
8
+ "disclaimer": "Anchors that are wildly unsupported damage your credibility and get you dismissed. Aggressive anchoring requires defensible reasoning — even thin reasoning. 'Because I want to pay less' is not an anchor; 'because three competitors quoted in this range' is.",
9
+ "context": {
10
+ "when_to_use": "Any negotiation where price (or any numeric term: term length, payment days, headcount, scope) is the central axis. Especially decisive in the first 5 minutes — the first credible number named will pull the final outcome toward it.",
11
+ "preconditions": [
12
+ "You have researched the realistic range of outcomes (market price, competitor offers, prior deals).",
13
+ "You have a target number AND a walk-away number, distinct from each other.",
14
+ "You can deliver a number without verbal hedging ('uhh, maybe…')."
15
+ ],
16
+ "estimated_call_duration_minutes": 25
17
+ },
18
+ "principles": [
19
+ "Whoever speaks the first plausible number sets the gravitational center of the negotiation. Studies show ~50% of variance in final price tracks the opening number.",
20
+ "Implausibly extreme anchors get dismissed — they don't pull the range, they get you laughed out. The sweet spot is 'just past the limit of defensible' with reasoning attached.",
21
+ "Range anchors ($X to $Y) feel more reasonable but the LOW number is what sticks in the counterparty's head. So when you offer a range, make the LOW end your real anchor.",
22
+ "Don't anchor first when you have an information disadvantage. Let them anchor — their number reveals their reference set.",
23
+ "Anchor first when you have a strong information edge (you know the market, they don't know your alternatives, or norms in this domain wildly favor making the first move).",
24
+ "Always attach reasoning to your anchor. Numbers alone are negotiable; numbers + a story are harder to dismiss. 'My budget is $X' beats nothing. 'Three quotes came in at $X' beats that. 'Three quotes came in at $X for these specific reasons…' is the ceiling."
25
+ ],
26
+ "phrases": {
27
+ "decline_to_anchor_first": "I want to make sure I'm framing this fairly — what does a typical engagement look like on your end, pricing-wise?",
28
+ "decline_v2": "Before I give a number, walk me through what someone in my situation usually ends up paying.",
29
+ "deliver_a_hard_anchor": "Based on [research / quotes / market data], I was thinking about [number]. Here's how I got there: [one-sentence reasoning].",
30
+ "deliver_a_range_anchor": "I've been targeting [low] to [low+15%]. The low end is where I'd ideally land — does that work?",
31
+ "react_to_their_anchor_flinch": "[Audible pause]. That's well outside what I was expecting. Help me understand how you got there.",
32
+ "react_to_their_anchor_reframe": "Okay, noted. We've been thinking more in the range of [your counter-anchor], based on [reasoning].",
33
+ "react_to_their_anchor_calibrated": "How did you arrive at that number?",
34
+ "ignore_their_anchor": "Let me set that aside for a moment — can you walk me through what's actually included for that price?",
35
+ "split_signal": "We're closer than I thought. What would need to be true to close the rest of the gap?"
36
+ },
37
+ "tactics": [
38
+ {
39
+ "name": "Decline to anchor first when uninformed",
40
+ "when": "Rep asks for your budget / target / desired price and you don't have strong market intel.",
41
+ "script": "Use `decline_to_anchor_first`. The rep often reveals the typical range, which becomes your reference.",
42
+ "priority": 1
43
+ },
44
+ {
45
+ "name": "Anchor hard with reasoning when informed",
46
+ "when": "You have credible research and the rep has not yet named a number.",
47
+ "script": "Use `deliver_a_hard_anchor`. The reasoning is doing the work — without it, the anchor is just a wish.",
48
+ "priority": 2
49
+ },
50
+ {
51
+ "name": "Use the flinch to puncture their anchor",
52
+ "when": "Rep names a number that is unacceptable.",
53
+ "script": "Use `react_to_their_anchor_flinch`. Audible reaction (a slow 'oof' or 'hmm, that's high') is a real negotiation move, not theater. Then ask `react_to_their_anchor_calibrated`. The rep often softens before you've even countered.",
54
+ "priority": 3
55
+ },
56
+ {
57
+ "name": "Counter-anchor immediately, do not negotiate from their number",
58
+ "when": "Rep names a number you can't accept but it isn't egregious.",
59
+ "script": "Use `react_to_their_anchor_reframe`. The mistake amateurs make is responding 'can you do X% less?' from THEIR number. That accepts their number as the reference. Instead, place YOUR number on the table with reasoning, and let them counter from there.",
60
+ "priority": 4
61
+ },
62
+ {
63
+ "name": "Range with the real anchor as the low",
64
+ "when": "You're slightly uncertain about market price and want to test.",
65
+ "script": "Use `deliver_a_range_anchor` — but make the LOW number your true target. People hear the bottom of ranges as the real ask.",
66
+ "priority": 5
67
+ },
68
+ {
69
+ "name": "Anchor-then-silence",
70
+ "when": "Immediately after delivering your anchor.",
71
+ "script": "Stop talking. Do not add 'but I'm flexible' or 'we could maybe go higher'. Those phrases self-discount before the rep has even responded. Let the anchor sit.",
72
+ "priority": 6
73
+ }
74
+ ],
75
+ "decision_tree": {
76
+ "description": "Anchoring decisions happen in the first 90 seconds and again at every numeric exchange. Match the situation, then execute. Track which side has anchored — that is the most important state variable in a price call.",
77
+ "branches": [
78
+ {
79
+ "if_you_hear": "Rep asks 'what's your budget?' / 'what were you hoping for?' before naming anything.",
80
+ "interpretation": "They want you to anchor first. Decide based on YOUR info edge.",
81
+ "say": "If informed → `deliver_a_hard_anchor`. If uninformed → `decline_to_anchor_first`.",
82
+ "do_not": "Do not blurt a number to be 'helpful'. That number will be the ceiling of your outcome."
83
+ },
84
+ {
85
+ "if_you_hear": "Rep names a number significantly worse than your target (e.g., 30%+ off).",
86
+ "interpretation": "Extreme anchor. Their goal is to drag the midpoint toward them.",
87
+ "say": "`react_to_their_anchor_flinch` (audible reaction + calibrated question). Then `react_to_their_anchor_reframe` with YOUR number.",
88
+ "do_not": "Do not negotiate small percentage moves off their anchor. Get YOUR anchor on the table."
89
+ },
90
+ {
91
+ "if_you_hear": "Rep names a number 5-15% worse than your target.",
92
+ "interpretation": "Plausible opening anchor. Within negotiation range.",
93
+ "say": "`react_to_their_anchor_calibrated` ('How did you arrive at that?'), then counter-anchor with reasoning slightly past YOUR target.",
94
+ "do_not": "Do not accept on round 1. Even if their number is fine, a counter establishes that you negotiate."
95
+ },
96
+ {
97
+ "if_you_hear": "Rep names a number AT or BETTER than your target.",
98
+ "interpretation": "Either they undershot or you over-estimated your target. Check for hidden costs.",
99
+ "say": "`ignore_their_anchor` — pivot to scope/terms/exclusions before celebrating. 'Walk me through what's actually included.'",
100
+ "do_not": "Do not immediately accept. The number is suspicious if it beats your research — there's usually a string attached."
101
+ },
102
+ {
103
+ "if_you_hear": "Rep refuses to name a number ('what are you thinking?').",
104
+ "interpretation": "Information game. They want you to commit first.",
105
+ "say": "If you have research → anchor with `deliver_a_hard_anchor`. If you don't → `decline_v2`, push back: 'I'd rather hear your typical range first.'",
106
+ "do_not": "Do not name a number to break the standoff if you're uninformed. Stalemate is fine."
107
+ },
108
+ {
109
+ "if_you_hear": "Rep names a range (e.g., '$X to $Y').",
110
+ "interpretation": "Their LOW end is their real anchor. Treat the low as the starting point.",
111
+ "say": "Reference the LOW: 'Great, working from [low], what would push us further?'",
112
+ "do_not": "Do not respond by averaging the range. You just gave them half the gap free."
113
+ },
114
+ {
115
+ "if_you_hear": "'That's not how we price' / 'We don't negotiate'.",
116
+ "interpretation": "Wall. Either real (consumer SaaS) or rhetorical (most B2B).",
117
+ "say": "Counter with `react_to_their_anchor_calibrated`: 'How do exceptions usually get made?' Most 'we don't negotiate' shops have an exception SKU.",
118
+ "do_not": "Do not accept the price-is-fixed framing without testing it once."
119
+ },
120
+ {
121
+ "if_you_hear": "Rep moves their number after you anchor (within 60 seconds).",
122
+ "interpretation": "Your anchor was credible enough to move them. They're now bidding against themselves a little. Hold.",
123
+ "say": "Nothing yet. Let them speak more. Or `split_signal` if movement is substantial.",
124
+ "do_not": "Do not reciprocate by moving YOUR number until you've made them earn the next move."
125
+ }
126
+ ]
127
+ },
128
+ "boundaries": [
129
+ "Do NOT anchor with numbers you can't defend. If asked 'how did you get there?', you must have an answer.",
130
+ "Do NOT fabricate competitor quotes to make your anchor stick — verify before mentioning, just like `negotiate-bill-reduction` insists.",
131
+ "Do NOT counter-anchor with insults ('that's insane'). Use the flinch + calibrated question instead.",
132
+ "Do NOT self-discount in the same turn you anchor ('but I'm flexible' — never say that after delivering a number)."
133
+ ],
134
+ "success_signals": [
135
+ "Rep asks 'how did you get to that number?' — they're treating your anchor as real.",
136
+ "Rep responds to your anchor with a counter that is much closer than expected.",
137
+ "Rep silently noted your reasoning and incorporated it into their next offer.",
138
+ "After flinch, rep softens their number unprompted.",
139
+ "Rep stops citing their original number and references yours as the working baseline."
140
+ ],
141
+ "failure_signals": [
142
+ "Rep laughs / dismisses your anchor as 'not in the universe'.",
143
+ "Rep ends the call after your anchor — you went too aggressive without reasoning.",
144
+ "Rep counters with the SAME number you anchored against — anchor was non-credible.",
145
+ "You find yourself negotiating in percentages off THEIR number, not toward yours — you lost the anchor war; reset by re-anchoring with new reasoning."
146
+ ],
147
+ "exit_strategy": {
148
+ "on_success": "Lock in the agreed number with `commitment_check` from `02-calibrated-questions`. Confirm in writing.",
149
+ "on_failure": "If anchors are 40%+ apart and 3 exchanges produced no movement, suspect mismatched reference sets. Pivot to multi-issue trading (`08-multi-issue-tradeoffs`) — the gap may close across dimensions.",
150
+ "follow_ups": [
151
+ "Record the rep's anchor + reasoning for next time.",
152
+ "Compare achieved price to your anchor and theirs — refines future calibration."
153
+ ]
154
+ },
155
+ "required_user_info": [
156
+ "Researched market range (3+ data points).",
157
+ "User's target number AND walk-away number.",
158
+ "Whether competitor offers the user mentions are real or estimated."
159
+ ],
160
+ "contributed_by": "negotiation-master agent (v0.9.87 community drop)"
161
+ }