Content pipeline
RAWLY's content is produced by a chain of specialized agents, versioned as Markdown definitions alongside the code they produce. The chain's defining property is not that it has a verification step — it is where that step gets its context from.
The chain
flowchart LR
A["Nutrition Expert<br/>drafts the substance"] --> B["Copywriter / Editor<br/>shapes the article"]
B --> C["Fact-Checker<br/>ISOLATED · blind"]
C --> D["Human gate<br/>final independent net"]
flowchart TB
A["Nutrition Expert<br/>drafts the substance"] --> B["Copywriter / Editor<br/>shapes the article"]
B --> C["Fact-Checker<br/>ISOLATED · blind"]
C --> D["Human gate<br/>final independent net"]
Nutrition Expert and Copywriter / Editor share context: their work is constructive, and each benefits from what the other knows. The Fact-Checker does not — it is spawned as a separate sub-agent with fresh memory, and never sees the authoring reasoning.
Why the checker is isolated
An agent that has watched a claim being written is disposed to ratify it rather than verify it. The pipeline specification states the rule directly:
Best-practice principle: share the context where the work is constructive, isolate it where the work is verification (adversarial).
So the Fact-Checker step runs in an isolated context — a separately-spawned sub-agent with fresh memory — that:
- reads only the finished artifact and the
claim → source_refpairs it contains — not the authoring reasoning, briefs, or prior chat; - re-resolves every identifier from scratch against the authority (NCBI E-utilities for PMID, doi.org / Crossref for DOI), bidirectionally — the PMID and DOI must point to the same paper, and title, journal, year and first author must match the citation;
- reads the abstract and confirms the source actually supports the claim, including every numeric figure quoted (direction and magnitude);
- flags any figure the sources do not support as possible fabrication, and checks the disclaimer and banned framing;
- reports only — it never edits the artifact.
A valid identifier is never sufficient: the paper behind it must support the sentence that cites it. Resolution happens live, against the authority, never from memory.
The human gate
The Fact-Checker reports; it does not decide. Every artifact then passes a human review before it can ship — the final independent net, outside the model entirely.
Proof that the isolation earns its cost
Isolation is not free: it forfeits the shared context that makes the rest of the
chain efficient. It was first applied on 2026-07-01, to the detox-green juice,
and paid for itself on that first run.
First isolated run — verdict PASS-WITH-NOTES
The isolated Fact-Checker surfaced a precision nuance the in-context self-check had missed: a source whose measured endpoint differed from the framing the recipe gave it. The claim's identifier was valid, and an in-context reviewer had already accepted it.
Concrete evidence that the isolation adds verification value, rather than
ceremony. Trace: run_04_juice_detox_green.md §6.
Traceability
Every pipeline execution is written down. The repository carries nine versioned
run traces (run_01 … run_09), one per content batch, recording the agents
invoked, the sources resolved, the verdicts returned, and the corrections
applied. The agent definitions themselves — Nutrition Expert, Copywriter /
Editor, Fact-Checker — are versioned next to them.
The content each run produced is what the schema gate and the test suite then enforce, permanently. See Evidence & nutrient density.