Skip to main content
AgentsUse

Web research and briefing

Research Briefing Stack

Tavily finds and extracts sources, a LangGraph loop plans and drafts, and Langfuse keeps every run inspectable.

3 verified components2 human checkpointsChecked 2026-10-07

The job

  • Turn a question into a short brief with checkable sources
  • Keep a trace of what the agent searched, read, and spent

Expected output: A short brief where every load-bearing claim carries a link, plus a trace of the searches and costs behind it.

Components, and why each one is here

TavilySearch, extract, crawl, and map the web behind one API key.

A web access API built for AI agents: search, extract, map, crawl, and research endpoints behind one key.

Why this component: Discovery and reading are one vendor here, so the agent loop stays separate and swappable.

LangGraphRuns the research loop as a stateful graph with retries and inspectable steps.

A low level orchestration framework for building, managing and deploying long running stateful agents.

Why this component: Research needs pause, retry, and re-plan, which a graph makes explicit instead of hiding in a while loop.

LangfuseTraces each run so cost, latency, and weak answers can be reviewed.

Open source LLM engineering platform for tracing, prompt management, evaluation, and debugging of AI applications.

Why this component: Without traces you cannot tell which searches were worth their credits.

Sequence

  1. Frame the question: the decision it supports, the date range that counts as current, and the source types you trust.

  2. Agent drafts 3-6 search queries and shows them before running any of them.

  3. Tavily searches and extracts the top pages as full text, not snippets alone.

  4. Agent drafts the brief with a link attached to every claim that matters.

  5. Human opens the load-bearing sources, then approves, edits, or sends the agent back.

  6. Langfuse traces record which searches paid off, so later runs start smarter.

Prerequisites

  • Tavily API key
  • Python or TypeScript runtime for LangGraph
  • A model API key
  • Langfuse project, cloud or self-hosted

Credentials

  • TAVILY_API_KEY for Tavily calls
  • A model API key for planning and drafting
  • LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY for traces

Human checkpoints

Human checkpoints
  • After the search plan, before searching: bad queries waste credits and anchor the brief on the wrong sources.
  • Before the brief is shared or acted on: a searched claim reads just as confident whether the source is a regulator or a content farm.

When it breaks

Search results are thin or off-topic

Re-plan with narrower queries and named source types instead of padding from weak hits.

A key page blocks extraction

Fall back to a browser tool or a second source for the same fact, and mark where sourcing is thin.

Costs creep up over days

Read the Langfuse traces, cut crawl depth, and cap results per query before raising any budget.

Swapping components

Exa or Brave Search API can take the search seat with parsing changes; the graph and tracing layers stay.

Cost shape and freshness

Tavily credits per search and extraction, model tokens for planning and drafting, and Langfuse usage on the hosted tier. Nothing here needs a paid plan to start.

Every component links to its verified profile, checked 2026-10-07. A stack is an editorial recipe, not a tested benchmark: run it on a small job first and keep the checkpoints in place. Spotted an error? Send a correction. Back to the stack index.