The interview step decides what to look for. This is about what happens once the looking starts.

Once a scientist's intent is pinned down, the research copilot doesn't hand the question to one agent and wait for an answer. It runs each candidate feature through five separate, narrow stages: one agent researches the feature and writes a brief, a second agent tries to falsify that brief, a third compiles the two into one coherent document, and once every feature in the run has gone through that, a final pass reviews the whole set and produces a table a scientist can actually glance at.

One interview, an optional exploration pass, one loop per feature, one synthesis. Icons: literature, identifiers, web, shared file, compile, cross-feature table. Hover an icon for its name.

That's a lot of moving parts for what sounds like a single question: does this gene make a good feature. The reason it's built this way isn't elegance for its own sake. It's a direct answer to two things that broke when I tried to do it with less.

The first thing that broke: one agent, too much to hold

Run this for one feature and a single capable agent can do the whole job fine. Run it for twenty, in one pass, and the agent's context degrades under its own weight long before it reaches the last one. It starts forgetting what it decided about feature three by the time it's reasoning about feature fifteen, or it starts blurring evidence between features that happen to share a pathway.

Splitting the work fixes this by construction, not by hoping the model behaves. Research and adversarial review are separate agents because each one only has to hold one feature's evidence in its head, not twenty. A dedicated agent then just compiles the two into a single readable document, so a reviewing scientist gets one file per feature with the full trail: the proposal, the scores, and the critique, instead of hunting across outputs to reconstruct what happened. Only after every feature has been through that does a final synthesis pass look across the whole table at once, which is the one place cross-feature reasoning is actually supposed to happen, deliberately, instead of leaking in sideways because one overloaded agent happened to remember feature three while scoring feature fifteen.

The second thing that broke: one model doing everything from memory

The same root problem shows up again in the tools each stage uses. A generalist agent given broad access and told to go research a gene will, if you let it, write its own scripts to pull down full web pages and read them raw. That's a lot more context than it sounds like, especially once you're several features in and each one needs dozens of articles read closely enough to say something specific about it, not just skimmed for a headline.

So the tools underneath each stage are narrow on purpose: one that resolves an identifier and confirms it's real and current, one that pulls the relevant text out of a paper instead of the whole page, one that checks whether an association holds in real data instead of just in a citation. Each of those is small enough to trust, and small enough that reading the volume of material a real feature needs doesn't quietly consume the entire budget before the agent gets to the part that matters: deciding what the evidence actually means.

What five stages actually caught

The clearest example I have is two sibling genes, both subunits of the same enzyme, both proposed as candidate features for the same biological question. Genes that work together this closely often carry near-identical literature, so it wasn't a surprise that both scored strong on the first pass: solid mechanistic support, a real enzymatic reaction, decent detectability in the data.

The adversarial pass attacked both, independently, and found a different, specific problem in each. For the subunit that actually does the catalysis, the flaw was in the evidence itself: every supporting study measured the whole enzyme complex or the whole organism, and none of it ever isolated that one gene as the thing being measured. For its sibling, a structural subunit, the flaw was identity: the catalytic role that literature was built around belongs chemically to the other gene, not to this one, so citing it here borrows evidence from a subunit it isn't actually measuring.

Two different critiques, arrived at separately. And they converged on the same real finding: a single subunit's abundance is really a proxy for the whole enzyme complex, not an independent signal, and treating each subunit as its own feature would count one enzyme three or four times over. That collinearity wasn't asserted from biological reasoning. It was measured directly, a real correlation between the two genes' abundances in the data, sitting right next to the qualitative critique. Both genes were flagged, not dropped; the caveat travels with the feature so a scientist can decide, rather than the system deciding for them.

What convinces me this design works is that the adversary held two closely related candidates to the same rigorous standard and found two genuinely different problems, rather than copy-pasting one objection twice. A single lucky catch would have been easy to write off as noise. Doing it twice, for different reasons, reads like a real capability.

The bar isn't zero errors

I don't have a story about the adversary agent itself being wrong. I also don't think it's immune to that, and I'd rather say so than imply otherwise. The goal was never for it to be infallible. It was for it to be less wrong than a PhD doing the same review by hand, which isn't a large ask for an LLM with the right tools and enough room to actually look at the evidence. That's a real, achievable bar, and a much more honest one than promising a system that never misses anything.

What still doesn't work the way a person would

Even with intent pinned down before any research starts, the research stage still doesn't reason across domains the way a person asking the question would. Say the actual quantity of interest is ammonia in stool. Blood ammonia levels, or a symptom like brain fog, could plausibly serve as a proxy for the same underlying biology, because ammonia produced in the gut doesn't stay in the gut. A scientist knows that connection without being told. The system doesn't go looking for it. It'll pick up the link if a retrieved paper happens to mention it, but it won't go searching for "blood" or "brain" on its own just because the biology connects them. It inherits whatever breadth already exists in the literature it happens to retrieve, and no more.

The intent-interview step decides what a scientist means. It doesn't yet decide what a scientist would have known to ask about, if they'd thought of it. That gap is still open, and I don't have a clean fix for it yet.