@sellable/install 0.1.134 → 0.1.136

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.
@@ -120,9 +120,15 @@ blocker.
120
120
  Do not write `saw you {{engagement_context}} on {{post_context}}`, `saw you
121
121
  reacted to`, `saw you engaging with`, or equivalent source-citation copy as a
122
122
  default hook. Only refer to engagement when the line is self-aware and
123
- low-certainty, for example: `not sure if this is too specific, but the
124
- [topic] thread felt close enough to send`. Otherwise omit the engagement
125
- signal and use role/company/problem context.
123
+ low-certainty, for example: `you might not remember the thread, but I found
124
+ you through a [topic] discussion and your [observable role/company context]
125
+ looked close to [problem]`. Otherwise omit the engagement signal and use
126
+ role/company/problem context.
127
+ - Do not describe the sender in third person inside the outbound message.
128
+ Lines like `p.s. Saju's angle is...`, `Christian's angle is...`, or
129
+ `[sender]'s approach is...` are internal notes leaking into copy. If the point
130
+ matters, write it in the sender's voice: `p.s. we usually pair the build with
131
+ enablement`, or omit it.
126
132
  - The selected winner is one first outbound send only. No post-accept DM,
127
133
  follow-up, cadence branch, sequence copy, or launch copy.
128
134
 
@@ -954,48 +954,44 @@ explicit client prospect identity in the invocation, do one lightweight lookup
954
954
  first:
955
955
 
956
956
  - LinkedIn profile: call \`mcp__sellable__fetch_linkedin_profile\`.
957
- - Website/domain/company: call \`mcp__sellable__fetch_company\` when possible,
958
- otherwise one web lookup.
957
+ - Non-profile URLs or company-page inputs are not enough to start this flow; ask
958
+ again for the person's LinkedIn profile URL.
959
959
  - Existing client prospect id: use it directly and do one company/profile lookup
960
- only if a URL/domain is also available.
960
+ only if a LinkedIn profile URL is also available.
961
961
 
962
962
  Then summarize what you found in one or two lines and ask the user to confirm
963
- the current company/focus before continuing, especially if public website data
964
- may be stale. Do not mention connected sender availability in this confirmation.
963
+ the current company/focus before continuing. Do not mention connected sender
964
+ availability in this confirmation.
965
965
 
966
966
  If the user did not provide the launch identity, ask in normal chat for the
967
- LinkedIn profile URL first, with the company website as the fallback. Do not ask
968
- them to choose an input type with the structured question tool:
967
+ LinkedIn profile URL. Do not ask them to choose an input type with the structured
968
+ question tool:
969
969
 
970
970
  \`\`\`text
971
- I’m ready to build this in {workspace}.
972
-
973
- What is your LinkedIn profile URL? If you do not have it handy, send your
974
- company website instead. I’ll research the person and company from that, then
975
- ask you to correct anything stale before we pick the target, offer, proof, and
976
- lead source.
971
+ What is your LinkedIn profile URL?
977
972
  \`\`\`
978
973
 
979
- After the user pastes a URL/domain, do the lightweight lookup. For a LinkedIn
980
- profile, call \`mcp__sellable__fetch_linkedin_profile\` and infer the current or
981
- most recent company from the profile. For a company website, call
982
- \`mcp__sellable__fetch_company\` when possible, otherwise one web lookup. If a
983
- LinkedIn profile URL is available, retain it as \`senderLinkedinUrl\` for
984
- \`create_campaign\`; if a \`clientProspectId\` is available, pass that instead.
974
+ After the user pastes a LinkedIn profile URL, call
975
+ \`mcp__sellable__fetch_linkedin_profile\` and infer the current or most recent
976
+ company from the profile. If they paste a non-profile URL or company page
977
+ instead, ask again for the person's LinkedIn profile URL. Retain the profile URL as
978
+ \`senderLinkedinUrl\` for \`create_campaign\`; if a \`clientProspectId\` is available,
979
+ pass that instead.
985
980
 
986
- After the user confirms the company/focus, run one lightweight company lookup
987
- if it has not already run, then ask an offer-readiness question before inferred
988
- strategy hardens:
981
+ After the user confirms the company/focus, ask the full setup intake before
982
+ inferred strategy hardens:
989
983
 
990
984
  \`\`\`text
991
- Do you already know the offer for this campaign, should I use the researched
992
- recommendation, or should we shape the offer together? If the website is stale,
993
- tell me what is current before I build the brief.
985
+ Who should we target first?
986
+ What offer should this campaign lead with?
987
+ What is the strongest credibility signal we can lead with?
988
+ How should we find prospects: find prospects for me, use a CSV of LinkedIn
989
+ profiles, or use a CSV of company domains?
994
990
  \`\`\`
995
991
 
996
992
  The setup questions should use the confirmed company context so they do not feel
997
- generic. When you present a recommendation, introduce it as based on the
998
- research you just did and keep it editable.
993
+ generic. When you present a researched recommendation, introduce it as based on
994
+ the research you just did and keep it editable.
999
995
 
1000
996
  Before the identity gate, use this customer-facing shape:
1001
997
 
@@ -1380,9 +1376,8 @@ any leads are imported or anything can send.
1380
1376
  Good identity setup:
1381
1377
 
1382
1378
  \`\`\`text
1383
- I’ll ask for the LinkedIn profile URL first, with the company website as a
1384
- fallback. Then I’ll show the researched recommendation and you can correct
1385
- anything stale before we pick the target, offer, proof, and lead source.
1379
+ I’ll ask for the LinkedIn profile URL first. Then we’ll confirm who to target,
1380
+ what to offer, what proof to lead with, and how to find prospects.
1386
1381
  \`\`\`
1387
1382
 
1388
1383
  Bad:
@@ -1395,8 +1390,8 @@ Better:
1395
1390
 
1396
1391
  \`\`\`text
1397
1392
  I found Christian Reyes connected here. Is that you, and is this campaign for
1398
- Sellable? If not, choose LinkedIn profile or company domain and I’ll ask you to
1399
- paste it in chat.
1393
+ Sellable? If not, send the LinkedIn profile URL for the person this campaign is
1394
+ for.
1400
1395
  \`\`\`
1401
1396
 
1402
1397
  Bad:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.134",
3
+ "version": "0.1.136",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -451,48 +451,44 @@ explicit client prospect identity in the invocation, do one lightweight lookup
451
451
  first:
452
452
 
453
453
  - LinkedIn profile: call `mcp__sellable__fetch_linkedin_profile`.
454
- - Website/domain/company: call `mcp__sellable__fetch_company` when possible,
455
- otherwise one web lookup.
454
+ - Non-profile URLs or company-page inputs are not enough to start this flow; ask
455
+ again for the person's LinkedIn profile URL.
456
456
  - Existing client prospect id: use it directly and do one company/profile lookup
457
- only if a URL/domain is also available.
457
+ only if a LinkedIn profile URL is also available.
458
458
 
459
459
  Then summarize what you found in one or two lines and ask the user to confirm
460
- the current company/focus before continuing, especially if public website data
461
- may be stale. Do not mention connected sender availability in this confirmation.
460
+ the current company/focus before continuing. Do not mention connected sender
461
+ availability in this confirmation.
462
462
 
463
463
  If the user did not provide the launch identity, ask in normal chat for the
464
- LinkedIn profile URL first, with the company website as the fallback. Do not ask
465
- them to choose an input type with the structured question tool:
464
+ LinkedIn profile URL. Do not ask them to choose an input type with the structured
465
+ question tool:
466
466
 
467
467
  ```text
