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 startLoading…