---
name: subject-line-spintax-generator
description: Writes cold email subject lines as spintax that produces many distinct, natural renders from a small number of structural families. Output is strip-proof (no spaces at option edges), safe when a merge field is empty, and given in both double-brace {{RANDOM|a|b}} and single-brace {a|b} syntax. Use when the user asks for subject lines, subject spintax, more subject variation for high-volume sending, or wants to replace subjects that repeat too often.
---

# Subject line spintax generator

You write subject lines for cold email as spintax. The goal is two things at once: few structural families (so results can be measured per family) and many surface renders per family (so the same exact subject does not repeat thousands of times a day). Every render must be a subject a real person would type.

## Step 1. Brief

Ask for, or infer:

- What the email is about, in one sentence, and who receives it (role, company type).
- Merge fields available in the lead file, with exact names (`firstName` or `first_name`, `companyName` or `company`).
- The sending tool (double-brace or single-brace syntax).
- Daily volume. Under a few hundred a day, 2 to 3 families with a handful of options are enough. At thousands a day and above, each family needs thousands of renders or more.

## Step 2. Pick 3 to 8 structural families

A family is a sentence shape, not a wording. Examples:

| Family | Shape | Sample render |
|---|---|---|
| Name + question | `{name}, quick question` | Sarah, quick question |
| Topic noun | `{topic} at {company}` | ticket backlog at Northwind |
| Short question | `{open question}?` | still hiring for IT support? |
| Two words | `{noun} {noun}` | support coverage |
| Peer reference | `{peer type} like {company}` | teams like Northwind |

In our sends, subjects built on the first name often get more replies than subjects built on the company name. Test that on your list rather than assume it.

## Step 3. Write the spintax

Rules for every family:

1. Lowercase or sentence case, 2 to 6 words, no punctuation except `?` or `,`.
2. No fake thread markers: no `Re:`, `Fwd:`, "following up" on a first email.
3. No hype or spam words: free, guarantee, urgent, act now, $, %, !!!, all caps.
4. No links, domains or emojis.
5. **Strip-proof:** no option starts or ends with a space. Put spaces in the literal text between blocks: `{{RANDOM|quick|short}} question`, never `{{RANDOM|quick |short }}question`.
6. **No empty options.** Offer a shorter complete option instead of `""`.
7. **Empty fields:** on double-brace tools give each variable a one-level fallback (`{{firstName|there}}`). On single-brace tools use bare variables and tell the user to drop leads with empty fields before import. Never nest a variable inside a fallback.
8. Every option within a block must fit every option in the neighbouring blocks. Read 10 random renders per family; if one reads like token salad, restructure the family.

## Step 4. Count and check

For each family, multiply the option counts of its blocks to get the number of distinct renders (ignoring merge fields). Report the count per family and the total. Then render 10 samples per family with filled fields and 3 with empty fields.

## Output format

For each family: name, shape, spintax in double-brace syntax, the same in single-brace syntax, render count, 5 sample renders. Then a total line and the list of merge fields used.

## Rules

- Spintax fights exact repetition. It does not hide the fact that thousands of similar emails go out from the same infrastructure; keep volume per family moderate and rotate families.
- Keep the family label in the campaign or variant name so replies can be counted per family.
- Test one send per family to your own mailbox before launch and read the rendered subject. Some tools preview subjects with raw spintax.

## Example

Input: IT support for 20-200 person companies, fields `firstName`, `companyName`, Instantly.

Output (one family):

- Double-brace: `{{firstName|there}}, {{RANDOM|quick|short|small}} {{RANDOM|question|one}}`
- Single-brace: `{{first_name}}, {quick|short|small} {question|one}`
- Renders: 6. Samples: "Sarah, quick question", "Sarah, small one", "there, short question".
- Note: "there, short question" reads badly; for this family, drop leads without a first name instead of using the fallback.
