Instead of writing pages one at a time, I built a system that extracts what the site already says, organizes it into reusable content entities (features, benefits, CTAs, pricing, testimonials), and lets an LLM compose new pages from those entities. The goal: make content authoring data-driven instead of ad hoc.
1
Extraction
Crawl the site and use an LLM to extract structured entities from each page. This turns unstructured marketing copy into machine-readable data.
2
Canonical Model
A deduplicated entity database that spans pages and locales. One source of truth for what the company says about each product, feature, and benefit.
3
Generative Content
An LLM assembles page layouts from real entities in the database. New pages are composed from verified content, not invented from scratch.
4
Adaptive Layer
Personalization based on audience and context at runtime. This layer is planned but not yet built. The architecture is designed to support it.
System Pipeline
COMPOSITOR (Layer 1)
========================
URLs ----> [ Crawler + LLM Extractor ]
|
v
structured entities
|
v
+-------------+
| Postgres |
+------+------+
|
+------------+------------+
| |
v v
DASHBOARD (Layer 2) GENERATION (Layer 3)
==================== ====================
Entity Browser scaffold(product, audience, locale)
Heatmaps |
Product DNA v
Knowledge Graph +-----------------------------------+
| hero | features | pricing | cta |
+-----------------------------------+
I designed and built layers 1 through 3. The key design decision was defining clear boundaries between layers so each one can be changed independently.