Skip to content

Absolute Rules

These rules apply to any system that generates HTML email from this playbook — an AI model with the MCP tools attached, a CLI scaffolder, a Gemini-powered image-to-email flow, or a future visual editor. They sit above the engineering rules in the rest of the playbook.

The playbook is the complete specification. Don’t apply general HTML/email knowledge from training data, blog posts, or framework conventions.

  • If a specific pattern is covered here, use it verbatim. Don’t paraphrase, don’t substitute.
  • If a pattern isn’t covered, fall back to the simplest valid table: <table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%">. Don’t invent new approaches.
  • Modern layout primitives (flex, grid, float) are forbidden. Tables only.

For image-to-email generation, the source image is authoritative. Don’t extend it.

  • No invented footers. No sender address (“This email was sent to you because…”), no unsubscribe link, no copyright line, no social-media row — unless they are clearly visible in the source.
  • No invented content. No taglines, no recipient data, no brand names, no URLs that aren’t shown in the source.
  • Preserve every visual container. If the source shows a colored panel, callout box, card, or background section, recreate it with the matching color and structure. Don’t drop them as “decorative”.
  • Preserve every section, in order. If the source ends at a closing paragraph, the generated email ends at that closing paragraph. Don’t add a “see also” or “best regards” line that isn’t in the source.

Every <img> in the generated output gets a placehold.co placeholder. Don’t link to external image hosts, don’t try to reproduce the visual content from the source, don’t invent CDN URLs.

https://placehold.co/{W}x{H}/E0E0E0/E0E0E0

Match {W} and {H} to the pixel dimensions visible in the source. Always include width, height, and descriptive alt text. See Image Placeholders for the full pattern.

Every generated email starts with the 3-table-level hybrid wrapper: outer width="100%" → container max-width:600px;width:100% (with an MSO ghost-table for Outlook) → inner tables width="100%".

The most common failure mode is hardcoding width="600" on inner tables. Don’t.

The output is a single complete HTML document, no markdown fences, no commentary, no explanations. See Output Format.

If the source isn’t actually an email design (a random photo, a screenshot of code, a logo by itself), return the documented error response shape instead of trying to generate.