outreach-sequencer
Skill1 starsChanged 3 months agoMITView on GitHub
Build and stage multi-touch owner outreach sequences across email, LinkedIn, and posted letters, with send caps, suppression rules, and a human approval gate. Stages the queue. Never sends. Triggers on: build sequence, outreach sequence, follow-up sequence, schedule outreach, campaign sequence, send cadence, multi-touch campaign, stage outreach, outreach campaign, follow up plan, owner campaign.
In this repository8 other files it gives its agents.
- contact-verificationSkill
- deal-pipelineSkill
- founder-researchSkill
- market-mappingSkill
- outreach-writerSkill
- reply-classificationSkill
- target-discoverySkill
- thesis-fit-scoringSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 8 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
All four must be true. Stop if any is not.
- Distinctive: line 41
Remove from the queue, in this order.
- Very specific: line 53
inferred-DO-NOT-USEis never sendable: Not once, not for a Strong Fit. - Distinctive: line 61
Default shape: 3 to 5 touches over 4 to 6 weeks.
- Distinctive: line 92
No guilt language. No "I noticed you haven't replied"
- Distinctive: line 97
After the last touch, mark dormant with a revisit date.
- Very specific: line 128
Every row starts with status = staged.
- Distinctive: line 155
Never claim anything was sent: Never imply it. If the user asks you to send, explain that you stage and they send, and offer the export.
- Distinctive: line 194
Start with 20 to 30 owners, not the whole list: Read the reply data, fix the copy, then scale.
- Distinctive: line 197
Send your Strong Fits last: Test on segment C first. Your best targets deserve your best-tested message.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Outreach Sequencer
Turns approved copy and a qualified target list into a staged, scheduled send queue.
This skill never sends anything. It builds the queue, applies the rules,
and hands it to you. Sending is a separate, explicit, human action. An
automated send loop attached to a language model and a conversation about
someone's life's work is a bad idea everywhere. See
references/compliance-and-ethics.md.
Step 0 — Preconditions
All four must be true. Stop if any is not.
thesis-profile.mdexists, with senders (section 9) and compliance notes (section 10) filled in, notTBD. If it does not exist, stop and walk the user through creating it fromtemplates/thesis-profile.md.targets.csvis scored and enriched- Approved copy exists in
outreach/ - Contact routes exist with an
email_status
🚧 HARD GATE — compliance
- Confirm the user has read
references/compliance-and-ethics.md - Confirm jurisdiction rules from section 10: GDPR/PECR for EU/UK owners, CAN-SPAM, CASL for Canada. Opt-out handling is permanent everywhere.
- Confirm the sending domain is separate from the buyer's primary domain
Step 1 — Apply suppression
Remove from the queue, in this order. Report the count for each.
| Rule | Removes |
| Do-not-contact | Anyone who ever opted out. Permanent, never expires. |
| Warm path exists | warm_path is populated. They get an intro, not a cold message. |
| Already in pipeline | Any open conversation in pipeline.csv |
| Not a Fit / Near Miss | Below-the-line fit_score |
| Unsendable email | email_status is inferred-DO-NOT-USE or Not found (letter track may still apply) |
| No route | No sendable email, no LinkedIn URL, no mailing address |
| Contacted recently | Touched in the last 90 days on any channel |
inferred-DO-NOT-USE is never sendable. Not once, not for a Strong Fit.
A bounce spike on a young sending domain can end your ability to send email
at all.
Step 2 — Build the sequence
Default shape: 3 to 5 touches over 4 to 6 weeks. Owners move slowly and that is fine. A fast cadence reads as a broker blast; a patient one reads as a serious buyer. Do not exceed five touches.
Email track (primary)
| Touch | Day | Action |
| 1 | 0 | Opening email, under 120 words |
| 2 | +7 | Follow-up, shorter, one new fact about the buyer or thesis |
| 3 | +16 | Different angle, shorter again |
| 4 | +28 | Short close-out. "No response needed. If timing is ever right, my details are below." |
Letter track (offline owners — no email, published address only)
| Touch | Day | Action |
| 1 | 0 | Posted letter, under one page, marked private and confidential |
| 2 | +21 | One follow-up letter or a call to the published number |
LinkedIn track (where the owner is actually active)
| Touch | Day | Action |
| 1 | 0 | Connect note, under 300 chars |
| 2 | +7 after accept | Short message, then stop |
Rules
- Each follow-up is shorter than the one before
- Each adds one new piece of information. Never just "bumping this"
- No guilt language. No "I noticed you haven't replied"
- Nothing in a subject line or envelope that reveals a possible sale to whoever opens the mail
- Stop the entire sequence the moment anyone replies
- Stop permanently on any opt-out, on every channel at once
- After the last touch, mark dormant with a revisit date. Silence from an owner is a not-now, not a no
Step 3 — Apply send caps
Volume discipline is deliverability, and with owners it is also reputation. These markets are small and owners talk to each other.
| Setting | Default | Notes |
| Emails per sender per day | 15 to 25 | New domain: start at 10 |
| Letters per week | As printing allows | Quality over volume |
| Domain warmup | 2 to 3 weeks | Before any real volume |
| Sending domain | Separate from your primary | Never send cold from your main domain |
Spread sends across business hours in the recipient's timezone. Never send in one burst.
Step 4 — Stage the queue
Write outreach/queue.csv:
send_date,sender,channel,company,contact_name,email,linkedin_url,
segment,touch_number,message_variant,message_body,statusEvery row starts with status = staged. Nothing is sent until a human
moves it there after actually sending.
Also write outreach/schedule.md — a day-by-day view the user can actually
read and sanity check, with the letter track listed separately.
Step 5 — The send gate
🚧 HARD GATE — the important one
Present:
- Total messages staged, broken down by day, sender, and channel
- Suppression counts with reasons
- The first ten messages in full, exactly as they would send
- The daily volume per sender, against the cap
- Confirmation that the sending domain is not the primary domain
- Confirmation that the do-not-contact list is suppressed
Then say plainly:
This queue is staged, not sent. Nothing has gone out. To send, export the queue to your sending tool, or send manually from the schedule. I do not have send access and will not send on your behalf.
Never claim anything was sent. Never imply it. If the user asks you to send, explain that you stage and they send, and offer the export.
Step 6 — Report
Sequence staged — not sent
Eligible after suppression: 71 of 118
Suppressed:
Warm path exists 6 → routed to intro requests
Email unsendable 24 (11 of these have a letter route instead)
No route at all 10
Already in pipeline 4
Below-the-line fit 2
Do-not-contact 1
Queue: 71 owners, 4 touches, 246 messages over 34 days
Email track 58 owners sender: [principal]
Letter track 11 owners (manual print and post)
LinkedIn track 2 owners
Peak daily volume: 22 per sender (cap: 25) ✓
Sending domain: [separate domain confirmed] ✓
Do-not-contact suppressed ✓
Written to: outreach/queue.csv, outreach/schedule.md
Nothing sent. Export to your sending tool when ready.Notes
- Start with 20 to 30 owners, not the whole list. Read the reply data, fix the copy, then scale. Burning your best targets on untested copy is the most expensive mistake available at this stage.
- Send your Strong Fits last. Test on segment C first. Your best targets deserve your best-tested message.
- Stop everything on reply. Route to
reply-classification. - Log every send to
pipeline.csv. An untracked send is a send you will repeat by accident, to someone who remembers. - Watch bounce rate. Above 3%, stop and re-verify. Above 5%, stop entirely and fix the list before you lose the domain.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

