Keep decisions explicit.
Brand, title, hero, sections, cards, CTA, language and metadata live in JSON rather than being scattered through markup.
CASE STUDY / CONTENT SYSTEMS
A validation-first static-page pipeline where content stays reviewable as structured data and the final HTML is deterministic, portable and safe to hand off.
THE PROBLEM
When a landing page is generated directly from a prompt, brand copy, links, metadata and layout decisions often collapse into one opaque artifact. That makes approvals, revisions and automation brittle. Brief to Page separates the content contract from rendering: a small JSON brief can be reviewed first, validated in CI, and rendered only after it passes defined boundaries.
The output must be a self-contained HTML file with no external runtime dependency, while unsafe URLs, malformed palette values and accidental source-file overwrite fail before delivery.
Brand, title, hero, sections, cards, CTA, language and metadata live in JSON rather than being scattered through markup.
--validate-only checks container shapes, palette values, CTA schemes, canonical URLs, OG image URLs and language tags without writing HTML.
The result is one responsive HTML file with embedded CSS, escaped content and no JavaScript dependency.
CTA links allow only local paths, anchors, HTTP(S), mailto and tel. Canonical and OG image metadata require absolute HTTP(S) URLs.
The output path is resolved and compared against the input path before rendering, protecting the JSON source from accidental replacement.
Pages can declare simple language tags such as ja, en and en-US without opening the HTML attribute to arbitrary injection.
Title, description, optional canonical URL and optional Open Graph image are generated from the same reviewable brief.
A pull request can validate a campaign brief before a separate build step emits the final HTML artifact.
The project runs regression tests across Python 3.10, 3.12 and 3.13 in GitHub Actions.
This pattern also works well with AI-assisted content generation: an AI can propose the brief, but the deterministic validator defines what is acceptable before HTML is emitted.
Clients can review copy, CTA targets and page sections as structured content before layout generation.
The same brief format can be produced from forms, spreadsheets, internal tools or an AI workflow without coupling those systems to HTML internals.
The delivered artifact is a single file, while the source brief remains readable and editable for the next iteration.
I can adapt the same structured-brief pattern to landing pages, campaign variants, product pages or internal content pipelines.