@lztek/sarah-sells 0.1.0

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 (88) hide show
  1. package/AGENTS.md +52 -0
  2. package/CONTEXT.md +42 -0
  3. package/dist/commands/ai.d.ts +3 -0
  4. package/dist/commands/ai.d.ts.map +1 -0
  5. package/dist/commands/ai.js +89 -0
  6. package/dist/commands/ai.js.map +1 -0
  7. package/dist/commands/auth.d.ts +3 -0
  8. package/dist/commands/auth.d.ts.map +1 -0
  9. package/dist/commands/auth.js +154 -0
  10. package/dist/commands/auth.js.map +1 -0
  11. package/dist/commands/campaigns.d.ts +3 -0
  12. package/dist/commands/campaigns.d.ts.map +1 -0
  13. package/dist/commands/campaigns.js +117 -0
  14. package/dist/commands/campaigns.js.map +1 -0
  15. package/dist/commands/inboxes.d.ts +3 -0
  16. package/dist/commands/inboxes.d.ts.map +1 -0
  17. package/dist/commands/inboxes.js +38 -0
  18. package/dist/commands/inboxes.js.map +1 -0
  19. package/dist/commands/leads.d.ts +3 -0
  20. package/dist/commands/leads.d.ts.map +1 -0
  21. package/dist/commands/leads.js +34 -0
  22. package/dist/commands/leads.js.map +1 -0
  23. package/dist/commands/mailgun.d.ts +3 -0
  24. package/dist/commands/mailgun.d.ts.map +1 -0
  25. package/dist/commands/mailgun.js +68 -0
  26. package/dist/commands/mailgun.js.map +1 -0
  27. package/dist/commands/mcp.d.ts +3 -0
  28. package/dist/commands/mcp.d.ts.map +1 -0
  29. package/dist/commands/mcp.js +12 -0
  30. package/dist/commands/mcp.js.map +1 -0
  31. package/dist/commands/org.d.ts +3 -0
  32. package/dist/commands/org.d.ts.map +1 -0
  33. package/dist/commands/org.js +81 -0
  34. package/dist/commands/org.js.map +1 -0
  35. package/dist/commands/prospects.d.ts +3 -0
  36. package/dist/commands/prospects.d.ts.map +1 -0
  37. package/dist/commands/prospects.js +129 -0
  38. package/dist/commands/prospects.js.map +1 -0
  39. package/dist/commands/schema.d.ts +4 -0
  40. package/dist/commands/schema.d.ts.map +1 -0
  41. package/dist/commands/schema.js +23 -0
  42. package/dist/commands/schema.js.map +1 -0
  43. package/dist/commands/templates.d.ts +3 -0
  44. package/dist/commands/templates.d.ts.map +1 -0
  45. package/dist/commands/templates.js +75 -0
  46. package/dist/commands/templates.js.map +1 -0
  47. package/dist/commands/zoominfo.d.ts +3 -0
  48. package/dist/commands/zoominfo.d.ts.map +1 -0
  49. package/dist/commands/zoominfo.js +41 -0
  50. package/dist/commands/zoominfo.js.map +1 -0
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +37 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/lib/auth.d.ts +19 -0
  56. package/dist/lib/auth.d.ts.map +1 -0
  57. package/dist/lib/auth.js +151 -0
  58. package/dist/lib/auth.js.map +1 -0
  59. package/dist/lib/http-client.d.ts +21 -0
  60. package/dist/lib/http-client.d.ts.map +1 -0
  61. package/dist/lib/http-client.js +62 -0
  62. package/dist/lib/http-client.js.map +1 -0
  63. package/dist/lib/output.d.ts +7 -0
  64. package/dist/lib/output.d.ts.map +1 -0
  65. package/dist/lib/output.js +22 -0
  66. package/dist/lib/output.js.map +1 -0
  67. package/dist/lib/safety.d.ts +8 -0
  68. package/dist/lib/safety.d.ts.map +1 -0
  69. package/dist/lib/safety.js +64 -0
  70. package/dist/lib/safety.js.map +1 -0
  71. package/dist/lib/schema-registry.d.ts +42 -0
  72. package/dist/lib/schema-registry.d.ts.map +1 -0
  73. package/dist/lib/schema-registry.js +368 -0
  74. package/dist/lib/schema-registry.js.map +1 -0
  75. package/dist/mcp/server.d.ts +2 -0
  76. package/dist/mcp/server.d.ts.map +1 -0
  77. package/dist/mcp/server.js +317 -0
  78. package/dist/mcp/server.js.map +1 -0
  79. package/package.json +50 -0
  80. package/skills/sarah-ai-sdr/SKILL.md +38 -0
  81. package/skills/sarah-campaigns/SKILL.md +54 -0
  82. package/skills/sarah-inboxes/SKILL.md +28 -0
  83. package/skills/sarah-leads/SKILL.md +37 -0
  84. package/skills/sarah-mailgun/SKILL.md +36 -0
  85. package/skills/sarah-org/SKILL.md +41 -0
  86. package/skills/sarah-prospects/SKILL.md +46 -0
  87. package/skills/sarah-setup/SKILL.md +93 -0
  88. package/skills/sarah-zoominfo/SKILL.md +43 -0
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: sarah-prospects
3
+ version: 1.0.0
4
+ description: Prospect list management for SarahAI
5
+ metadata:
6
+ requires:
7
+ bins: ["sarah"]
8
+ env: ["SARAH_ACCESS_TOKEN"]
9
+ ---
10
+
11
+ # Prospect List Management
12
+
13
+ Prospect lists are named, reusable collections of contacts. Prospects become leads once they are assigned to a campaign and engaged.
14
+
15
+ ## Critical Rules
16
+
17
+ - **Always name lists descriptively.** Use names like "Q1 Texas Roofers" or "East Coast Woundcare Facilities" so lists are identifiable.
18
+ - **CSV files must have headers.** Required columns: `email`. Optional: `first_name`, `last_name`, `company`, `title`.
19
+ - **Duplicate emails within a list are ignored.** The `prospect_list_members` table enforces uniqueness on `(prospect_list_id, lead_id)`.
20
+ - **Assigning a list to a campaign syncs members to `campaign_leads`.** Use `--dry-run` on `sarah prospects assign` to preview before syncing.
21
+ - **Deleting a list removes member links but not the leads themselves.** Leads persist in the `leads` table even after their list is deleted.
22
+
23
+ ## Workflow
24
+
25
+ ```bash
26
+ # Create a list
27
+ sarah prospects create --json '{"name": "Q1 Texas Roofers", "description": "Roofing companies in Texas metro areas"}'
28
+
29
+ # Import contacts from CSV
30
+ sarah prospects add-leads <listId> --file texas_roofers.csv
31
+
32
+ # Review the list
33
+ sarah prospects get <listId>
34
+ sarah prospects members <listId>
35
+
36
+ # Assign to a campaign (dry-run first)
37
+ sarah prospects assign <listId> --campaign <campaignId> --dry-run
38
+ sarah prospects assign <listId> --campaign <campaignId>
39
+ ```
40
+
41
+ ## Source Types
42
+
43
+ - `csv` -- Imported from CSV file
44
+ - `zoominfo` -- Imported from ZoomInfo
45
+ - `manual` -- Manually added
46
+ - `mixed` -- Multiple sources
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: sarah-setup
3
+ version: 1.0.0
4
+ description: End-to-end platform setup workflow for SarahAI
5
+ metadata:
6
+ requires:
7
+ bins: ["sarah"]
8
+ env: ["SARAH_ACCESS_TOKEN"]
9
+ ---
10
+
11
+ # End-to-End Platform Setup
12
+
13
+ This skill guides you through setting up SarahAI from scratch for a new organization.
14
+
15
+ ## Prerequisites
16
+
17
+ - A SarahAI account with `SARAH_ACCESS_TOKEN` set
18
+ - A Mailgun account for mass email sending
19
+ - At least one Gmail/Google Workspace account for SDR follow-ups
20
+ - (Optional) ZoomInfo credentials for lead enrichment
21
+
22
+ ## Setup Sequence
23
+
24
+ ### 1. Verify Authentication
25
+
26
+ ```bash
27
+ sarah auth token
28
+ sarah org check
29
+ ```
30
+
31
+ ### 2. Configure Mailgun Domain
32
+
33
+ ```bash
34
+ sarah mailgun domains add --json '{"domain": "mail.yourcompany.com"}'
35
+ # Add DNS records at your registrar
36
+ sarah mailgun domains verify
37
+ sarah mailgun domains dmarc
38
+ ```
39
+
40
+ ### 3. Verify Email Inboxes
41
+
42
+ ```bash
43
+ sarah inboxes list
44
+ sarah inboxes test <inboxId>
45
+ sarah inboxes diagnostics <inboxId>
46
+ ```
47
+
48
+ ### 4. Configure AI SDR
49
+
50
+ ```bash
51
+ sarah ai models
52
+ sarah ai sdr-config set <inboxId> --json '{"provider": "anthropic", "model": "claude-3-5-sonnet"}'
53
+ ```
54
+
55
+ ### 5. Build a Prospect List
56
+
57
+ ```bash
58
+ sarah prospects create --json '{"name": "Launch Prospects"}'
59
+ sarah prospects add-leads <listId> --file prospects.csv
60
+ sarah prospects members <listId>
61
+ ```
62
+
63
+ ### 6. Create and Launch a Campaign
64
+
65
+ ```bash
66
+ sarah campaigns create --json '{"name": "Launch Campaign", "prospect_list_id": "<listId>"}'
67
+ sarah leads list <campaignId>
68
+
69
+ # Always dry-run first
70
+ sarah campaigns execute <campaignId> --phase mailgun_mass --dry-run
71
+ sarah campaigns execute <campaignId> --phase mailgun_mass
72
+
73
+ # Monitor
74
+ sarah campaigns metrics <campaignId>
75
+ ```
76
+
77
+ ### 7. Monitor and Iterate
78
+
79
+ ```bash
80
+ sarah campaigns metrics <campaignId>
81
+ sarah inboxes daily-sent
82
+ sarah leads list <campaignId>
83
+ ```
84
+
85
+ ## Safety Checklist
86
+
87
+ Before executing any campaign phase:
88
+ - [ ] Mailgun domain DNS verified (`sarah mailgun domains verify`)
89
+ - [ ] Inbox connection healthy (`sarah inboxes test <id>`)
90
+ - [ ] Daily send limits checked (`sarah inboxes daily-sent`)
91
+ - [ ] Campaign has leads assigned (`sarah leads list <campaignId>`)
92
+ - [ ] Dry-run completed successfully (`--dry-run`)
93
+ - [ ] User has confirmed execution
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: sarah-zoominfo
3
+ version: 1.0.0
4
+ description: ZoomInfo lead enrichment and import for SarahAI
5
+ metadata:
6
+ requires:
7
+ bins: ["sarah"]
8
+ env: ["SARAH_ACCESS_TOKEN"]
9
+ ---
10
+
11
+ # ZoomInfo Integration
12
+
13
+ SarahAI integrates with ZoomInfo for lead discovery and enrichment.
14
+
15
+ ## Critical Rules
16
+
17
+ - **ZoomInfo requires a valid bearer token.** Ensure ZoomInfo OAuth is configured in the platform settings before using search/import.
18
+ - **Search before importing.** Use `sarah zoominfo search` to preview results, then import the contacts you want.
19
+ - **Imported contacts are deduplicated by email.** Existing leads with the same email are updated, not duplicated.
20
+ - **Assign imported leads to a campaign.** After import, use `sarah zoominfo assign` to link leads to a campaign.
21
+
22
+ ## Workflow
23
+
24
+ ```bash
25
+ # 1. Search for contacts
26
+ sarah zoominfo search --json '{"companyName": "Acme Roofing", "jobTitle": "Owner", "location": "Texas"}'
27
+
28
+ # 2. Import selected contacts
29
+ sarah zoominfo import --json '[{"firstName": "John", "lastName": "Doe", "email": "john@acme.com", ...}]'
30
+
31
+ # 3. Assign to campaign
32
+ sarah zoominfo assign --campaign <campaignId> --leads <leadId1>,<leadId2>
33
+ ```
34
+
35
+ ## Alternative: Import into Prospect List
36
+
37
+ For reusable lead collections, import into a prospect list instead:
38
+
39
+ ```bash
40
+ sarah prospects create --json '{"name": "ZoomInfo - Texas Roofers"}'
41
+ sarah prospects add-leads <listId> --json '[...]'
42
+ sarah prospects assign <listId> --campaign <campaignId>
43
+ ```