📬 Email Sequence Engine
Automation Level: 100% AUTO
Once approved at [[07-Human-Review-Gates|Gate #2]], sequences execute fully autonomously. No human involvement until a reply arrives.
Manifest Stage: S6 → See 01-Process-Manifest Input: Approved email batch from [[07-Human-Review-Gates|Gate #2]] Output: Sent sequence events → 08-Reply-Classification-Agent
🎯 Sequence Philosophy
BaC Principle Applied
A traditional SOP says “follow up 3 times.” This engine defines exactly: timing windows, send conditions, branching logic based on behaviour, and automatic stop conditions — so the sequence can run and adapt without human intervention.
🔀 Master Sequence Definition
sequence:
name: cold-outbound-v1
version: 1.0.0
tool: Instantly.ai
total_touchpoints: 5
max_duration_days: 21
send_window:
days: [Monday, Tuesday, Wednesday, Thursday] # no Fri/weekend sends
hours: "8:00–11:00 AM" # prospect's local time
timezone_detection: true # auto-detect from LinkedIn/domain
steps:
- step: 1
name: initial-outreach
day: 0
type: email
subject_template: "{{subject_variant_A or B}}" # A/B tested → [[09-Metrics-and-Self-Improvement]]
body_template: personalized_hook + value_prop_1
personalization_source: [[06-Personalization-Agent]]
conditions:
send_if: always
tracking:
open_tracking: true
click_tracking: true
- step: 2
name: value-add-followup
day: 3
type: email
subject_template: "Re: (same thread)"
body_template: add_resource_or_insight # short, adds value without repeating ask
conditions:
send_if: NOT replied
tracking:
open_tracking: true
- step: 3
name: social-proof-bump
day: 7
type: email
subject_template: "Quick thought on [company_pain]"
body_template: case_study_reference + soft_CTA
conditions:
send_if: NOT replied AND (opened_step1 OR opened_step2)
tracking:
open_tracking: true
- step: 4
name: breakup-email
day: 14
type: email
subject_template: "Should I close your file?"
body_template: permission_to_close # classic pattern, high reply rate
conditions:
send_if: NOT replied
tracking:
open_tracking: true
- step: 5
name: linkedin-connect
day: 21
type: linkedin_connection_request
message_template: brief_personalized_note
conditions:
send_if: NOT replied AND linkedin_url_available🌲 Branching Decision Tree
flowchart TD S1["Step 1: Initial Email<br/>Day 0"] S1 -->|"Replied"| REPLY["→ Reply Classification Agent"] S1 -->|"No reply after 3d"| S2 S2["Step 2: Value Add<br/>Day 3"] S2 -->|"Replied"| REPLY S2 -->|"Opened but no reply"| S3_HOT["Step 3: Social Proof<br/>Day 7 — opened signal"] S2 -->|"Not opened"| S3_COLD["Step 3: Different angle<br/>Day 7 — no engagement"] S3_HOT & S3_COLD -->|"Replied"| REPLY S3_HOT & S3_COLD -->|"No reply after 7d"| S4 S4["Step 4: Breakup Email<br/>Day 14"] S4 -->|"Replied"| REPLY S4 -->|"No reply after 7d"| S5 S5["Step 5: LinkedIn Connect<br/>Day 21"] S5 -->|"Connected + replied"| REPLY S5 -->|"No response"| END["Archive lead<br/>Log in Metrics Loop"]
✉️ Template Library
Templates Are Version-Controlled
Every template change goes through [[07-Human-Review-Gates|Gate #2]] and is A/B tested before full deployment. See 09-Metrics-and-Self-Improvement.
Template: Initial Outreach (Personalized Hook)
Subject: {{hook_subject}}
Hi {{first_name}},
{{personalized_hook}} ← Generated by [[06-Personalization-Agent]]
[One sentence connecting their situation to the problem we solve.]
[One sentence: what we do + one outcome.]
Worth a 20-min chat this week?
{{sender_name}}
{{sender_title}}
Template: Value-Add Follow-up
Subject: Re: {{previous_subject}}
{{first_name}} — thought this might be useful given what you're building:
[Resource/insight — specific to their company or role]
No ask — just sharing. Happy to dig in if useful.
{{sender_name}}
Template: Breakup Email
Subject: Should I close your file, {{first_name}}?
I've reached out a few times — no worries if the timing's off.
I'll stop following up unless you'd like to reconnect.
Either way, [one-line genuine wish for their success].
{{sender_name}}
⚙️ Engine Configuration
engine_config:
daily_send_limit: 50 # per sender domain
warmup_period_days: 14 # for new domains
reply_auto_stop: true # stop all steps immediately on reply
unsubscribe_handling: auto_remove # remove from all sequences instantly
bounce_threshold: 0.03 # pause if >3% hard bounce rate
spam_complaint_threshold: 0.001 # pause if >0.1% complaint rate
a_b_testing:
active: true
split: 50/50
minimum_sends_per_variant: 100
winner_determination: reply_rate # not open rate
auto_promote_winner: false # human must approve → [[07-Human-Review-Gates]]📊 Sequence KPIs
Tracked in 09-Metrics-and-Self-Improvement.
| Metric | Benchmark | Target | Alert |
|---|---|---|---|
| Open rate (Step 1) | 30–40% | ≥45% | <25% |
| Reply rate (all steps) | 3–5% | ≥7% | <2% |
| Positive reply rate | 1–2% | ≥3% | <0.5% |
| Meeting booked rate | 0.5–1% | ≥2% | <0.3% |
| Unsubscribe rate | — | <0.5% | >1% |
| Bounce rate | — | <2% | >3% |
📎 Related Files
- 01-Process-Manifest — Stage S6 definition
- 06-Personalization-Agent — Generates the hook for Step 1
- 07-Human-Review-Gates — Gate #2 approves template changes
- 08-Reply-Classification-Agent — Handles all replies from this sequence
- 09-Metrics-and-Self-Improvement — Tracks sequence performance + A/B tests