# AI Content Policy ## Requirements All warmup email subjects and bodies must be: - Professional B2B tone - Contextually appropriate to `industry` (Childcare, SaaS, Finance, etc.) - Free of spam trigger words (see blocklist) - **Free of placeholders** — no `[Name]`, `[Your company]`, `{{variable}}`, etc. - Plain text only (MVP) — no HTML, images, tracking pixels, or links in warmup mail - Unique enough across sends — no identical consecutive bodies ## Forbidden patterns (auto-reject) Regex / validation pass after generation: ``` \[.*?\] # bracket placeholders \{\{.*?\}\} # mustache <.*?@.*?> # angle email placeholders in body \[Your .*?\] \[Director .*?\] \[Company .*?\] INSERT .* HERE TODO lorem ipsum click here act now limited time free money guarantee ``` ## Spam trigger word tiers ### Tier 1 — hard block (regenerate) `free`, `winner`, `cash`, `viagra`, `casino`, `lottery`, `act now`, `100% free`, `risk-free` ### Tier 2 — soft warning (regenerate once, then flag for review) `urgent`, `limited`, `offer`, `discount`, `sale`, `promotion`, `buy now` ## Generation pipeline ```mermaid flowchart LR A[AI Generate] --> B[JSON Parse] B --> C[Placeholder scan] C --> D[Spam word scan] D --> E[Length check] E --> F{Pass?} F -->|No| G[Regenerate max 3] F -->|Yes| H[Store + Send] G --> A ``` ## Prompt guidelines (system) ### Initial email - 80–150 words - Specific but generic business topic (scheduling, follow-up, intro) - Realistic subject ≤60 chars - No signatures with fake phone numbers - Sign off with first name only if name provided in mailbox profile (future) ### Reply - 40–100 words - Reference specific points from incoming body (quote or paraphrase) - Natural continuation, not sales pitch - `Re:` subject handling ## Content diversity | Technique | Purpose | |-----------|---------| | Temperature 0.8–0.9 | Variation | | Industry rotation | Context diversity | | Thread memory (last 3 bodies) | Avoid repetition in replies | | Optional spintax-free rewriting | Structural variation (phase 2) | ## Mailbox profile (future) ```json { "senderName": "Jon", "companyName": "FillCare", "title": "Co-founder" } ``` AI uses real values instead of inventing or placeholdering. ## Failure handling | Failure | Action | |---------|--------| | 3 validation failures | Skip send slot; log `ai_validation_failed` | | API down | Retry with backoff; don't send template fallback | | JSON parse error | Retry once with stricter prompt | ## Audit Store `contentVersion` and `validationResult` on `WarmupLog` for debugging disputes. ## Why no links in warmup Tracking links and URLs are strong spam signals during reputation building. Warmup content should be link-free until placement stabilizes (phase 2: optional benign links).