The content / renderer pivot
One structured content model → distinct sites, instantly. No LLM writes the HTML — a renderer combines content × theme × hero × section variants × motif × photos.
📷 With real photos in the slots (image wiring)
Finished look: the renderer now fills hero / about / gallery / portrait-tile / testimonial slots with real images (here: stock photos for the demo — production uses the client's brand assets → AI-generated → stock). Empty slots fall back to the themed placeholder, so a site looks great with or without photos.
🆕 Real LLM-written content (Phase 2a)
These three were generated end-to-end: the LLM wrote the headline, services, about story, and FAQ from the Business Profile facts — then the renderer themed it. Honesty held: the stats (18+ years, 4.9★, 187 reviews) come from real facts, "Since 2006" was computed from years-in-business, and nothing was fabricated. (Generated via Gemini in local test; Claude is primary in production.) Scroll for the count-up; hover the cards. Gray blocks = image slots (next).
7 themes — different structures (sample content)
Same theme — swipe the hero