Outreach templates

A/B copy for cold outreach via form (form_outreach.py CLI) and email (Reply.io sequences — wire-up TODO). Active variants are selected weighted by weight_pct; weights should sum to 100 per channel but the system warns rather than blocks.

Supported placeholders (substituted at send time):
Per-row: {company_name}, {first_name_clause} (= <name> or empty), {first_name}, {preview_url}, {url}, {sender_email}.
Industry-derived (auto-hydrated from outreach/industries.py): {plural}, {audience}, {stat}, {visibility_link}, {visibility_line}, {visibility_line_block} (preceding newline included), {query_example}, {competitors}, {geo_example}.
Email channel only: {first_line_observation} (per-site cold-email opener; edited on each /site card).
Anything else will appear literally in the sent message — the preview highlights unknowns in yellow.

Form sender variables

read by form_outreach.py at run start

Loading…