Apply to my task
arXiv:2608.20786 ★ 88 Aug 21, 2026

Structure for Reading, Prose for Writing: markup helps a model read a document, but it wrecks the writing

Key result

The tag in a prompt literally turns into the grammatical subject — the model parses XML as if it were sentence syntax. The "structure for reading, prose for writing" method lets a single prompt precisely locate every point in a long brief while still writing in a natural voice instead of bureaucratic "The Client requires..." phrasing. The trick is to split markup by role: whatever the model searches for, wrap in tags; whatever it writes from, leave as prose. Mix the roles up, and the share of on-point answers drops by nearly a third.

01

TL;DR

If you're giving a model a document so it can find data in it — format it as structure (XML tags, tables, nested lists). If you're giving a model notes, a brief, or instructions that it needs to write a text from — leave them as plain prose. Mix the two modes, and the model starts writing worse.

The reason is that structure changes what the model treats as the grammatical subject of the sentence. When a brief was wrapped in <requester>...</requester> tags, the requester named in the tag literally became the subject of the sentence — and almost every model response started sounding like "The requester demands..." instead of just answering the point. The share of responses that actually addressed the substance, rather than restating the question, dropped by nearly a third to a half once the exact same instructions were converted from text into tags.

The fix is simple: split the roles of your markup. Source material meant for reading goes into structure. Instructions meant for writing stay in prose. And if you need to kill a specific bad habit the model has (like opening every answer by restating the question) — don't ban it with a blunt instruction. Give the model a self-check instead: write the sentence, cross out anything copied from the question, and if nothing is left, rewrite it from scratch.


Method Blueprint

PART 1 (material meant for reading — document, requirements, table):
→ Format it as markup (tags, nested lists, a table)
→ The model reliably finds the right items and doesn't mix up neighboring fields

PART 2 (material meant for writing — brief, positioning, tone):
→ Leave it as prose, no tags
→ The model writes naturally, instead of dragging the source's structure into its own style

SELF-CHECK STEP (for every written response):
1. Write the first sentence of the answer
2. Strip out anything that just echoes the wording of the question
3. If nothing concrete is left → rewrite it from scratch

It all happens in a single prompt: the structure is set by the format of the input data, and the self-check is a separate instruction inside that same request.


Applied Example

Task: A digital agency is drafting a response to a major brand's brief — say, a pitch to run social media for a coffee chain. There's a brief with the client's requirements (a 15-point list: tone of voice, KPIs, budget constraints) and the agency's internal notes on positioning and past case studies.

Prompt:

You have two types of material.

1. CLIENT REQUIREMENTS (a document to read — use markup so you can find each point precisely):
<requirements>
  <item id="1">Describe how you'll handle the brand's TikTok communication</item>
  <item id="2">State the expected engagement KPI for the quarter</item>
  <item id="3">Describe your experience with coffee chains or similar formats</item>
</requirements>

2. OUR NOTES (for the style and content of the answer — plain text, no tags):
We've worked with three coffee chains over the past two years, averaging 40% growth
in engagement. Our style is friendly, no corporate jargon. We lean on UGC content
and local influencers rather than paid ads.

Task: write a response to each requirement, using the facts and tone from the notes.

After writing a response to a point, check yourself:
- write the first sentence
- cross out anything that just echoes the client's wording from the requirement
- if nothing concrete is left after that, rewrite the sentence so it
  answers the point directly

Result: The model produces three responses tied precisely to each requirement (no mixing up KPIs with experience), written in the agency's own voice instead of corporate boilerplate like "The client requires a description of TikTok communication." The opening sentences answer the substance right away instead of restating the question.


Why It Works

Models are bad at separating "what I need to find" from "what I need to repeat." When writing instructions are wrapped in tags, the model treats the tag (say, "requester") as the most salient word in the text and naturally makes it the subject of every sentence. That's where the same stiff, boilerplate phrasing comes from instead of a direct answer.

But for lookup tasks, the model uses structural boundaries beautifully — a tag or a table cell clearly marks "one chunk of meaning starts and ends here," so the model doesn't confuse neighboring fields.