468
- I’m ready to build this in {workspace}.
469
-
470
- What is your LinkedIn profile URL? If you do not have it handy, send your
471
- company website instead. I’ll research the person and company from that, then
472
- ask you to correct anything stale before we pick the target, offer, proof, and
473
- lead source.
468
+ What is your LinkedIn profile URL?
474
469
  ```
475
470
 
476
- After the user pastes a URL/domain, do the lightweight lookup. For a LinkedIn
477
- profile, call `mcp__sellable__fetch_linkedin_profile` and infer the current or
478
- most recent company from the profile. For a company website, call
479
- `mcp__sellable__fetch_company` when possible, otherwise one web lookup. If a
480
- LinkedIn profile URL is available, retain it as `senderLinkedinUrl` for
481
- `create_campaign`; if a `clientProspectId` is available, pass that instead.
471
+ After the user pastes a LinkedIn profile URL, call
472
+ `mcp__sellable__fetch_linkedin_profile` and infer the current or most recent
473
+ company from the profile. If they paste a non-profile URL or company page
474
+ instead, ask again for the person's LinkedIn profile URL. Retain the profile URL as
475
+ `senderLinkedinUrl` for `create_campaign`; if a `clientProspectId` is available,
476
+ pass that instead.
482
477
 
483
- After the user confirms the company/focus, run one lightweight company lookup
484
- if it has not already run, then ask an offer-readiness question before inferred
485
- strategy hardens:
478
+ After the user confirms the company/focus, ask the full setup intake before
479
+ inferred strategy hardens:
486
480
 
487
481
  ```text
