Research note 01

Your Research Agent Needs a Consumer

Aria produced hundreds of useful research reports that nothing ever read. The fix was a small, idempotent consumer pipeline.

Aria had completed 213 research jobs and stored roughly 1.5 MB of summaries. The reports were real. Many contained useful findings. Almost none of them affected anything that happened next.

Nothing regularly read them, combined them, surfaced them, or marked them as used.

The research agent was a capable producer attached to a system with no consumer.

Production was not the problem

The first instinct with an underperforming research system is often to improve the prompts or use a better model. That would have made this problem worse. The system already knew how to research. It needed a reason for the research to exist.

Without a consumer, the scheduler kept creating more jobs. Similar questions returned as new goals. The database grew, but the person using the system still had to hunt through individual outputs to find anything useful.

The producer’s success metric was “a report was written.” The system’s actual job was closer to “use research to improve a decision.” Those are not the same outcome.

A small consumer pipeline

I added a research synthesizer with five jobs:

  1. Select completed reports that have not been surfaced.
  2. Group them into broad topics.
  3. Extract headings and findings, then remove duplicates.
  4. Write a readable brief with the main findings, long-tail notes, and source index.
  5. Register the brief and mark its sources as consumed.

The output is a normal Markdown file. It can be read by a person, indexed by the rest of the system, copied elsewhere, or inspected months later without recreating the original run.

That durable artifact matters. A database full of agent messages is storage. A brief with a clear subject and source trail is a product.

The merger did not need another model

I first tried using an LLM to merge the reports. It tended to leak its working checklist into the answer and added another slow, variable step to a process that was mostly structural.

The final synthesizer uses simple heuristics. It recognizes headings and bullets, normalizes strings, removes close duplicates, and groups the remaining findings by topic. The model had already done the expensive interpretation in the research stage. The consumer mainly needed to organize the result.

That made the pipeline faster, cheaper, and easier to test. An LLM is valuable when judgment is required. It is not automatically the best tool for sorting and deduplication.

Idempotency was the real test

On the first full run, the synthesizer processed 394 source items and produced seven briefs in about six seconds.

I ran it again immediately. It processed zero items.

That second result mattered as much as the first. A scheduled consumer must know which inputs it has handled. Without that state, every run either duplicates old work or forces a model to decide what feels new.

Marking each source as surfaced gave the loop a simple contract:

  • new research enters the queue once;
  • the consumer turns it into a durable brief;
  • the source is recorded as consumed;
  • later runs only handle new material.

This also made failures recoverable. If writing a brief fails, its sources remain unconsumed and can be retried. If the brief succeeds, they do not reappear in the next batch.

Research needs an exit

A useful research loop should be able to answer a few plain questions:

  • Who or what reads the output?
  • Where does the useful result live?
  • How can someone trace a conclusion back to its sources?
  • How does the system know the work has already been handled?
  • What decision or future action can the research change?

If those answers are missing, adding more researchers only increases the backlog.

The same rule applies beyond agents. Alerts need responders. Analytics need decisions. Notes need a review habit. Collection feels productive because it leaves a visible pile, but the value appears only when something consumes the pile.

Aria did not need a smarter researcher. She needed a small piece of plumbing after the researcher, one that turned completed jobs into something a person could actually use.

~/

↑↓ move enter run help commands ⌘K toggle