drip-pacing-intelligence
Installation
SKILL.md
Drip Pacing Intelligence
You are an expert in building intelligent sequence timing for sales automation. Your goal is to help developers create systems that dynamically adjust outreach pacing based on prospect engagement.
Why Pacing Matters
Static Pacing Problems
Fixed schedule:
Day 1 → Day 3 → Day 7 → Day 14
What happens:
- Hot prospect: Cooled off waiting 7 days
- Cold prospect: Annoyed by Day 3 message
- Busy prospect: Missed all messages during travel
Result: Lower response rates, higher opt-outs
Intelligent Pacing Benefits
Dynamic adjustment:
- Engaged? → Accelerate
- Quiet? → Decelerate
- Signals? → Respond immediately
Result: Right message, right time, right frequency
Engagement Signals
Positive Signals (Accelerate)
High intent:
- Email opened (multiple times)
- Links clicked
- Attachment downloaded
- Website visited
- Content engaged with
- Partial form filled
Action: Shorten intervals, add touches
Neutral Signals (Maintain)
Normal behavior:
- Email opened once
- No response yet
- Profile viewed (LinkedIn)
- Website bounce
Action: Stay on current pace
Negative Signals (Decelerate)
Low engagement:
- No opens
- Unsubscribes from marketing
- Marked as spam
- Auto-reply received
Action: Lengthen intervals, reduce touches
Pacing Algorithms
Engagement Score-Based Pacing
Calculate engagement score (0-100):
+10: Email opened
+20: Link clicked
+30: Website visit
+40: Content downloaded
+50: Reply received
-10: Email ignored (after 48h)
-20: Unsubscribe
-50: Spam complaint
Pacing rules:
Score > 70: Next touch in 24h
Score 40-70: Next touch in 48-72h
Score 20-40: Next touch in 5-7 days
Score < 20: Pause sequence, try different approach
Adaptive Interval Calculation
def calculate_next_touch(prospect):
base_interval = prospect.sequence.default_interval
engagement = calculate_engagement_score(prospect)
last_activity = prospect.last_engagement_at
# Engagement multiplier
if engagement > 70:
multiplier = 0.5 # Half the time
elif engagement > 40:
multiplier = 1.0 # Normal pace
elif engagement > 20:
multiplier = 1.5 # Slow down
else:
multiplier = 2.5 # Significantly slow
# Recency adjustment
hours_since_activity = hours_since(last_activity)
if hours_since_activity < 4:
# Very recent activity—strike while hot
return timedelta(hours=2)
interval = base_interval * multiplier
return interval
Event-Triggered Acceleration
Immediate response triggers:
- Website pricing page visit → Trigger within 1 hour
- Demo video watched >50% → Follow up same day
- Competitor comparison viewed → Priority outreach
- Multiple page views in session → Real-time engagement
"I noticed you were just checking out our pricing—
any questions I can answer?"
Sequence Adjustment Patterns
The Acceleration Pattern
Standard sequence:
Day 1 → Day 4 → Day 8 → Day 14
Engagement detected (Day 2 email opened, link clicked):
Day 1 → [Engagement] → Day 2 (accelerated) → Day 4 → Day 8
New sequence:
Day 1 → Day 2 → Day 5 → Day 10
Message adjustment:
"I saw you checked out [content]. Wanted to follow up
while it's fresh—did that answer your questions?"
The Deceleration Pattern
Standard sequence:
Day 1 → Day 4 → Day 8 → Day 14
No engagement detected:
Day 1 → Day 4 (no open) → Day 10 (extended) → Day 20
Message adjustment:
"I've reached out a couple times—I know inboxes get
crowded. If the timing isn't right, no worries. But
if [problem you solve] is on your radar, I'd love to
help when you're ready."
The Surge Pattern
High engagement burst detected:
- 3 emails opened in 1 hour
- Website visit
- LinkedIn profile view
Trigger immediate outreach:
"Hey [Name], looks like you're doing some research—
perfect timing. Would a quick call be helpful, or
do you prefer I send some info?"
Multi-Channel Pacing
Channel Coordination
Don't pile on. Coordinate across channels:
Day 1: Email
Day 3: Email (if opened Day 1)
Day 3: LinkedIn (if no open on Day 1)
Day 6: SMS (if engagement on either)
Day 8: Call (if high engagement)
Never:
- Email + SMS + Call same day
- Multiple touches in same channel < 48h apart
Channel-Specific Pacing
Email:
- Minimum 48h between sends
- Max 3 emails per week
- Extend if no opens
SMS:
- Minimum 3 days between sends
- Max 2 per week
- Stop if no response after 2
Phone:
- Minimum 5 days between attempts
- Max 3 per sequence
- Voicemail counts as attempt
Handling Time Zones
Optimal Send Time
Adjust for recipient timezone:
- Morning: 8-10am local
- Afternoon: 2-4pm local
- Never: Outside 8am-8pm local
If timezone unknown:
- Infer from area code
- Infer from email domain
- Default to safe window
Weekend/Holiday Pacing
Pause logic:
- No outreach Saturday-Sunday
- Check for holidays
- Resume Monday morning
Adjustment:
If Day 4 falls on Saturday:
→ Move to Monday (Day 6)
→ Adjust subsequent touches proportionally
Sequence Modifications
Dynamic Sequence Selection
Based on engagement, switch sequences:
Low engagement (Score < 30):
→ Switch to "Break-up" sequence
→ Fewer touches, more spaced out
→ Different messaging approach
High engagement (Score > 70):
→ Switch to "Fast-track" sequence
→ More frequent touches
→ More direct CTAs
→ Add phone touches
Touch Type Modification
Based on engagement patterns:
Opens but no clicks:
→ Make next email shorter
→ Stronger CTA
→ Single focus
Clicks but no response:
→ Add different channel
→ Address potential objection
→ Offer easier next step
Implementation
State Management
{
"prospect_id": "12345",
"sequence_id": "enterprise_outbound",
"current_step": 3,
"engagement_score": 65,
"pacing_status": "accelerated",
"next_touch_at": "2024-01-16T10:00:00Z",
"last_engagement": {
"type": "email_click",
"timestamp": "2024-01-15T14:30:00Z",
"content": "pricing_link"
},
"pacing_history": [
{"step": 1, "interval_days": 0, "actual_days": 0},
{"step": 2, "interval_days": 3, "actual_days": 2},
{"step": 3, "interval_days": 3, "actual_days": 2}
]
}
Pacing Rules Engine
rules = [
{
"condition": "email_opened_count >= 3 AND hours_since_last_open < 24",
"action": "accelerate",
"modifier": 0.5
},
{
"condition": "no_opens AND step >= 3",
"action": "decelerate",
"modifier": 2.0
},
{
"condition": "website_visit AND page == 'pricing'",
"action": "immediate_touch",
"delay_hours": 2
},
{
"condition": "out_of_office_detected",
"action": "pause",
"resume_date": "ooo_return_date + 1"
}
]
Metrics & Optimization
Pacing Effectiveness
Measure:
- Response rate by pacing tier
- Opt-out rate by pacing tier
- Time to conversion by pacing
- Engagement score trends
Compare:
- Static vs dynamic pacing
- Different pacing algorithms
- A/B test interval changes
Continuous Learning
Track outcomes:
- Which adjustments led to responses?
- What pacing converts best?
- When do prospects disengage?
Feed back:
- Update pacing rules
- Refine engagement scoring
- Improve timing predictions
Weekly Installs
6
Repository
louisblythe/salesskillsGitHub Stars
11
First Seen
Mar 18, 2026
Security Audits