The method keeps these two modes in separate parts of the prompt: structure where the model needs to find something; and an explicit instruction that style and content should come from the prose, not from the tags.

Levers you can pull: - Source format (structured vs. plain) → only structure the material the model needs to look things up in, not the material it needs to write from. - How you ban a phrase → don't write "don't start like this" — give the model a self-check instead ("write it, strike the copied part, rewrite"). A blunt ban just shifts the problem to a neighboring phrasing. - Naming specific banned phrases → this works, but only as a second layer, after the self-check, and only with an example attached — otherwise the leftover errors cluster exactly around the named forms. - Framing your examples ("this is a form to emulate, not text to copy") — nearly eliminates word-for-word copying of the example.


Prompt Template

You have two types of material.

1. MATERIAL TO READ ({document with requirements/questions}) — use markup
so you can find each point precisely:
<items>
  <item id="1">{requirement 1}</item>
  <item id="2">{requirement 2}</item>
</items>

2. MATERIAL TO WRITE FROM ({brief, style notes, facts}) — plain text, no markup:
{prose notes}

Task: write a response to each item in the material to read,
using the facts and style from the material to write from.

A past example ({sample text}) is a form to emulate, not text to copy.

After each response, check yourself:
- write the first sentence
- strike out anything that echoes the wording of the original item
- if nothing concrete is left, rewrite the sentence so it
  answers the point directly

Fill in: {document with requirements} — what needs to be found precisely and covered; {prose notes} — facts, tone, positioning; {sample text} — a style reference, if you have one.

🚀 Quick start — paste into the chat:

Here's a template for the "structure for reading, prose for writing" technique. Adapt it to my task: {your task}.
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask what your document with requirements is (what needs to be found) and what your style notes are (what to write from) — because the method only works if these two materials aren't tangled together into one structure.


Limitations

⚠️ Not a top-tier model: the experiment was run on an open mid-sized model (up to 200 billion parameters). The authors flag directly that on a top-tier model, rigid structure and multi-step checks might actually backfire — what "keeps a weak model on the rails" can "put handcuffs" on a strong one. This wasn't tested in the paper, but it's named as the weakest point of the findings.

⚠️ A blunt ban doesn't remove the problem, it concentrates it: if you just tell the model "don't write it that way," the leftover errors will cluster almost entirely around the exact forms you named. You need a behavioral self-check first, and naming specific phrasings should only be a second, targeted layer.

⚠️ The method hits different tasks differently: for short, simple one-line instructions the effect may barely register — the asymmetry is strongest when instructions are long and involve multiple entities (like the 150,000+ character brief used in the study).


How It Was Studied

The team took a real, working system that writes tender proposals for an organization in Australia/New Zealand, and compared its answers against proposals the same organization had submitted by hand. Another LLM served as the quality judge, scoring not for text overlap but for substance. On one tender, the system wrote blind — with zero ready-made examples to draw on — and its answers were rated as good as or better than the human-written ones in 73% of sections, with nearly every gap explained not by writing quality but simply by the system lacking information the human author had access to.

They separately tested three reading tasks (routing comments to questions, extracting cells from a table, parsing an old proposal) — markup improved all three. Then they applied that exact same markup to writing instructions — and answer quality dropped by nearly a third. That's the study's central contrast: the very same technique (wrapping text in tags) helps in one direction for reading and hurts in the opposite direction for writing.

The design is honest: the authors separately classified every gap versus the human answer as either "the model lacked data" or "the model wrote worse," instead of lumping everything under generation quality. That's a rare methodological detail that makes the findings more trustworthy than the usual "the model scored X%."


Resources

Structure for Reading, Prose for Writing: Asymmetric Structural Conditioning in Multi-Agent Document Authoring — Cheng Yu, Nikhil Mathew, Zhengjie Wang, ML Research Labs, Canberra, Australia (supported by Trellis Data).

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

Research digest

Key result

