Skip to content

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:

  1. reads only the finished artifact and the claim → source_ref pairs it contains — not the authoring reasoning, briefs, or prior chat;
  2. 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;
  3. reads the abstract and confirms the source actually supports the claim, including every numeric figure quoted (direction and magnitude);
  4. flags any figure the sources do not support as possible fabrication, and checks the disclaimer and banned framing;
  5. 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_01run_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.