Business & Research Use Cases Basics
8 examples to get you started with business and research agents - 5 basic and 3 intermediate.
Search across all documentation pages
8 examples to get you started with business and research agents - 5 basic and 3 intermediate.
You will shape a research question, fan out to sources, attach citations, and stop with a reviewable brief instead of a freeform chat reply.
This section is concept-heavy: sketches stay short so you can focus on evidence habits, not framework wiring.
# Optional local sketch environment
python -m venv .venv && source .venv/bin/activate
pip install pydanticBefore tools, write what "done" means in one sentence a reviewer can check.
Goal: Summarize three pricing changes from Competitor A in the last 90 days.
Done when: each change has a date, a source URL, and a one-line impact note.
Stop if: fewer than two independent sources after 6 search turns.Related: How Knowledge-Work Agents Differ from Coding Agents
Use a first pass to generate search queries, not the executive summary.
def expand_queries(question: str) -> list[str]:
# In production: model call that returns 3-5 diverse queries
return [
f"{question} official announcement",
f"{question} pricing 2026",
f"{question} customer reaction",
]Store structured hits before the model paraphrases them.
from pydantic import BaseModel
class Evidence(BaseModel):
source_id: str
url: str
title: str
snippet: str
retrieved_at: str
def record_hit(raw: dict) -> Evidence:
return Evidence(
source_id=raw["id"],
url=raw["url"],
title=raw["title"],
snippet=raw["snippet"][:500],
retrieved_at=raw["ts"],
)Force the final answer into a structure that cannot omit citations.
class Claim(BaseModel):
text: str
source_ids: list[str]
confidence: str # high | medium | low
class Brief(BaseModel):
executive_summary: str
claims: list[Claim]
open_questions: list[str]open_questions makes ignorance visible.source_ids.Knowledge agents need hard stops even when curiosity remains.
def research_loop(question: str, max_turns: int = 8) -> Brief:
evidence: list[Evidence] = []
for turn in range(max_turns):
# 1) model picks: search | fetch | finalize
# 2) run tool, append Evidence
# 3) if finalize or coverage_met(evidence): break
pass
return synthesize(question, evidence) # must validate Brief schemaRelated: Research Agents: Multi-Source Investigation and Synthesis
Not every successful HTTP 200 is equal evidence.
Prefer, in order:
1. Primary: filings, product pages, official blogs, signed policies
2. Secondary: reputable news with clear sourcing
3. Tertiary: aggregators, forums, unattributed slides
Drop: SEO farms, undated copies, paywall-teaser only pagesWhen sources disagree, the brief should show the conflict, not average it away.
Claim candidates:
- Source A (2026-03-01): list price $99/mo
- Source B (2026-05-12): promo $79/mo for annual
Good synthesis: "List remains $99/mo; a May promo offers $79 annual (B). Unclear if promo is ongoing."
Bad synthesis: "Price is about $90/mo."Package the brief so a human can approve in minutes.
Review packet:
- 5-bullet executive summary
- claims table with source_ids
- appendix: Evidence list (title, url, retrieved_at)
- open questions + suggested next queries
- cost/turns usedStack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.
Reviewed by Chris St. John·Last updated Jul 16, 2026