sequence sent the breakup email, then the agent started a new sequence with the same lead the next day - no global...
Fixes an SDR agent that re-enrolls a lead in a new sequence immediately after a breakup or sequence end, because no global cool-down is enforced across sequences. Use when leads get back-to-back sequences with no rest period. Not for duplicate sends inside one sequence, or for pacing errors in wait steps.
TL;DR
Add a global cool-down list that every enrollment step must check: when a sequence ends - especially a breakup - the lead goes on the list for a set period, and no new sequence can enroll them until it expires. Cool-down is per person across all sequences, not per sequence.
sequence sent the breakup email, then the agent started a new sequence with the same lead the next day - no global cool-downSteps
Create a cool-down store keyed on lead id with an expiry timestamp, and write to it every time a sequence ends for a lead - breakup, completion, or manual exit. Expected: ending a sequence for a test lead creates a cool-down row with the right expiry, visible in the store.
Put a cool-down check at the top of every enrollment path, across all sequences and all agents. Enrollment of a cooled-down lead is blocked and logged. Expected: attempting to enroll a cooled-down lead fails with a clear "in cool-down until [date]" reason.
Set the cool-down length deliberately - 30 to 90 days is typical after a breakup - and make it configurable per exit reason rather than one hardcoded number. Expected: a breakup writes a longer cool-down than a simple sequence completion, and both are visible in config.
Backfill cool-downs for leads whose sequences ended recently but who are already enrolled in new ones, and pause those enrollments. Expected: a scan finds leads enrolled within the cool-down window of a prior sequence end, and they are pulled out.
Add the cool-down check to the agent's pre-enrollment checklist so it runs even when enrollment is triggered by a CSV upload or a webhook, not just the normal flow. Expected: uploads and webhook enrollments hit the same check - test each trigger path once.
Use this when
- a lead finishes or breaks up from one sequence and immediately enters another
- there is no rest period enforced between sequences
- multiple sequences or agents can enroll the same lead independently
Not for this skill when
- the same lead is in two sequences at the same time - that is a concurrent-enrollment bug
- one sequence sends too fast internally - that is a wait-step pacing problem
- a lead asks to be re-engaged - explicit re-engagement overrides cool-down by design
Variant phrasings
- breakup email followed by a new sequence the next day
- no global cool-down between sequences
- lead re-enrolled right after opting out of a sequence
- sequences stacking back to back with no rest
Why it happens
Each sequence is configured as its own world with its own end, and "enroll" logic lives next to each sequence rather than above all of them. Nothing remembers that this person just got the breakup email yesterday, because the new sequence's enrollment step only looks at its own list. Cool-down has to live at the person level, above every sequence.
Edge cases
- A lead replies asking to talk during cool-down - human replies always override; the cool-down blocks automated enrollment, not conversations.
- Different exit reasons deserve different cool-downs - a positive "not now, try Q3" is shorter than a breakup, and a hard opt-out is permanent suppression instead.
- Cool-down keyed on email breaks on job changes - prefer the lead id and carry the flag across record merges.
- Evergreen nurture tracks are sometimes exempt by policy - if so, write the exemption down and keep breakup cool-downs intact.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_5Ts-2RYru-y9cHPkHhp4kg