Docs
/

Email Sequencer

Email drip-sequence and cadence designer for sales & lifecycle marketing: buildSequence turns a goal (cold-outreach, onboarding, re-engagement, trial-nurture, webinar, abandoned-cart, renewal...

email-sequencer

An intelligent microservice adapter pack that designs email drip sequences and send cadences for sales engagement and lifecycle marketing. Every tool has a deterministic, offline heuristic/template core; the generative tools (buildSequence, previewStep) additionally use an optional LLM path to rewrite subjects/copy and silently fall back to the templates when no model is reachable. Hybrid results are tagged { mode: 'heuristic' | 'llm' }.

Tools

ToolWhat it does
buildSequenceTurns a goal (cold-outreach, onboarding, re-engagement, trial-nurture, webinar, abandoned-cart, renewal, upsell, event-followup, or free text) into a multi-touch drip with day offsets, channels, subject lines and body outlines. Hybrid.
addBranchForks an existing sequence on a condition (opened / not-opened / clicked / replied / no-response / bounced / unsubscribed) into a recommended branch path, with an exit policy.
cadenceSpaces N touches over a windowDays window using a curve (linear, front-loaded, back-loaded, fibonacci) and returns day offsets + gaps.
previewStepRenders one step's subject, preview text, CTA and estimated read time. Hybrid.
followupTimingRecommends the next-send delay, priority and best send window from prior engagement signals.

Usage

import pack from './index.js';

// Build a 5-touch cold-outreach drip
const seq = await pack.adapters.buildSequence({ goal: 'cold-outreach', steps: 5, audience: 'CTO', product: 'Leumas' });
// -> { mode, goal, tone, stepCount, totalDays, sequence: [{ step, dayOffset, channel, subject, bodyOutline, cta }, ...] }

// Fork it when a lead clicks
pack.adapters.addBranch({ sequence: seq.sequence, condition: 'clicked', afterStep: 2, product: 'Leumas' });

// Recommend when to follow up next
pack.adapters.followupTiming({ engagement: { opened: true, clicked: true, lastOpenHour: 8 } });

LLM / hybrid mode

Offline (default) everything runs on deterministic templates. When an OpenAI-compatible endpoint or a local Ollama server is configured (see ../_shared/llm.js), buildSequence and previewStep ask the model to rewrite only the copy (subjects + body lines) while keeping the heuristic's day offsets, channels and structure. Any model failure falls back to the template core — a down model never throws.

DRY boundary notes

  • Not a scheduler: day offsets are plain integers. cron owns interval-string parsing ('5m');

datetime/ical own calendar math and event files. This pack plans what to send and when, not wall-clock scheduling.

  • Not a text toolkit: nlp / a-text own raw string transforms. Copy here is domain-specific

marketing templating, not general text processing.

  • Self-contained: no cross-pack imports except ../_shared/llm.js.
Source shared/engines/adapters/domain/email-sequencer/README.md (no-git)markdownjson
Generated from the Leumas repository. Every page cites the file it came from.leumas.techllms.txt