LAUNCHPAD
Ad Generator
An ad is not produced in one step — it is cooked. This board is the recipe: 7 stages, each one consuming the artefact you select in the stage before it. The campaign brief feeds the promises, a chosen promise feeds the hooks, a chosen hook becomes a story, the story becomes a production design, the design produces the lead-image plates, and the selected plates become the cut that ships. Every artefact below is real work that already exists, shown with its path or live link, its true count, and an explicit statement of what is still missing. Review, comment and vote — then select what carries forward.
FlyOnTime: Predicts flight delays hours before the airline announces them.
Canonical promise: FlyOnTime predicts flight delays hours before the airline announces them.
This is the first stage — it consumes nothing upstream. Everything downstream inherits what is locked here.
Readiness: Rich but unassembled — the promise, the pillars, the personas and the constraints each live in a different file.
Exit criteria: A locked canonical product promise, a named target persona set, and the register constraints (what the ad may never say or imply).
601+ lines: Foundation, Personality, Colour, Typography, §5 Photography & Imagery, Logo, UI, Motion, Dark Mode, Accessibility, Brand Application, Outstanding decisions, Provenance.
12 fields each (segment, trip cadence, departure context, anxiety, WTP stance, price sensitivity, age band, household role, tech savvy, lever). Example AC-01 'Anxious away-city organiser (base)'.
Lives inside a campaign JSON as `product_promise`, not in a standalone company profile.
Register constraints for ads. Companion notes live under marketing/casting-board/docs/ (brand exception, synthetic-creative risk, targeting amendment).
DATA-MODEL.md, LOOP.md, INSTRUMENTATION.md, TRAINING-ROWS.md, schema.sql.
The shipping product the ads must describe accurately.
Gap: No single machine-readable company profile exists. The promise string sits inside a campaign JSON, the 4 pillars inside hooks.json, and positioning is spread across ~23 markdown docs; an assembled company.json has never been built. The mandatory disclaimer ('AI-generated concept. Not approved for publication.') exists only per-asset in gallery-log.json, not as a central constant.
Content (artefacts, counts, paths, gaps) is authored in lib/ad-generator/content/ and is never written by this page. Votes, comments and selections persist server-side per project. Rankings state their basis — only human-rated results are shown as measured.