The three-agent partition
The methodology calls for three agents to read the paper independently before any claim list is assembled. This is the substantive design decision in the methodology — the architectural reason single-agent extraction wasn’t enough.
This page explains why three agents, what each one’s slice is, and what each is positioned to catch that the others miss.
The partition
Section titled “The partition”Each of the three agents reads only its slice of the paper. None of them see another’s output before submitting.
| Agent | Reads | Doesn’t read | Slice size (typical) |
|---|---|---|---|
| Results-reader | Abstract + results section prose | Figure captions, methods, supplements, code | 50-100 KB |
| Caption-reader | Figure captions, panel by panel | Abstract, results, methods | 30-90 KB |
| Structure-reader | Methods, supplements, code descriptions | Abstract, results, captions | 10-30 KB |
The boundaries are determined by Step 1 (prepare.py) — heuristic regex on the PDF text identifies the abstract / results / methods / references section boundaries; a separate regex identifies figure caption blocks. The slices go to the agents through slice_for_agent() in agents.py.
Why three
Section titled “Why three”The partition is deliberate — each agent is positioned to catch a specific class of failure that single-agent extraction systematically exhibits.
Results-reader catches: framing, hypotheses, predictions, synthesis
Section titled “Results-reader catches: framing, hypotheses, predictions, synthesis”The Results-reader reads the abstract and the results prose as a domain reader would: as an argument with a hypothesis, a series of empirical moves, and a conclusion. It is the only agent positioned to extract:
- Hypothesis claims — the paper’s organising bets, often introduced in the abstract or first paragraph of results
- Prediction claims — derivable from hypotheses, often phrased “if X, then we should observe Y”
- Synthesis claims — higher-order propositions integrating across multiple empirical results
- Interpretation claims — reframings of empirical results through a theoretical lens
- The direction and framing of empirical claims — what the paper says it found, in the paper’s own epistemic language
Failure modes the Results-reader is most prone to (and which the prompt addresses):
- Overstating strength — the paper rarely says “proves”; it usually says “consistent with”
- Discussion contamination — the discussion bleeds into speculative interpretations the figures don’t directly support
- Quantitative hallucination — the agent doesn’t have the captions, so when prose summarizes (“a large fraction”) it must not invent a number
- Missing negative results — “X does not explain Y” is a real claim and an important one
Caption-reader catches: panel-level numerics, exact quantitative values
Section titled “Caption-reader catches: panel-level numerics, exact quantitative values”The Caption-reader reads each figure caption as a description of one panel’s claim: the manipulation, the measurement, the result. It is the only agent positioned to extract:
- Panel-level empirical claims — one candidate claim per panel, anchored to the specific panel ID
- Exact quantitative values — concentrations, time scales, effect sizes, statistical results, verbatim from the caption
- Correct panel assignments — every claim names the panel where its data is shown
- Negative-result panels — captions for panels showing null findings (“no significant difference”) that the prose may underweight
Failure modes the Caption-reader is most prone to:
- Wrong panel assignment — multi-panel captions (“fig3a-c, comparing baseline (a), perturbation (b), recovery (c)”) need careful per-panel decomposition
- Methodological panels as claims — schematics, parameter diagrams, technique illustrations don’t assert claims about the world; they’re
role: methodological - Simulation vs experiment conflation — captions describing both an experimental measurement and a model prediction need both surfaced separately
Structure-reader catches: methodological capabilities, scope conditions
Section titled “Structure-reader catches: methodological capabilities, scope conditions”The Structure-reader reads the methods as an auditor: what was measured, what was modelled, what assumptions are load-bearing, what controls were run, what alternatives were ruled out. It is the only agent positioned to extract:
- Methodological claims (
role: methodological) — capabilities or analytical pipelines that warrant downstream interpretations - Scope claims (
role: scope) — boundary conditions on the empirical claims (often global,scopes: ["*"]) - Control claims that are documented in the methods (rather than only visible in captions)
- Conditional claims — claims whose validity depends on a specific parameter, dataset, or analytical choice
- Existence-claims-masquerading-as-causal-claims — when the methodology only supports an existence claim but the prose frames it causally
Failure modes the Structure-reader is most prone to:
- Inferring results from mechanism — the methods describe how something was computed, not what was found. Never report a mechanism as a result.
- Reversing direction — without the results prose, the Structure-reader can’t know which direction was actually observed for saturation/feedback/inhibition mechanisms
- Single-source overconfidence — the Structure-reader’s claims are usually invisible to the other two agents; that single-source status should be acknowledged
Why the partition matters empirically
Section titled “Why the partition matters empirically”The Phase F round-trip on Headley showed:
| Agent | Claims surfaced | Role distribution |
|---|---|---|
| Results-reader | 48-51 | mostly empirical, some synthesis/interpretation |
| Caption-reader | 46-47 | mostly empirical (panel-grounded), some methodological |
| Structure-reader | 17-20 | mostly methodological + scope, some control |
The reconciler folds these into 76 unique claims. Roughly:
- 34 high-confidence claims that all three agents surfaced (the empirical findings everyone agrees on)
- 5 contested claims where two agents agreed and one differed
- 37 single-source claims that only one agent could see — almost all of these are in roles that one agent is uniquely positioned to extract (Structure-reader’s methodological/scope, Caption-reader’s panel-level details, Results-reader’s interpretive framings)
If you collapsed the three agents into one, you would either:
- Lose the methodological claims (one agent can’t carefully audit methods while extracting empirical findings from prose)
- Lose the panel-level numerics (the same agent reading prose naturally summarizes rather than quoting captions)
- Lose the synthesis layer (an agent forced to track panel-level detail loses the interpretive bandwidth)
The partition trades one big call for three focused calls. The cost is similar (~$3-4 in Sonnet for three calls vs ~$2 for one larger call); the quality difference is meaningful.
What the partition can’t catch
Section titled “What the partition can’t catch”Three things the partition is not designed to address — they are handled at later steps:
Cross-agent reconciliation. The three agents will surface the same claim three different ways. Folding them into one canonical claim is the reconciler’s job (Step 4, reconciliation page).
Implicit deductive structure. None of the three agents can infer the implicit hypothesis-prediction-test scaffolding that the curator extracts from the modelling decisions. That is the external reviewer’s job (Step 4.5, external reviewer page).
Final role classification. The agents emit provisional roles; the analyst at Step 5 (or the external reviewer in --review-mode external) reclassifies based on judgment about the paper’s argument structure.
Implementation notes
Section titled “Implementation notes”- Agents run sequentially (not in parallel). The pipeline is sequential by default; concurrent execution is feasible but adds complexity for marginal latency benefit.
- Each agent uses
claude-sonnet-4-6by default. Override per-agent via--model-results,--model-caption,--model-structure. The CLI exposes these knobs precisely so future iterations can A/B test model assignments. - Each agent receives the role-specific prompt from
prompts/<role>-reader.md. The prompts are the load-bearing artifact; see the prompts reference for the full text. - Output is JSON, validated through Pydantic before passing to the reconciler. A schema-invalid output halts the pipeline rather than corrupting downstream state.
Next steps
Section titled “Next steps”- Reconciliation — how the three agent outputs become one draft
- The external reviewer — Step 4.5 and what it adds
- The prompts reference — the full text of each agent’s prompt