@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.
- package/AGENTS.md +52 -0
- package/CONTEXT.md +42 -0
- package/dist/commands/ai.d.ts +3 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +89 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +154 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/campaigns.d.ts +3 -0
- package/dist/commands/campaigns.d.ts.map +1 -0
- package/dist/commands/campaigns.js +117 -0
- package/dist/commands/campaigns.js.map +1 -0
- package/dist/commands/inboxes.d.ts +3 -0
- package/dist/commands/inboxes.d.ts.map +1 -0
- package/dist/commands/inboxes.js +38 -0
- package/dist/commands/inboxes.js.map +1 -0
- package/dist/commands/leads.d.ts +3 -0
- package/dist/commands/leads.d.ts.map +1 -0
- package/dist/commands/leads.js +34 -0
- package/dist/commands/leads.js.map +1 -0
- package/dist/commands/mailgun.d.ts +3 -0
- package/dist/commands/mailgun.d.ts.map +1 -0
- package/dist/commands/mailgun.js +68 -0
- package/dist/commands/mailgun.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +12 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/org.d.ts +3 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +81 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/prospects.d.ts +3 -0
- package/dist/commands/prospects.d.ts.map +1 -0
- package/dist/commands/prospects.js +129 -0
- package/dist/commands/prospects.js.map +1 -0
- package/dist/commands/schema.d.ts +4 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +23 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/templates.d.ts +3 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +75 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/zoominfo.d.ts +3 -0
- package/dist/commands/zoominfo.d.ts.map +1 -0
- package/dist/commands/zoominfo.js +41 -0
- package/dist/commands/zoominfo.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +19 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +151 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/http-client.d.ts +21 -0
- package/dist/lib/http-client.d.ts.map +1 -0
- package/dist/lib/http-client.js +62 -0
- package/dist/lib/http-client.js.map +1 -0
- package/dist/lib/output.d.ts +7 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +22 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/safety.d.ts +8 -0
- package/dist/lib/safety.d.ts.map +1 -0
- package/dist/lib/safety.js +64 -0
- package/dist/lib/safety.js.map +1 -0
- package/dist/lib/schema-registry.d.ts +42 -0
- package/dist/lib/schema-registry.d.ts.map +1 -0
- package/dist/lib/schema-registry.js +368 -0
- package/dist/lib/schema-registry.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +317 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +50 -0
- package/skills/sarah-ai-sdr/SKILL.md +38 -0
- package/skills/sarah-campaigns/SKILL.md +54 -0
- package/skills/sarah-inboxes/SKILL.md +28 -0
- package/skills/sarah-leads/SKILL.md +37 -0
- package/skills/sarah-mailgun/SKILL.md +36 -0
- package/skills/sarah-org/SKILL.md +41 -0
- package/skills/sarah-prospects/SKILL.md +46 -0
- package/skills/sarah-setup/SKILL.md +93 -0
- 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
|
+
```
|