The tag in a prompt literally turns into the grammatical subject — the model parses XML as if it were sentence syntax. The "structure for reading, prose for writing" method lets a single prompt precisely locate every point in a long brief while still writing in a natural voice instead of bureaucratic "The Client requires..." phrasing. The trick is to split markup by role: whatever the model searches for, wrap in tags; whatever it writes from, leave as prose. Mix the roles up, and the share of on-point answers drops by nearly a third.

Principle

The rule is simple: the source for searching goes into tags, the source for style stays as prose. Don't try to ban a bad habit by saying "don't write like that" — the problem will just creep into a neighboring phrase. Give the model a self-check instead: write the first sentence, cross out everything copied from the question, and if nothing's left, rewrite it. Only as a second layer, after that, can you name a specific banned phrase — always with an example of the correct alternative.

Why it works

The model looks for the most salient word in the text and makes it the subject of the sentence. Format the brief as , and the model starts every answer with "The Client requires..." — because the tag literally became the head word of the phrase. Tag boundaries work great for search — they don't blur adjacent fields — but they kill natural writing. On a mid-sized model (up to 200 billion parameters), the share of on-point answers dropped by nearly a third once instructions were turned from text into tags.

When to apply

Multi-agent document-prep systems → RFP responses, briefs, questionnaires, especially when the source is long (150,000+ characters) with dozens of points. Not suitable for short, one-line instructions — the difference is barely noticeable there. Also untested on top-tier models — there, rigid structure and multi-step checks might actually get in the way.

Mini recipe

1. Split the material: what needs to be found goes into tags; what needs to be pulled for style and facts stays as prose without markup. 2. Wrap the example: add the phrase "this is a form to follow, not text to copy" — otherwise the model will lift the example word for word. 3. Add a self-check: after each answer — write the first sentence, cross out anything that repeats the question, and if nothing's left, rewrite it. 4. Targeted second layer: if a specific filler phrase persists, call it out separately, with an example of the correct wording.

Examples

[BAD]: `Describe your approach to TikTok Write a response to this requirement.` [GOOD]: `Describe your approach to TikTok Our notes (plain text, no tags): worked with three coffee-shop chains, engagement growth — 40%, friendly tone, no corporate jargon. Write a response to item 1 using facts from the notes. Check the first sentence — cross out anything that repeats the question; if nothing remains, rewrite it.`

In plain words

An LLM digests information differently depending on whether it's searching for facts or generating text. When you're feeding the model data for fact-checking, wrap it in rigid structure: XML tags, tables, lists. But when you hand it inputs meant to be turned into flowing, coherent prose, structure wrecks the output. The model starts mimicking the prompt's syntax: it sees a tag like <client> and dumbly makes it the subject of every sentence, spitting out stiff, bureaucratic filler.

It's like hiring a copywriter and handing them a brief formatted as a spreadsheet, then asking for a heartfelt article. The task is technically clear, but what you get back is a robotic knockoff, because the "writer" took inspiration from the grid layout instead of an actual idea. The model latches onto the form and drags that tag-shaped skeleton straight into the final draft.

What actually works: asymmetric formatting. For fact retrieval, feed the model structured input (KPI lists, pricing tables), but for tone and context, write plain flowing prose — like coherent notes to a colleague. Keep the two streams clearly separated: format "what to look up" as code and tags, and write "how to say it" in plain human language.

The researchers tested this on agency RFP responses, but the principle is universal. It holds for sales proposals, emails, reports, and landing pages alike. This is exactly where multi-agent systems and RAG stumble: developers cram the entire context into one giant JSON blob, then wonder why the bot writes like a broken bureaucratic telegraph.

Bottom line: structure is for reading, prose is for writing. Stop wrapping creative briefs in pseudocode unless you're fine with getting back corporate sludge. Separate data from narrative in your input, or the model will keep churning out wooden, stilted phrasing that forces you to rewrite everything by hand.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on Structure for Reading, Prose for Writing: markup helps a model read a document, but it wrecks the writing arXiv:2608.20786

Sign in to apply this study New accounts get 50 free credits.