Generating one website from a prompt is a solved problem and has been for a while. Generating a thousand in one batch is a different exercise, because the failure mode changes. With one site you worry about quality. With a thousand you worry about sameness — and sameness is much harder to detect from inside the system that produced it.
The batch is the unit, not the site
Our first version generated each site independently. Every individual result was fine. Viewed as a grid of thumbnails, the batch was obviously machine-made: the same three-column feature section, the same hero rhythm, the same six adjectives. Nothing was wrong with any one site, and everything was wrong with the set.
So we made the batch the unit of evaluation. Every generated site is diffed against the others in its run across layout archetype, palette distance, type pairing and copy n-grams. If a site lands too close to a sibling, it is regenerated with those regions constrained.
The rule that fixed most of it: no output may share more than a three-word sequence with any other output in the same batch, outside of proper nouns.
Compositional grammar, not template library
A template library has a ceiling equal to its size. We instead defined a grammar of section types, each with valid neighbours and valid internal arrangements, and sample compositions from it. The number of reachable layouts is combinatorial rather than enumerated, which is what stops the ceiling from existing.
Where it costs money
- Copy generation dominates token spend; layout selection is nearly free.
- Regeneration from similarity checks adds roughly 8–12% overhead on a large batch.
- Image treatment, not image generation, is where quality is won or lost.
- Build and deploy parallelise cleanly and stop being the bottleneck above about 50 sites.
What we would do differently
We spent too long improving individual site quality before building batch-level evaluation. The batch metrics would have told us which individual improvements actually mattered. If you are building something similar, build the measurement first.