@agenticmail/core 0.9.32 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/skills/built-in/accommodation-intake.json +132 -0
- package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
- package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
- package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
- package/dist/skills/built-in/anti-social-engineering.json +153 -0
- package/dist/skills/built-in/anything-else-sweep.json +120 -0
- package/dist/skills/built-in/apologise-correctly.json +126 -0
- package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
- package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
- package/dist/skills/built-in/bant-discovery-call.json +125 -0
- package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
- package/dist/skills/built-in/bookmark-close.json +113 -0
- package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
- package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
- package/dist/skills/built-in/calibrated-questions.json +155 -0
- package/dist/skills/built-in/call-911-fire.json +118 -0
- package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
- package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
- package/dist/skills/built-in/call-988-crisis-line.json +106 -0
- package/dist/skills/built-in/call-poison-control.json +115 -0
- package/dist/skills/built-in/call-police-non-emergency.json +114 -0
- package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
- package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
- package/dist/skills/built-in/cancel-policy-clean.json +130 -0
- package/dist/skills/built-in/capture-rep-identity.json +113 -0
- package/dist/skills/built-in/childcare-provider-intake.json +157 -0
- package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
- package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
- package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
- package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
- package/dist/skills/built-in/contractor-estimate-request.json +142 -0
- package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
- package/dist/skills/built-in/cpa-intake-call.json +134 -0
- package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
- package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
- package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
- package/dist/skills/built-in/deliver-difficult-news.json +122 -0
- package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
- package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
- package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
- package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
- package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
- package/dist/skills/built-in/dispute-denied-claim.json +143 -0
- package/dist/skills/built-in/dispute-security-deposit.json +130 -0
- package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
- package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
- package/dist/skills/built-in/document-call-promises.json +145 -0
- package/dist/skills/built-in/early-lease-termination.json +126 -0
- package/dist/skills/built-in/elite-line-escalation.json +107 -0
- package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
- package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
- package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
- package/dist/skills/built-in/file-habitability-complaint.json +115 -0
- package/dist/skills/built-in/financial-aid-appeal.json +128 -0
- package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
- package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
- package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
- package/dist/skills/built-in/handle-callback-stall.json +120 -0
- package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
- package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
- package/dist/skills/built-in/handle-time-pressure.json +159 -0
- package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
- package/dist/skills/built-in/hoa-dispute.json +123 -0
- package/dist/skills/built-in/hold-time-strategy.json +137 -0
- package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
- package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
- package/dist/skills/built-in/humour-when-it-lands.json +127 -0
- package/dist/skills/built-in/i20-visa-dso.json +134 -0
- package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
- package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
- package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
- package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
- package/dist/skills/built-in/late-add-petition.json +128 -0
- package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
- package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
- package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
- package/dist/skills/built-in/medical-records-transfer.json +138 -0
- package/dist/skills/built-in/medical-withdrawal.json +131 -0
- package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
- package/dist/skills/built-in/mirror-technique.json +145 -0
- package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
- package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
- package/dist/skills/built-in/move-out-walkthrough.json +114 -0
- package/dist/skills/built-in/multi-channel-escalation.json +141 -0
- package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
- package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
- package/dist/skills/built-in/no-as-opening.json +154 -0
- package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
- package/dist/skills/built-in/outage-credit-applied.json +127 -0
- package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
- package/dist/skills/built-in/pediatric-school-forms.json +141 -0
- package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
- package/dist/skills/built-in/pharmacy-callback.json +134 -0
- package/dist/skills/built-in/pivot-mid-call.json +141 -0
- package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
- package/dist/skills/built-in/prescription-refill-followup.json +132 -0
- package/dist/skills/built-in/push-past-invented-policy.json +159 -0
- package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
- package/dist/skills/built-in/reach-executive-office.json +137 -0
- package/dist/skills/built-in/read-vocal-cues.json +139 -0
- package/dist/skills/built-in/read-vocal-tone.json +159 -0
- package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
- package/dist/skills/built-in/receive-difficult-news.json +115 -0
- package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
- package/dist/skills/built-in/recover-summary-refusal.json +121 -0
- package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
- package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
- package/dist/skills/built-in/referral-prior-authorization.json +130 -0
- package/dist/skills/built-in/refuse-the-split.json +142 -0
- package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
- package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
- package/dist/skills/built-in/rental-scam-report.json +125 -0
- package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
- package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
- package/dist/skills/built-in/report-elder-or-child-abuse.json +117 -0
- package/dist/skills/built-in/report-fbi-tip.json +109 -0
- package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
- package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
- package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
- package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
- package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
- package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
- package/dist/skills/built-in/request-welfare-check.json +127 -0
- package/dist/skills/built-in/request-written-confirmation.json +113 -0
- package/dist/skills/built-in/reschedule-appointment.json +121 -0
- package/dist/skills/built-in/reset-by-callback.json +143 -0
- package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
- package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
- package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
- package/dist/skills/built-in/roommate-replacement.json +121 -0
- package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
- package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
- package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
- package/dist/skills/built-in/social-security-replacement-card.json +122 -0
- package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
- package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
- package/dist/skills/built-in/stop-recurring-ach.json +127 -0
- package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
- package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
- package/dist/skills/built-in/therapist-intake-call.json +133 -0
- package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
- package/dist/skills/built-in/transcript-request.json +128 -0
- package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
- package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
- package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
- package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
- package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
- package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
- package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
- package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
- package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
- package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
- package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
- package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
- package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
- package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
- package/dist/skills/built-in/walkaway-threats.json +159 -0
- package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
- package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
- package/dist/skills/built-in/wire-funds-safely.json +129 -0
- package/package.json +1 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "multi-issue-tradeoffs",
|
|
3
|
+
"name": "Multi-Issue Trading: Expanding the Pie Beyond Price",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "negotiation",
|
|
6
|
+
"tags": ["integrative", "logrolling", "trades", "issue-mapping", "phone-call"],
|
|
7
|
+
"description": "Most negotiations get stuck because they're being played on a single dimension (usually price). The best deals are found by introducing additional dimensions and trading what's cheap for you for what's valuable to them — and vice versa.",
|
|
8
|
+
"disclaimer": "Multi-issue trading requires that you actually know which dimensions you can offer. Trading something you don't have authority over is a fast path to a broken deal. Verify authority with the user via `ask_operator` before offering term, scope, or contractual concessions.",
|
|
9
|
+
"context": {
|
|
10
|
+
"when_to_use": "Whenever a price-only negotiation is stuck OR when the deal is structurally complex (B2B, real estate, employment, contractor agreements, multi-party). Less applicable to one-time consumer transactions with a true fixed SKU.",
|
|
11
|
+
"preconditions": [
|
|
12
|
+
"You have mapped the full set of dimensions in play (at minimum: price, term, payment timing, scope, support, exclusivity, references).",
|
|
13
|
+
"You know which of those dimensions YOU can offer.",
|
|
14
|
+
"You have a hypothesis about which dimensions matter MOST to the counterparty (asymmetric value)."
|
|
15
|
+
],
|
|
16
|
+
"estimated_call_duration_minutes": 35
|
|
17
|
+
},
|
|
18
|
+
"principles": [
|
|
19
|
+
"Single-issue negotiation is distributive (zero-sum); multi-issue is integrative (positive-sum). Always try to find a second dimension before settling on the first.",
|
|
20
|
+
"Trade what's CHEAP for you for what's VALUABLE to them. That's where the pie grows.",
|
|
21
|
+
"Bundle concessions, never give one at a time. 'I'll do X, Y, and Z if you do A, B, and C' is more powerful than three serial 'I'll do X if you do A' exchanges — and it locks the deal.",
|
|
22
|
+
"Discover dimensions by asking. 'What else matters to you besides price?' is one of the highest-ROI questions in any negotiation. Most counterparties answer truthfully.",
|
|
23
|
+
"Never concede without a reciprocal trade. Free concessions teach the counterparty that you'll give more for free.",
|
|
24
|
+
"Asymmetric value is the source of all gains. If a 12-month term costs the rep nothing but is worth $X to me — that's pure surplus to capture."
|
|
25
|
+
],
|
|
26
|
+
"phrases": {
|
|
27
|
+
"discover_dimensions": "What else matters to you on a deal like this besides price?",
|
|
28
|
+
"introduce_term": "What if I committed to [12 / 24] months — does that move the price?",
|
|
29
|
+
"introduce_payment": "What if I paid annually upfront / net-15 / via ACH — what's that worth on price?",
|
|
30
|
+
"introduce_scope": "What if we trimmed [feature/SKU] — does that change the math?",
|
|
31
|
+
"introduce_references": "I'd be willing to be a public reference / case study / testimonial — is that worth anything to you?",
|
|
32
|
+
"introduce_exclusivity": "What if I committed to using only your service for [category] — does that unlock anything?",
|
|
33
|
+
"introduce_timing": "What if I closed by end of month vs. next quarter — does that help on price?",
|
|
34
|
+
"bundle_proposal": "Here's where I am: if we do [A, B, C], I can commit to [X, Y, Z]. Is that a package you can work with?",
|
|
35
|
+
"trade_signal": "I can move on [X] if you can move on [Y].",
|
|
36
|
+
"no_free_concessions": "I can do that — what do you have for me in exchange?"
|
|
37
|
+
},
|
|
38
|
+
"tactics": [
|
|
39
|
+
{
|
|
40
|
+
"name": "Map dimensions before naming numbers",
|
|
41
|
+
"when": "Beginning of any structurally complex negotiation.",
|
|
42
|
+
"script": "Open with `discover_dimensions`. Build a list of what matters to the rep. This frames the rest of the call as a multi-axis search.",
|
|
43
|
+
"priority": 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "Introduce a new dimension when stuck on price",
|
|
47
|
+
"when": "Two or more price exchanges produced no movement.",
|
|
48
|
+
"script": "Use one of the introduce-X phrases. The dimension you pick should be (a) cheap for you, (b) plausibly valuable for them. Term and payment timing are the most universally tradable.",
|
|
49
|
+
"priority": 2
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Bundle, never serialize",
|
|
53
|
+
"when": "You have 2+ concessions on the table.",
|
|
54
|
+
"script": "Wrap them into one package with `bundle_proposal`. Counterparty must accept or counter the WHOLE bundle, not pick the pieces they like and reject the rest.",
|
|
55
|
+
"priority": 3
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Refuse free concessions",
|
|
59
|
+
"when": "Counterparty asks for a concession without offering one.",
|
|
60
|
+
"script": "Use `no_free_concessions`: 'I can do that — what do you have for me in exchange?' Said warmly, this trains them to trade.",
|
|
61
|
+
"priority": 4
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Trade across asymmetric value",
|
|
65
|
+
"when": "You've discovered something that's near-free for you but valuable to them (e.g., a public reference, a longer term).",
|
|
66
|
+
"script": "Trade it hard. 'I'll be a reference for $X off the price' — but only commit on dimensions the user has authorized.",
|
|
67
|
+
"priority": 5
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Reserve a 'sweetener' for the close",
|
|
71
|
+
"when": "Deal is 90% there but needs a final nudge.",
|
|
72
|
+
"script": "Hold one small concession in reserve from the beginning (e.g., 'I can also throw in [Z]' at the end). Sweeteners at the close convert 'almost-yes' into 'yes'."
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"decision_tree": {
|
|
76
|
+
"description": "Multi-issue trading happens at every junction of the negotiation. When you sense a stall, run this tree to find the next dimension.",
|
|
77
|
+
"branches": [
|
|
78
|
+
{
|
|
79
|
+
"if_you_hear": "'The price is the price' / 'we don't have flexibility on price'.",
|
|
80
|
+
"interpretation": "Counterparty is signaling price is locked. Other dimensions are likely OPEN.",
|
|
81
|
+
"say": "Introduce a new dimension: `introduce_term` or `introduce_payment` or `introduce_scope`.",
|
|
82
|
+
"do_not": "Do not press on price. Pivot dimensions."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"if_you_hear": "'What else are you looking for besides price?' (they're asking YOU about dimensions).",
|
|
86
|
+
"interpretation": "Good — they're already in multi-issue mode.",
|
|
87
|
+
"say": "Name 2-3 dimensions where you'd value movement. Be specific.",
|
|
88
|
+
"do_not": "Do not say 'just a better price'. That collapses you back to single-issue."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"if_you_hear": "Counterparty offers a concession unprompted.",
|
|
92
|
+
"interpretation": "They want to keep the deal alive. Don't accept-and-pocket — trade.",
|
|
93
|
+
"say": "Accept warmly AND counter-trade: 'Great — and if I add [Y] to my side, can we also do [Z]?'",
|
|
94
|
+
"do_not": "Do not silently bank the concession. Use its momentum."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"if_you_hear": "Counterparty asks for a concession from you without offering one.",
|
|
98
|
+
"interpretation": "Testing whether you'll concede for free.",
|
|
99
|
+
"say": "`no_free_concessions`: 'I can do that — what do you have for me?'",
|
|
100
|
+
"do_not": "Do not concede unilaterally even on small things. Pattern matters more than individual move."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"if_you_hear": "Counterparty enthusiastic about ONE specific term (e.g., longer commitment).",
|
|
104
|
+
"interpretation": "You've found high-asymmetric-value dimension. Press it.",
|
|
105
|
+
"say": "Test the value: 'How much would a 24-month commitment unlock on price?' Force them to put a number on it.",
|
|
106
|
+
"do_not": "Do not give the term for free — extract the price move first."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"if_you_hear": "Counterparty offers bundle ('we can do A and B if you do X and Y').",
|
|
110
|
+
"interpretation": "They're playing the right game. Engage on bundle terms.",
|
|
111
|
+
"say": "Counter-bundle. Don't accept their bundle as-is — modify two pieces and re-offer.",
|
|
112
|
+
"do_not": "Do not pick at one part of their bundle while ignoring the rest. Engage with the whole."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"if_you_hear": "After 2 rounds of multi-issue trading, both sides circling without close.",
|
|
116
|
+
"interpretation": "Either the gap is real OR there's an undisclosed constraint.",
|
|
117
|
+
"say": "Surface the constraint: 'What's the one thing that, if we solved it, would let you close today?'",
|
|
118
|
+
"do_not": "Do not keep cycling dimensions. The blocker is now meta, not dimensional."
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"if_you_hear": "Counterparty says 'I have to ask my manager about X' on a specific dimension.",
|
|
122
|
+
"interpretation": "That dimension is the one with the most authority headroom. Manager has more latitude there than on price.",
|
|
123
|
+
"say": "Press on that dimension: 'Great — while you check, can we also explore if there's more room on [Y]?' Manager-call is your moment.",
|
|
124
|
+
"do_not": "Do not focus only on price during the manager pause. The whole bundle gets reviewed."
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"boundaries": [
|
|
129
|
+
"Do NOT trade dimensions the user has not authorized (term, exclusivity, scope changes).",
|
|
130
|
+
"Do NOT bundle in items the user has marked non-negotiable.",
|
|
131
|
+
"Do NOT invent dimensions to bluff with — if you mention 'autopay' you must be willing to do it.",
|
|
132
|
+
"Do NOT continue introducing dimensions past the user's complexity tolerance — some users want a simple deal, even if suboptimal."
|
|
133
|
+
],
|
|
134
|
+
"success_signals": [
|
|
135
|
+
"Counterparty asks YOU questions about your priorities — multi-issue dialogue is active.",
|
|
136
|
+
"Counterparty proposes asymmetric trades (their cheap-thing for your valuable-thing or vice versa).",
|
|
137
|
+
"Final deal includes 2+ non-price terms that wouldn't have been in a single-issue close.",
|
|
138
|
+
"Counterparty thanks you for being 'creative' or 'flexible' — both code for 'you played the right game'."
|
|
139
|
+
],
|
|
140
|
+
"failure_signals": [
|
|
141
|
+
"Counterparty firmly refuses to discuss any non-price dimension after 2 attempts.",
|
|
142
|
+
"Bundle proposed by you gets dismantled piece-by-piece — counterparty is cherry-picking.",
|
|
143
|
+
"You've introduced 4+ dimensions and the deal hasn't moved — too many open variables; consolidate."
|
|
144
|
+
],
|
|
145
|
+
"exit_strategy": {
|
|
146
|
+
"on_success": "Confirm the FULL bundle in writing — every dimension, not just price. Use `commitment_check` and make sure each item has an owner and timing.",
|
|
147
|
+
"on_failure": "If multi-issue trading doesn't move the deal, the constraint is probably authority or fixed-pricing. Escalate or accept the single-issue outcome and consider walking (see `10-walkaway-threats`)."
|
|
148
|
+
},
|
|
149
|
+
"required_user_info": [
|
|
150
|
+
"Full list of dimensions the user can trade (with authority levels for each).",
|
|
151
|
+
"User's ranking of which dimensions matter to THEM (so concessions are made on lower-ranked dimensions).",
|
|
152
|
+
"Any hypothesis about what matters most to the counterparty."
|
|
153
|
+
],
|
|
154
|
+
"contributed_by": "negotiation-master agent (v0.9.87 community drop)"
|
|
155
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "negotiate-rent-renewal",
|
|
3
|
+
"name": "Negotiate Rent at Lease Renewal",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"category": "real-estate",
|
|
6
|
+
"tags": [
|
|
7
|
+
"rent",
|
|
8
|
+
"renewal",
|
|
9
|
+
"negotiation",
|
|
10
|
+
"landlord",
|
|
11
|
+
"phone-call",
|
|
12
|
+
"comparables",
|
|
13
|
+
"housing-tenancy"
|
|
14
|
+
],
|
|
15
|
+
"description": "Call the landlord or property manager to negotiate a renewal offer down (or hold it flat) using market comparables and tenancy track record — without threatening to move out unless the user is actually willing to.",
|
|
16
|
+
"disclaimer": "Not legal advice. Habitability + early-termination skills are scripted to PRESERVE legal posture (request things in writing, refuse verbal-only assurances) — but the operator must consult a tenant attorney for actual rights determination.",
|
|
17
|
+
"context": {
|
|
18
|
+
"when_to_use": "User has received a renewal offer (or knows their lease ends soon) and the proposed rent is above market or above what they want to pay. Most effective 45–75 days before lease expiry, when the landlord is exposed to vacancy risk but not yet panicked.",
|
|
19
|
+
"preconditions": [
|
|
20
|
+
"User has the current rent and the proposed new rent in writing.",
|
|
21
|
+
"User has 2–4 verified comparables (same neighborhood, similar bed/bath, listed in the last 30 days).",
|
|
22
|
+
"User knows their walk-away number — the rent at which they would actually move.",
|
|
23
|
+
"User has a clean payment record (no late fees in the past 12 months) OR knows where the record stands."
|
|
24
|
+
],
|
|
25
|
+
"estimated_call_duration_minutes": 15
|
|
26
|
+
},
|
|
27
|
+
"principles": [
|
|
28
|
+
"Vacancy is expensive for landlords — turnover cost (cleaning, paint, listing, 1–2 months empty) often exceeds the increase they're asking for. Use that, gently.",
|
|
29
|
+
"Lead with track record, not threats. 'I've paid on time for 24 months and I want to stay' is leverage; 'I'll leave if you don't drop it' is a bluff unless the user means it.",
|
|
30
|
+
"Specific comparables beat vague claims. 'A unit at [address] just listed at $X' lands. 'I've seen cheaper places' does not.",
|
|
31
|
+
"Anchor below your target. If you want $2,300, ask for $2,200. The landlord will counter up; meet in the middle near your real number.",
|
|
32
|
+
"Get the agreed rent and any concessions in writing (renewal addendum or email) BEFORE signing — verbal promises don't survive a building-management changeover."
|
|
33
|
+
],
|
|
34
|
+
"phrases": {
|
|
35
|
+
"opener": "Hi, I got the renewal letter and wanted to talk through it before signing. I've been here [X years/months], paid on time every cycle, and I want to stay — but the new number is higher than what I'm seeing in the neighborhood right now. Can we work something out?",
|
|
36
|
+
"present_comps": "I pulled a few comparable listings nearby — there's a [bed/bath] at [address] listed for [amount], and another at [address] for [amount]. I think a fair renewal for me would be [target amount].",
|
|
37
|
+
"value_to_landlord": "If I renew, you avoid turnover — no painting, no listing fees, no vacancy month. That's real money. I'm asking you to share some of that savings with me.",
|
|
38
|
+
"stall_thinking": "Let me think about that for a moment.",
|
|
39
|
+
"counter_to_split": "Okay — could we meet in the middle at [midpoint]? Same lease length, same on-time payments.",
|
|
40
|
+
"ask_for_concessions": "If the rent number is fixed, are there other things you could include — a month of parking, a pet-fee waiver, carpet cleaning, or a shorter renewal term so we can revisit?",
|
|
41
|
+
"ask_for_writing": "Great, can you send me the updated renewal addendum by email today so I can sign it this week?",
|
|
42
|
+
"graceful_close_walk": "Thanks for talking it through. I need to think about this with my household before I commit. Can you hold the offer open until [date]?"
|
|
43
|
+
},
|
|
44
|
+
"tactics": [
|
|
45
|
+
{
|
|
46
|
+
"name": "Open with tenure and intent to stay",
|
|
47
|
+
"when": "First substantive turn.",
|
|
48
|
+
"script": "Use the `opener`. Lead with how long they've been a tenant and a clean-payment claim — landlords value reliable rent.",
|
|
49
|
+
"priority": 1
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Present comparables with addresses",
|
|
53
|
+
"when": "After opener.",
|
|
54
|
+
"script": "Use `present_comps`. Always cite at least two real, current listings. Vague references get dismissed.",
|
|
55
|
+
"priority": 2
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Make the cost-of-turnover argument",
|
|
59
|
+
"when": "If the landlord pushes back on the comparables.",
|
|
60
|
+
"script": "Use `value_to_landlord`. Frame the savings to THEM — not the cost to the tenant — and ask for a share.",
|
|
61
|
+
"priority": 3
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Silence after the ask",
|
|
65
|
+
"when": "Immediately after stating the target rent.",
|
|
66
|
+
"script": "Wait 3–5 seconds. Landlords often counter into the silence.",
|
|
67
|
+
"priority": 4
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Pivot to concessions if rent is fixed",
|
|
71
|
+
"when": "Landlord won't move the rent number.",
|
|
72
|
+
"script": "Use `ask_for_concessions`. Free parking, pet-fee waiver, deep clean, appliance upgrade, or a 6-month lease so the user can revisit. Non-rent concessions often have a separate budget line.",
|
|
73
|
+
"priority": 5
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Lock the deal in writing",
|
|
77
|
+
"when": "Verbal agreement reached.",
|
|
78
|
+
"script": "Use `ask_for_writing`. Do NOT consider the deal real until there's a signed renewal addendum or at minimum an email from the landlord stating the new terms."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "Reserve the walk-away",
|
|
82
|
+
"when": "Landlord won't move on rent OR concessions and the offer exceeds the user's walk-away number.",
|
|
83
|
+
"script": "Use `graceful_close_walk` and report back. DO NOT give notice to vacate on this call unless the user explicitly authorised it — that's a separate decision."
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"boundaries": [
|
|
87
|
+
"Do NOT threaten to move out unless the user has explicitly authorised it AND has a realistic alternative.",
|
|
88
|
+
"Do NOT invent comparables. Landlords often know the market better than the tenant and will check.",
|
|
89
|
+
"Do NOT sign or verbally commit to a renewal on the phone — always ask for the addendum in writing.",
|
|
90
|
+
"Do NOT disclose personal financial details (raises, new job, savings) — they reduce your leverage.",
|
|
91
|
+
"Do NOT accept a rent reduction in exchange for waiving repair obligations, habitability rights, or the security deposit. Hold via `ask_operator`."
|
|
92
|
+
],
|
|
93
|
+
"success_signals": [
|
|
94
|
+
"Landlord proposes a counter below the original renewal number.",
|
|
95
|
+
"Landlord offers concessions (parking, fee waivers, upgrades) even if rent holds.",
|
|
96
|
+
"Landlord asks for a shorter or longer term in exchange — they're negotiating.",
|
|
97
|
+
"Landlord agrees to send an updated addendum in writing."
|
|
98
|
+
],
|
|
99
|
+
"failure_signals": [
|
|
100
|
+
"Landlord refuses to discuss and says 'take it or leave it' with no movement after two asks.",
|
|
101
|
+
"Landlord insists on a verbal-only agreement and refuses to email the new terms.",
|
|
102
|
+
"Landlord retaliates with talk of non-renewal or eviction threats (note this — it may be illegal in some jurisdictions).",
|
|
103
|
+
"Counter is still above the user's walk-away number."
|
|
104
|
+
],
|
|
105
|
+
"exit_strategy": {
|
|
106
|
+
"on_success": "Confirm the new rent, lease length, any concessions, the renewal-addendum delivery method, and a sign-by date. Ask for the agent's name and a confirmation number or case ID.",
|
|
107
|
+
"on_failure": "Thank the landlord, ask them to hold the original offer open for a stated number of days, and end politely. Report to operator with what was offered and the walk-away gap.",
|
|
108
|
+
"follow_ups": [
|
|
109
|
+
"Email the operator the agreed rent + any concessions + the addendum-delivery date.",
|
|
110
|
+
"Calendar reminder 24 hours before the sign-by date.",
|
|
111
|
+
"Calendar reminder 75 days before the NEXT lease expiry to start the cycle again."
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
"required_user_info": [
|
|
115
|
+
"Current rent and proposed renewal rent (in writing)",
|
|
116
|
+
"Target rent, midpoint, and walk-away rent",
|
|
117
|
+
"2–4 verified comparable listings (address + rent + bed/bath)",
|
|
118
|
+
"Length of current tenancy and payment history",
|
|
119
|
+
"Whether the user is willing and able to actually move if negotiation fails"
|
|
120
|
+
],
|
|
121
|
+
"contributed_by": "housing-tenancy agent (v0.9.87 community drop)",
|
|
122
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
123
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "no-as-opening",
|
|
3
|
+
"name": "No Is the Start: Reframing Rejection as Engagement",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "negotiation",
|
|
6
|
+
"tags": ["voss", "no-oriented", "counterfeit-yes", "thats-right", "phone-call", "real-time"],
|
|
7
|
+
"description": "Most amateurs treat 'no' as the end of a negotiation. In Chris Voss's framework, 'no' is where the actual negotiation BEGINS — it's the first honest signal from the counterparty. This skill teaches how to actively seek 'no', interpret it correctly, and use it as fuel.",
|
|
8
|
+
"disclaimer": "Reframing 'no' takes practice. Mishandled, it sounds like you're not listening. Done well, it converts dead-ends into genuine dialogue.",
|
|
9
|
+
"context": {
|
|
10
|
+
"when_to_use": "Any negotiation. Particularly important early (a no in the first 5 minutes is good news — they're engaging) and after asks that the rep needs to authority-check.",
|
|
11
|
+
"preconditions": [
|
|
12
|
+
"You can hear or read tone — 'no' carries dramatically different meanings depending on delivery.",
|
|
13
|
+
"You have a calibrated question pre-loaded for the most likely no.",
|
|
14
|
+
"You're not personally hurt by rejection — emotional resilience is a precondition for this skill."
|
|
15
|
+
],
|
|
16
|
+
"estimated_call_duration_minutes": 20
|
|
17
|
+
},
|
|
18
|
+
"principles": [
|
|
19
|
+
"'No' rarely means 'no'. It usually means: 'I'm not ready', 'I don't understand', 'I need more information', 'I want something different', 'I don't feel safe agreeing', or 'I don't have authority'. Each of these has a different next move.",
|
|
20
|
+
"A 'no' makes the counterparty feel SAFE — they have asserted control. From a position of safety, they are paradoxically more willing to keep talking. 'Yes' makes them feel committed; 'no' makes them feel protected.",
|
|
21
|
+
"Get them to 'no' deliberately by asking 'no-oriented' questions: 'Is it ridiculous to ask if…', 'Would it be a bad idea to…', 'Have you given up on getting this resolved today?' — saying no to these advances YOUR position.",
|
|
22
|
+
"Beware the counterfeit yes — a quick 'yes' or 'sure, sure' to get you off the line. Counterfeit yes is the most dangerous response in negotiation; it gives false confidence.",
|
|
23
|
+
"The phrase 'that's right' is the breakthrough — it indicates the counterparty feels TRULY understood and is now ready to act. 'You're right' is dismissal disguised as agreement.",
|
|
24
|
+
"Three nos before yes is a common pattern. Track which no you're on — the 3rd or 4th is the one to push past."
|
|
25
|
+
],
|
|
26
|
+
"phrases": {
|
|
27
|
+
"no_oriented_q1": "Is it ridiculous to ask if there's any flexibility on this?",
|
|
28
|
+
"no_oriented_q2": "Have you given up on finding a workaround for me?",
|
|
29
|
+
"no_oriented_q3": "Would it be a bad idea to explore one more option before we wrap up?",
|
|
30
|
+
"no_oriented_q4": "Is now a terrible time to ask about [X]?",
|
|
31
|
+
"after_no_what": "What about it doesn't work?",
|
|
32
|
+
"after_no_calibrated": "How would you handle this if you were in my situation?",
|
|
33
|
+
"summary_for_thats_right": "Let me play this back to make sure I've got it right: [summary]. Did I miss anything?",
|
|
34
|
+
"test_counterfeit_yes": "Just to make sure we're aligned — what's your honest read of what I'm asking?"
|
|
35
|
+
},
|
|
36
|
+
"tactics": [
|
|
37
|
+
{
|
|
38
|
+
"name": "Use no-oriented questions to invite engagement",
|
|
39
|
+
"when": "Early in a call when you suspect the rep will be defensive.",
|
|
40
|
+
"script": "Lead with one of the no-oriented phrases. The rep saying 'no, it's not ridiculous' has now agreed it's reasonable — and feels safe doing so because they got to say 'no'.",
|
|
41
|
+
"priority": 1
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "Convert their no into a what",
|
|
45
|
+
"when": "Rep says no without reason.",
|
|
46
|
+
"script": "`after_no_what` — 'What about it doesn't work?' This pivots from yes/no theater into informational dialogue.",
|
|
47
|
+
"priority": 2
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "Pursue 'that's right' through summary",
|
|
51
|
+
"when": "After 2-3 substantive exchanges where you've gathered the rep's frame.",
|
|
52
|
+
"script": "Use `summary_for_thats_right`. Summarize their position back in YOUR words. Land on 'that's right'. That moment is the negotiation's hinge.",
|
|
53
|
+
"priority": 3
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "Detect and dismantle counterfeit yes",
|
|
57
|
+
"when": "Rep agrees quickly with no specific commitments ('yeah sounds good, totally').",
|
|
58
|
+
"script": "Use `test_counterfeit_yes`. Force them to articulate what they think they agreed to. If they can't, the yes was counterfeit and you need to rebuild.",
|
|
59
|
+
"priority": 4
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "Treat 'no' as 'tell me more'",
|
|
63
|
+
"when": "Any 'no' that comes with hesitation or qualifier.",
|
|
64
|
+
"script": "Pivot to calibrated question: `after_no_calibrated`. Forces the rep into your shoes — they often solve the problem out loud."
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"decision_tree": {
|
|
68
|
+
"description": "Every 'no' you hear is a fork. Misidentifying the type of no is the most expensive mistake in real-time negotiation. Listen for the qualifying word/tone and route accordingly.",
|
|
69
|
+
"branches": [
|
|
70
|
+
{
|
|
71
|
+
"if_you_hear": "Flat, low-pitch, no qualifier: 'No.'",
|
|
72
|
+
"interpretation": "Possibly real. Possibly testing.",
|
|
73
|
+
"say": "`after_no_what`: 'What about it doesn't work?'",
|
|
74
|
+
"do_not": "Do not accept. Do not argue. Convert to information-gathering."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"if_you_hear": "'No, but…' or 'No, however…'",
|
|
78
|
+
"interpretation": "Soft no with a tell. The 'but' is the door.",
|
|
79
|
+
"say": "Mirror what came AFTER the 'but'. That's the actual frame.",
|
|
80
|
+
"do_not": "Do not focus on the no. The 'but' is where the negotiation lives."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"if_you_hear": "'No, I can't — I'm not allowed to do that.'",
|
|
84
|
+
"interpretation": "Authority no, not capability no.",
|
|
85
|
+
"say": "Pivot to authority: 'Who CAN do it?' or 'How does an exception usually happen?'",
|
|
86
|
+
"do_not": "Do not press the rep — they're being honest about a real limit."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"if_you_hear": "Quick 'sure, sure, no problem' with no specifics.",
|
|
90
|
+
"interpretation": "Counterfeit yes. Most dangerous response.",
|
|
91
|
+
"say": "`test_counterfeit_yes`: 'Just to make sure — what's your honest read of what I'm asking?'",
|
|
92
|
+
"do_not": "Do not proceed. Do not move to confirmation. The yes will evaporate after the call."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"if_you_hear": "'You're right.' (verbatim, after your argument or summary).",
|
|
96
|
+
"interpretation": "Dismissal. They want you to stop talking.",
|
|
97
|
+
"say": "Reset. Use a label: 'It seems like I'm not quite hearing what matters to you.'",
|
|
98
|
+
"do_not": "Do not treat 'you're right' as agreement. It is the OPPOSITE of 'that's right'."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"if_you_hear": "'That's right.' (verbatim, after your summary).",
|
|
102
|
+
"interpretation": "BREAKTHROUGH. Genuine alignment.",
|
|
103
|
+
"say": "Make your ask NOW. This is the highest-leverage moment of the call.",
|
|
104
|
+
"do_not": "Do not waste this moment chatting. Convert immediately."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"if_you_hear": "'I'll have to think about it.'",
|
|
108
|
+
"interpretation": "Soft no AND avoidance of commitment. Often dies in the silence after the call.",
|
|
109
|
+
"say": "Calibrated: 'What would you need from me to make the decision easier today?'",
|
|
110
|
+
"do_not": "Do not accept 'let me think' as a path forward without a specific next step."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"if_you_hear": "'No, no, no, no.' (rapid, escalating).",
|
|
114
|
+
"interpretation": "Emotional, not informational. The rep is overwhelmed or scolded.",
|
|
115
|
+
"say": "Switch to labels (see `01-tactical-empathy-labeling`). Calm first; then continue.",
|
|
116
|
+
"do_not": "Do not push for content. The rep is not in a state to receive a calibrated question."
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"if_you_hear": "After 3 no's, a quiet pause, then 'well…'",
|
|
120
|
+
"interpretation": "The wall just cracked. They're considering.",
|
|
121
|
+
"say": "Nothing. Wait. Let them complete the sentence.",
|
|
122
|
+
"do_not": "Do not interrupt the 'well…'. The 4-second silence after it is where the yes is built."
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"boundaries": [
|
|
127
|
+
"Do NOT manipulate the rep into a 'no' for sport. The technique is for opening dialogue, not for winning rhetorical points.",
|
|
128
|
+
"Do NOT mistake 'no' for an emotional rejection of YOU — it's rejection of the ASK in the moment. Don't take it personally; that taint shows in your tone.",
|
|
129
|
+
"Do NOT take a counterfeit yes off the line. Always confirm specifically before hanging up.",
|
|
130
|
+
"Do NOT keep asking past a clear, low-pitched, repeated 'no' from someone with real authority. That crosses from negotiation into pressure."
|
|
131
|
+
],
|
|
132
|
+
"success_signals": [
|
|
133
|
+
"Rep says 'that's right' after your summary.",
|
|
134
|
+
"Rep says 'no, it's not ridiculous' in response to your no-oriented question — engagement unlocked.",
|
|
135
|
+
"Rep moves from 'no' to explaining WHY, unprompted.",
|
|
136
|
+
"Rep volunteers a workaround after their 3rd no.",
|
|
137
|
+
"Rep's tone softens when they say 'no' — qualifier is incoming."
|
|
138
|
+
],
|
|
139
|
+
"failure_signals": [
|
|
140
|
+
"Rep escalates from 'no' to 'I need to end this call' — you pushed past the real wall.",
|
|
141
|
+
"Counterfeit yes confirmed but you can't get them to articulate the agreement — deal is air.",
|
|
142
|
+
"Rep keeps saying 'you're right' — you're being managed, not engaged.",
|
|
143
|
+
"After 5 calibrated questions you still haven't gotten a 'no' WITH a reason — the rep may have neither authority nor information; escalate."
|
|
144
|
+
],
|
|
145
|
+
"exit_strategy": {
|
|
146
|
+
"on_success": "After 'that's right', lock the ask. Confirm with `commitment_check` from `02-calibrated-questions`.",
|
|
147
|
+
"on_failure": "If you can't move past a hard, repeated no with authority behind it, exit gracefully. Note the rep's name, the reason cited, and try a different channel/time/representative."
|
|
148
|
+
},
|
|
149
|
+
"required_user_info": [
|
|
150
|
+
"User's emotional tolerance for hearing 'no' multiple times — coach if needed.",
|
|
151
|
+
"What 'yes' actually looks like operationally (so we can detect counterfeit yes vs real)."
|
|
152
|
+
],
|
|
153
|
+
"contributed_by": "negotiation-master agent (v0.9.87 community drop)"
|
|
154
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "not-sound-like-spam-dialer",
|
|
3
|
+
"name": "Don't Sound Like a Spam Dialer — Mass-Outreach Hygiene",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"category": "other",
|
|
6
|
+
"tags": [
|
|
7
|
+
"voice-quality",
|
|
8
|
+
"anti-pattern",
|
|
9
|
+
"self-check",
|
|
10
|
+
"phone-call",
|
|
11
|
+
"ethics",
|
|
12
|
+
"outreach-sales"
|
|
13
|
+
],
|
|
14
|
+
"description": "When the agent is making multiple outbound calls in a session, actively audit its own behaviour against the patterns that make prospects (and carriers, and operators of the line) flag the agent as a spam dialer. Refuse to operate as one.",
|
|
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": "Continuously, but especially when the agent is making more than 2-3 outbound calls in the same session, OR has been asked to run through a list. This skill is a self-check, not a customer-facing script.",
|
|
18
|
+
"preconditions": [
|
|
19
|
+
"Operator has authorised each prospect on the list individually — not just 'call this list of 200'.",
|
|
20
|
+
"The agent's outbound calls are coming from a number registered to the operator with a published presence.",
|
|
21
|
+
"The agent has a real, distinct reason for calling each named prospect — not a copy-pasted reason."
|
|
22
|
+
],
|
|
23
|
+
"estimated_call_duration_minutes": 0
|
|
24
|
+
},
|
|
25
|
+
"principles": [
|
|
26
|
+
"Volume is the enemy of trust. Three high-quality calls produce more pipeline than thirty templated ones — and don't burn the operator's caller-ID reputation.",
|
|
27
|
+
"If the agent finds itself reading the same opener verbatim on call #5, the agent is now a spam dialer. Stop and personalise.",
|
|
28
|
+
"Each prospect deserves at minimum: their name, their company, one specific real reason this call is for THEM.",
|
|
29
|
+
"Carriers (and increasingly the recipient's phone OS) flag numbers based on patterns: short calls, high volume, low pickup rate, recipients tapping 'spam'. The operator's number is at stake.",
|
|
30
|
+
"Per-prospect operator authorisation is NOT optional. 'Here's a list' is not authorisation; 'here are 20 named prospects, one sentence on each' is.",
|
|
31
|
+
"If the operator has handed the agent a list without per-prospect reasons, the right move is to push back, not to dial."
|
|
32
|
+
],
|
|
33
|
+
"phrases": {
|
|
34
|
+
"self_check_pre_call": "Before this call: do I know the prospect's first name, company, and one specific reason THIS person is being called today? If any of the three is missing, do not dial.",
|
|
35
|
+
"operator_pushback": "I've got the list of 50 names you sent. Before I start calling, I want to confirm — do you want me to call all 50, or pick the 10 strongest fits and do those properly? My experience is the second option produces more meetings and doesn't burn the number's reputation.",
|
|
36
|
+
"self_check_mid_session": "If I'm on call N and find myself saying the same opener I said on call N-1: stop. Re-personalise. Or end the session.",
|
|
37
|
+
"honest_opener_when_listy": "Hi [name], it's [agent] from [operator]'s side. I'll be upfront — I'm working through a short list of people we think might care about [specific topic]. You came up because [specific reason]. Got 30 seconds?"
|
|
38
|
+
},
|
|
39
|
+
"tactics": [
|
|
40
|
+
{
|
|
41
|
+
"name": "Per-prospect authorisation check",
|
|
42
|
+
"when": "Before the FIRST call of any session.",
|
|
43
|
+
"script": "Verify the operator has supplied named prospects with per-prospect reasons. If not, use `operator_pushback`. Refuse to start the session on an unauthorised list.",
|
|
44
|
+
"priority": 1
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "Three-fact gate before every dial",
|
|
48
|
+
"when": "Immediately before placing each call.",
|
|
49
|
+
"script": "Use `self_check_pre_call`. Name + company + specific reason for THIS prospect. Missing one → skip this prospect, do not call.",
|
|
50
|
+
"priority": 2
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "Vary the opener consciously",
|
|
54
|
+
"when": "On every call, but particularly call #3 and beyond.",
|
|
55
|
+
"script": "Read the personalising clause of your opener BACK to yourself before dialing. If it would apply equally to the previous prospect, the personalisation is fake. Rewrite.",
|
|
56
|
+
"priority": 3
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "Be upfront when you're working a list",
|
|
60
|
+
"when": "When the personalisation is real but the call is part of a small batch.",
|
|
61
|
+
"script": "Use `honest_opener_when_listy`. Naming 'I'm working a short list' is disarming and respectful, and it filters out 'no interest' fast.",
|
|
62
|
+
"priority": 4
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "Cap session volume",
|
|
66
|
+
"when": "After call #8 in a single session.",
|
|
67
|
+
"script": "Stop. Even with full personalisation, fatigue degrades quality. Resume next day or hand the rest back to the operator for re-prioritisation.",
|
|
68
|
+
"priority": 5
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "Honour every spam-flag signal",
|
|
72
|
+
"when": "Any time a recipient says 'how did you get my number?' / 'take me off your list' / 'don't call here again'.",
|
|
73
|
+
"script": "Apologise, remove from any list immediately, confirm the removal out loud, end the call. Log the removal request with date and time.",
|
|
74
|
+
"priority": 6
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"boundaries": [
|
|
78
|
+
"Do NOT make calls from a number the operator does not own and have legitimate presence on.",
|
|
79
|
+
"Do NOT call prospects whose numbers were scraped, purchased from data brokers, or pulled from sources the operator can't show consent for.",
|
|
80
|
+
"Do NOT make more than ~8 outbound calls per session per operator identity.",
|
|
81
|
+
"Do NOT use predictive-dialing patterns (rapid auto-redial, very short calls in sequence) — these are exactly what carriers flag.",
|
|
82
|
+
"Do NOT use the same identical opener verbatim across calls.",
|
|
83
|
+
"Do NOT proceed on a list the operator handed over without per-prospect reasons. Push back instead.",
|
|
84
|
+
"Do NOT ignore do-not-call requests, ever. They are absolute, regardless of jurisdiction."
|
|
85
|
+
],
|
|
86
|
+
"success_signals": [
|
|
87
|
+
"Operator confirms per-prospect authorisation when challenged on a large list.",
|
|
88
|
+
"Each call has a personalising clause that wouldn't make sense for any other prospect.",
|
|
89
|
+
"Pickup rate stays healthy across the session.",
|
|
90
|
+
"Zero 'how did you get my number?' challenges across the day.",
|
|
91
|
+
"Zero spam labels on the operator's caller ID across the week."
|
|
92
|
+
],
|
|
93
|
+
"failure_signals": [
|
|
94
|
+
"Two consecutive prospects ask 'how did you get my number?'.",
|
|
95
|
+
"Pickup rate collapses mid-session (a sign the number has been flagged).",
|
|
96
|
+
"The agent catches itself reading the same opener.",
|
|
97
|
+
"The operator's outbound number starts showing 'Spam Likely' on tests.",
|
|
98
|
+
"More than one removal request per session."
|
|
99
|
+
],
|
|
100
|
+
"exit_strategy": {
|
|
101
|
+
"on_success": "Continue the session within the volume cap. Log per-call notes that preserve the personalisation rationale.",
|
|
102
|
+
"on_failure": "Stop calling. Notify the operator. Audit the list / number / approach. Do not resume until the cause is understood and corrected — caller-ID reputation, once damaged, takes weeks to recover.",
|
|
103
|
+
"follow_ups": [
|
|
104
|
+
"Daily summary to operator: calls placed, contacts reached, removal requests, spam-flag signals.",
|
|
105
|
+
"Weekly check on the outbound number's spam-likely status via a test call from an external phone.",
|
|
106
|
+
"Quarterly review of which lists / sources are producing 'how did you get my number?' challenges."
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"required_user_info": [
|
|
110
|
+
"Per-prospect authorisation (named prospects with named reasons)",
|
|
111
|
+
"Provenance of each prospect's phone number",
|
|
112
|
+
"Operator's daily / session volume cap preferences",
|
|
113
|
+
"Operator's outbound caller-ID number and confirmation of ownership",
|
|
114
|
+
"Operator's preference on whether to push back vs. proceed when a list arrives without per-prospect detail"
|
|
115
|
+
],
|
|
116
|
+
"contributed_by": "sales-outbound agent (v0.9.87 community drop)",
|
|
117
|
+
"updated_at": "2026-05-20T06:09:47Z"
|
|
118
|
+
}
|