Structured Blocks 
Idea: Use an Intermediate Representation (IR) instead of raw XHTML
page := &storage.Page{
Blocks: []storage.Block{
&storage.Heading{Level: 1, Text: "Title"},
&storage.Table{
Headers: []string{"Name", "Status"},
Rows: []storage.Row{{Cells: []storage.Cell{{Text: "Alice"}}}},
},
},
}
LLM produces JSON → Go renders valid XHTML 