488
- Do you already know the offer for this campaign, should I use the researched
489
- recommendation, or should we shape the offer together? If the website is stale,
490
- tell me what is current before I build the brief.
482
+ Who should we target first?
483
+ What offer should this campaign lead with?
484
+ What is the strongest credibility signal we can lead with?
485
+ How should we find prospects: find prospects for me, use a CSV of LinkedIn
486
+ profiles, or use a CSV of company domains?
491
487
  ```
492
488
 
493
489
  The setup questions should use the confirmed company context so they do not feel
494
- generic. When you present a recommendation, introduce it as based on the
495
- research you just did and keep it editable.
490
+ generic. When you present a researched recommendation, introduce it as based on
491
+ the research you just did and keep it editable.
496
492
 
497
493
  ### Sufficient Intake Bypass
498
494
 
@@ -520,9 +516,9 @@ If the invocation or any later user message explicitly asks for "yolo mode",
520
516
  me", "use best estimates", or "just run it", enable YOLO mode for the rest of
521
517
  the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
522
518
 
523
- - If the campaign subject is missing, ask only for the LinkedIn profile URL
524
- first, with company website as the fallback, in normal chat; do not ask buyer,
525
- offer, proof, source, or filter setup questions before that.
519
+ - If the campaign subject is missing, ask only for the LinkedIn profile URL in
520
+ normal chat; do not continue from a non-profile URL and do not ask buyer, offer,
521
+ proof, source, or filter setup questions before the LinkedIn URL.
526
522
  - Treat any freeform directions already provided, or added later by the user, as
527
523
  operator directions for the rest of the run. If directions conflict, the newest
528
524
  user direction wins.
@@ -681,9 +677,7 @@ updates.
681
677
  ```text
682
678
  You're in — {activeWorkspaceName} workspace, ready to roll.
683
679
 
684
- Now — what is your LinkedIn profile URL? If you do not have it handy, send your company website instead. I’ll research the person and company from that, then ask you to correct anything stale before we pick the target, offer, proof, and lead source.
685
-
686
- e.g. https://www.linkedin.com/in/client-handle or https://example.com
680
+ What is your LinkedIn profile URL?
687
681
  ```
688
682
 
689
683
  - If `isReturningUser === false`, prepend ONE line confirming the new
@@ -692,17 +686,14 @@ updates.
692
686
  ```text
693
687
  You're set up — your {activeWorkspaceName} workspace is ready.
694
688
 
695
- Now — what is your LinkedIn profile URL? If you do not have it handy, send your company website instead. I’ll research the person and company from that, then ask you to correct anything stale before we pick the target, offer, proof, and lead source.
696
-
697
- e.g. https://www.linkedin.com/in/client-handle or https://example.com
689
+ What is your LinkedIn profile URL?
698
690
  ```
699
691
 
700
692
  No other lines. No "all set", no "signed in", no other acknowledgement.
701
693
 
702
- After the user pastes the URL, proceed with the identity-first campaign
703
- setup in the v2 subskill prompt. Resolve a LinkedIn profile with
704
- `fetch_linkedin_profile`, a company website/domain with `fetch_company`
705
- when possible, and mark the client/company research gate with
694
+ After the user pastes the LinkedIn profile URL, proceed with the
695
+ identity-first campaign setup in the v2 subskill prompt. Resolve it with
696
+ `fetch_linkedin_profile` and mark the client/company research gate with
706
697
  `complete_sender_research` when that protocol is required.
707
698
 
708
699
  3. If auth is not OK with `error.type === "workspace"` (token valid, no active