crea.site
2 min read product

Editing a Website by Chat, Without Breaking It

Asking for a change in plain words is easy to demo and hard to make safe. How an edit becomes a patch on a validated definition, into a draft you review.

"Make the header darker and move the reviews above the pricing."

Demoing that is easy. Making it safe is the actual work, because the failure mode is not a wrong colour - it is a model rewriting a page it was only asked to adjust, and quietly dropping the opening hours on the way.

The site is data, not code

A site here is a validated definition: pages, sections, content, a design. The renderer turns that into HTML and nothing else does. So an edit never touches markup - it changes the definition, and the definition is checked before it is stored.

Checked means more than "it parsed". Cross-field rules catch what a schema cannot say: two heroes on one page, a post with no date, a page nested somewhere the router would never serve, a table bound to a collection the site does not declare. Those are refused outright rather than published and discovered later.

An edit is a patch

The model is not asked to return a new site. It is asked for the smallest patch that makes the change, against the site as it currently stands.

That single decision removes most of the danger:

  • Content the edit never mentions cannot change, because it is not in the answer.
  • A small change costs a small answer, so edits are fast and cheap.
  • The patch is stored, so the history says what changed, not just what the site became.

Nothing is published until you say so

Every edit lands in a draft. The editor shows the draft; the public site keeps serving the last published version until you publish. Every version is kept, so going back is a click rather than an apology.

There is one more check worth mentioning, because it caught a real bug. If the draft changed while a long-running edit was in flight - you made a change in another tab, say - the result is refused instead of merged:

"Another change was saved to this website while this edit was running. Please review the current draft and try again.

Losing an edit is annoying. Silently overwriting one is much worse.

What we will not do

We do not let an edit invent facts. An edit that adds a testimonial nobody wrote, or a certification nobody holds, is not a feature - and the same rule that governs generation governs editing.

We also do not pretend a change happened when it did not. If a request cannot be expressed as a change to the definition, it says so, rather than producing something adjacent and hoping it passes.