#2017 feat(nurture): arm reactivation-after-7-days (DRIFTED)
Opened by keeb · 9/4/2026
Parent: the product-nurture epic. Arms whiteboard flow #5 — DRIFTED.
They were here, they were using it, and then they stopped. Seven days of silence from someone with a habit is the strongest signal in the set, and the message writes itself: your quest is waiting.
Qualification
reactivation_7d: ≥3 lifetime active days, and zero activity in the trailing 7
days. Active-day membership comes from active_days_by_id, which folds event,
CLI and grant-only presence — so it does not mistake "did not run a command"
for "was not here".
occurrenceKey is the UTC month in which the dormancy began, with a 90-day
cooldown on top. Someone who drifts, returns, and drifts again is a legitimate
second send months later; someone who drifts once is not five sends.
The specific risk
This flow's cold-start backlog is the largest of all six — most accounts that ever existed are dormant by this rule. Arming it is the real test of the seal. Before flipping:
- Run the projector with the flow armed and sending disabled.
- Read the sealed count off
/admin/nurture. - Sanity-check it against total accounts. If the seal claimed materially fewer rows than there are dormant operatives, the seal is broken and this flow must not be armed.
Second risk: the quest may not be waiting
The copy points at Genesis progress. Verify the CTA is true for a dormant operative — a fully completed pass has nothing waiting, and promising otherwise is worse than not writing. Either exclude completed passes at qualification or write copy that holds either way.
Verification
- Fixture cases either side of the 7-day boundary, and one where activity is grant-only (must count as active).
- The cooldown: a second dormancy inside 90 days produces no row; outside it, one row.
- In production: arm, watch the first week's sends in the panel, confirm every
recipient's
lastActiveAtreally is ≥7 days old by hand-run query.
In Progress
Click a lifecycle step above to view its details.