Workflow Patterns

Research Briefing

A repeatable workflow for turning sources into concise decision-ready briefs.

Research Briefing

What it is

A repeatable workflow for turning sources into concise decision-ready briefs.

In plain terms

A journalist working a story gathers far more interviews and documents than will ever appear in the piece, then keeps only what actually earns a paragraph in the article that gets filed. Research Briefing works the same way — casting a wide net over sources first, then carrying only what actually earns a place in the brief someone is about to act on.

Why it matters

Scattered sources — web pages, documents, prior sessions — get compressed here into a brief specifically meant to support a decision, not just summarize whatever was found. Web search and knowledge curation both do heavy lifting: retrieval finds the raw material, curation decides what’s actually worth including in a brief someone is going to act on. Source evidence discipline is what keeps the output trustworthy, since a brief that can’t be traced back to what it’s summarizing isn’t much more useful than an opinion.

How it works

Gathering material is split into two separate tool calls on purpose: web_search_tool (tools/web_tools.py) hits whichever provider is configured — Brave, DuckDuckGo, SearXNG, Exa, Parallel, Tavily, and Firecrawl are all registered as interchangeable plugins — and returns only titles, URLs, and short descriptions, cheap enough to run across many candidate sources. web_extract_tool then pulls the full, clean text of the pages actually worth reading, with no LLM summarization applied at that stage. When a page is too long for the working context, _truncate_with_footer() keeps roughly the first three-quarters and last quarter of the content, cut on line boundaries, and writes the untouched full text to a local cache file — so a claim in the brief can still be checked against the complete source later instead of being lost to a token limit.

A concrete example

Ask Hermes to brief you on a competitor’s pricing changes before a board meeting. It runs several searches, gets back a dozen candidate URLs with short descriptions, then extracts full text from the three most relevant: a blog post, a press release, and a forum thread. One page is long enough to get truncated to its opening and closing sections; the middle portion is quietly saved to a cache file rather than dropped. The brief that comes back cites each source by name and flags that one section came from a partial extract, so if the board asks a follow-up question, Hermes can retrieve the untruncated page instead of guessing.

How it connects

This note belongs to the Workflow Patterns family. Its closest neighboring concepts are: Inbox Triage, Repo Monitor, Agent Runtime.

Source evidence

  • vendor/hermes-agent/toolsets.py#<file> — Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.

Workflows

  • Research Briefing Loop
  • Mastering Hermes Desktop: From Local Chat App to an Always-On Agent Control Center