SITEFORGED.
20 landing pages for an online English school × RU / EN / UK. One template, 20 different designs and 60 unique LLM packs. Every landing has its own offer, copy and voice — not a translation from Russian.
Role
Product, generator, LLM, UI, deploy
Year
2026
Status
Live demo · 2026
Public demo for a fictional school. 60 pages and 60 screenshots. Copy by fal.ai, design by the local generator. Domains, payments and production wiring are out of scope.

20
landings
3
languages
60
pages
60/60
unique titles
Every landing sounds like a separate product
The LLM writes a separate pack for every offer and language: lead, benefits, curriculum, pricing, reviews and FAQ. EN/UK are not translations of RU. Average block similarity is 0.2%; full-text similarity is 0.6%.
0.2%
similarity
60/60
titles
$0.137
cost
Task
20 landing pages for an online English school in three languages. One template, but every landing must look and sound like a separate product: its own offer, design, copy, pricing and reviews. Manual copywriting does not scale, and identical translations kill uniqueness.
Solution
A theme generator plus LLM packs. 20 offers, 20 combinations of palette, layout, fonts, menu and cards. For every offer × language pair, fal.ai writes a separate pack; the renderer builds 60 pages, the case page and the admin. Cached and capped.
Five steps, 60 pages
Offer → LLM pack → theme → render → publish.
Offers
20 niches: from scratch, IT, IELTS, kids, legal, pronunciation. Each has its own audience and goal.
LLM pack
A separate copy pack for every offer and language. EN/UK are written natively, not translated from RU.
Theme
Palette, fonts, grid, menu, cards and buttons. 20 combinations, no manual layout.
Render
60 pages: /ru/, /en/, /uk/. Unique titles and descriptions, hreflang, sitemap.
Publish
Admin with an LLM checkbox, 60 screenshots, a 3-language case page, static deploy.
pack = llm.ask(prompt) # offer × language
pack = parse_pack(pack) # strict fields
validate_pack(pack) # counts + no empty blocks
site = merge(base_i18n, pack) # per landing
render(theme, site) # 3 languages, 60 pagesStack
The LLM returns structured fields, not free text: lead, 4 benefits, 6 modules, 3 plans, 3 reviews and 5 FAQ. The parser checks counts and prevents pages with empty blocks.
Decisions
A separate pack, not a translation
EN/UK are written natively. Otherwise you get the same text with a different vocabulary — and uniqueness collapses.
Strict schema, not free text
Fields and counts are validated by the parser. If the model underdelivers, the job retries instead of shipping a broken page.
Design randomization stays
The LLM does not touch layout: theme, palette, fonts and menu are chosen by the generator.
Cache and budget
60 packs, 137 requests, $0.137. A repeat run is almost free; the hard cap is 300 requests.
Features
20 offers × 3 languages
60 unique LLM packs
EN/UK are not translations
20 palettes and layouts
5 menu and card styles
60/60 unique titles
hreflang, sitemap, robots
Admin with an LLM checkbox
Cache and request cap
60 screenshots
3-language case page
Static deploy
Interface
Real screenshots: RU, EN, UK and the admin.




Numbers
60 pages, 60/60 unique titles and descriptions, 0.2% similarity, 137 requests, $0.137. Jaccard 4-grams on RU; EN/UK are separate packs.
60
Pages
60 / 60
Unique titles
0.2%
Block similarity
0.6%
Full-text similarity
137
LLM requests
$0.137
LLM cost
Need a landing generator for your niche?
I can show how to build 20 landings × 3 languages, plug in an LLM and get measurable uniqueness without manual copywriting.