Separate Research and Writing Agents Without Losing the Sources
A research agent can widen source coverage while a writing agent shapes the draft, but only if their handoff preserves evidence, uncertainty, and rejected material.
August 9, 2026 · 8 min read

Consider one assignment: a 1,400-word explainer comparing how meeting-note apps handle stored audio after a user closes an account. The research agent searches privacy policies, help pages, and product documentation. The writing agent turns the findings into a readable comparison. A human editor approves the final claims.
That division can improve coverage because the research agent spends its context window on retrieval, the search and extraction step, while the writer spends its own on structure and language. It can also make the result worse. If the first agent passes a polished summary instead of evidence, the second agent tends to treat every sentence as established fact, remove cautious wording, and add connective claims that no source supports.
The useful boundary is not “research ends, writing begins.” It is the evidence record between them.
The failure appears in the handoff
In the meeting-note assignment, imagine that the research agent returns this sentence: “The reviewed apps delete recordings after account closure, although timing varies.” It looks concise. It is also unusable.
The sentence does not say which apps were reviewed, whether each source discussed recordings or only account data, or whether deletion was automatic. One result may have come from a current privacy policy, another from an old help page, and a third from a search snippet whose underlying page was unavailable. The summary collapses those differences.
The writing agent cannot recover them from the sentence. It may turn “timing varies” into a confident comparison, or infer that closing an account triggers deletion when a source merely describes how to submit a separate deletion request. This is unsupported-claim compounding: one agent compresses uncertain evidence, then another agent writes as though the compression were verified.
Giving both agents access to the same browser does not fix the boundary. The writer may repeat the searches, increasing tool calls, latency, and token use, while still choosing different pages. The original rejection decisions disappear unless the research agent records them.
Give the research agent a closed contract
The research agent should return structured output, a response required to match predefined fields, rather than free-form notes. Its contract should name the assignment scope and include evidence records, source records, unresolved gaps, and rejected sources.
Each evidence record should contain one claim narrow enough for a source to support or contradict. For the meeting-note explainer, “closing an account deletes all associated audio” is testable. “The app respects user privacy” is not. The latter combines interpretation with an undefined standard, so it belongs in neither the evidence table nor the draft without further reporting.
Require an exact excerpt or a faithful extracted passage, plus a locator such as a section heading or page anchor. A URL alone establishes provenance, meaning where information came from, but it does not show why the source supports the claim. Pages change, long policies contain exceptions, and homepages rarely support the product-wide conclusions writers draw from them.
The agent must also distinguish direct support from partial support and inference. Direct support means the source states the claim. Partial support means it establishes only part of it. Inference means the conclusion depends on combining passages or interpreting behavior.
Those labels are more useful than a decorative confidence percentage whose calibration has never been tested.
Use a handoff that can reject bad evidence
A compact handoff for the assignment can look like this:
```json { "assignment_scope": "How reviewed meeting-note apps handle stored audio after account closure", "claims": [ { "claim_id": "C-01", "claim_text": "Account closure and recording deletion are described as separate actions.", "support": "direct", "confidence": "high", "source_ids": ["S-01"], "allowed_use": "state with product attribution" } ], "sources": [ { "source_id": "S-01", "url": "https://example.com/policy-page", "source_type": "first-party policy", "locator": "Account deletion section", "excerpt": "Illustrative source passage goes here.", "access_status": "available" } ], "coverage_gaps": [ "No first-party page found that states a deletion timeline." ], "rejected_sources": [ { "url": "https://example.com/search-result", "reason": "Search snippet only; underlying page unavailable", "related_claim_ids": ["C-01"] } ] } ```
The URLs and passage above are placeholders, not reporting. In production, validate the object against a JSON Schema so missing fields stop the run rather than reaching the writer. The validator should reject unknown support labels, claims without source IDs, and source records that lack a locator or excerpt.
Rejected sources matter as much as accepted ones. Without that registry, the writing agent can rediscover the same search snippet and cite it because it appears to confirm the outline. Rejection reasons should be specific: outdated page, inaccessible underlying document, unsupported aggregation, or contradiction with a controlling first-party policy. “Low quality” gives the next agent too little information.
Constrain what the writing agent may say
The writing agent should receive the assignment brief and validated handoff, not the research agent’s hidden reasoning or conversational transcript. Its drafting rules can then be mechanical.
Every externally checkable sentence must map to at least one claim ID. Direct claims may be stated with attribution. Partial claims must retain the limitation recorded in the handoff. Inferences need explicit framing and usually human review.
If the outline calls for a comparison that has no evidence record, the writer inserts `[EVIDENCE NEEDED]` instead of filling the gap from model memory.
That rule changes the meeting-note draft. Rather than declaring that every reviewed app deletes audio after account closure, the writer can say that one product’s documentation treats closure and recording deletion as separate actions, while the available material does not establish a deletion timeline. The narrower sentence is less smooth. It is also traceable.
Do not let the writer create new factual claim IDs. It may split a supplied claim for readability or combine directly compatible records, but new research should trigger a return to the research agent. This keeps drafting from becoming an unlogged second research run.
Citations should be rendered from source IDs after drafting, not typed from memory. A post-processing step can convert `C-01` and `S-01` into footnotes, links, or an internal citation format while preserving the underlying mapping for review.
Test the boundary, not just the final prose
A fluent final answer can conceal a broken workflow. Evaluate the intermediate artifact first.
Check citation completeness by identifying checkable sentences and confirming that each maps to an evidence record. Check citation correctness by opening the cited passage and testing entailment, whether the source really supports the sentence as written. Then inspect rejection leakage: none of the rejected sources should appear in the draft unless a human reverses the decision and records why.
Run a contradiction check before publication. If one source says recordings are deleted after a user action while another says some data may be retained for legal or operational reasons, the system should preserve both records and flag the conflict. It should not ask the writer to average them into a reassuring sentence.
The human approval screen can stay narrow. Show unsupported markers, inferred claims, source conflicts, and passages whose source became unavailable. Editors do not need the entire agent transcript unless they are diagnosing the run.
Separate agents only when the boundary earns its cost
Two agents add model calls, browser requests, orchestration code, and failure states. They are worth considering when the source set is broad, when different people need to inspect research and prose, or when the same evidence package will feed several outputs. The structured handoff also lets a team replace the writing model without rerunning every search.
A single agent is often better for a short, low-stakes summary with a few supplied documents. It can read, draft, and cite within one context, avoiding the compression loss at the handoff. A research-and-writing split is not an accuracy feature by itself. The accuracy gain comes from forcing claims, evidence, and exclusions into inspectable fields.
For the meeting-note assignment, the adoption test is concrete: open the handoff and determine why the draft says account closure differs from recording deletion. If that answer requires reading a chat transcript or trusting the research agent’s summary, the agents are not coordinated yet.
Questions people ask
Should the research agent write any prose for the writer?
It can write a short scope note and describe unresolved conflicts, but factual findings should remain in claim-level records. A polished narrative encourages the writing agent to inherit unsupported transitions and softened qualifiers, which are harder to audit than discrete claims tied to passages.
Can both agents use the same model?
Yes. Separation concerns roles, context, tools, and output contracts rather than model brands. Using the same model can reduce operational complexity, though the agents still need separate prompts and a validated handoff so the writing run cannot treat unverified research notes as source material.
How should the system handle a source that changes later?
Store the source URL, locator, extracted passage, and access metadata, then recheck important pages before publication. If the live page no longer supports the claim, flag the evidence record as stale and return it to research rather than letting the writer preserve the older wording.
What happens when the research agent finds no reliable answer?
The handoff should state the coverage gap and list the searches or rejected material that led there. The writer may report that the reviewed documentation does not establish the point, but it should not convert missing evidence into a product claim or fill the gap from model memory.
One story a day
The story of the day, in your inbox
One real story about AI each morning — no hype, no alarm, just company for the road.



