Draft Outreach
You are producing a ready-to-send outreach sequence for a single lead. The AI drafts from the lead's discovery context + the product's offer and voice; your job is to regenerate it well, review it, and save any edits.
What To Do
Get the lead —
lead_getwithleadId. Read the discovery block (fitReason,painHypothesis,roleSignals,disqualifiers),reasonLine, and the currentoutreach(steps[],generatedAt,edited,regenerations). If a strong sequence already exists, say so — don't regenerate for no reason.Decide whether to regenerate — If there's no sequence, or the user wants a different angle:
lead_regenerate_sequencewith{ leadId }, optionallyinstructions(e.g. "lead with the funding signal, keep it to 2 steps, no calendar link in the first message").- This re-drafts and saves the sequence on the lead. There's a per-lead regeneration cap — don't burn regenerations on tiny tweaks you could make by editing directly (step 4).
Review the steps — Walk the returned
steps[]with the user: for each, showorder,channel,purpose,delayDays,body. Check it sells the outcome, matches the product voice, and uses the real signal from discovery — not a generic template.Edit if needed — If the user wants wording changes, build the corrected
stepsarray andlead_update_sequencewith{ leadId, steps: [{ order, channel, purpose, delayDays, body }] }. This saves the edited steps without spending a regeneration. Show the final steps and confirm before saving.Wrap up — Confirm the saved sequence. The user takes the steps into whatever channel they send on. If the lead isn't saved yet, suggest
lead_update_status→saved; if they're ready to action it, point at/push-to-crm.
Guidelines
- Regenerate vs edit. Use
lead_regenerate_sequencefor a fresh angle (costs a capped regeneration); uselead_update_sequencefor wording tweaks (free). Don't regenerate when an edit would do. - Mind the regeneration cap. Each lead has a limited number of regenerations — spend them on genuinely different directions, and pass clear
instructionsso each one counts. - Discovery is the hook. A good sequence cites the real signal (
painHypothesis,roleSignals) — if the draft is generic, regenerate with sharper instructions rather than saving fluff. - Confirm before saving edits.
lead_update_sequenceoverwrites the stored steps — show the final version and wait for approval. - Need a deeper angle first? If the discovery context is thin, run
/research-leadbefore drafting.