Skip to content

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.

Each of the three agents reads only its slice of the paper. None of them see another’s output before submitting.

AgentReadsDoesn’t readSlice size (typical)
Results-readerAbstract + results section proseFigure captions, methods, supplements, code50-100 KB
Caption-readerFigure captions, panel by panelAbstract, results, methods30-90 KB
Structure-readerMethods, supplements, code descriptionsAbstract, results, captions10-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.

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

The Phase F round-trip on Headley showed:

AgentClaims surfacedRole distribution
Results-reader48-51mostly empirical, some synthesis/interpretation
Caption-reader46-47mostly empirical (panel-grounded), some methodological
Structure-reader17-20mostly 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.

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.

  • 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-6 by 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.