agent_action**Provider I’d choose: Tavily.** This repo is a small Flask RAG app: `/query` retri...
**Provider I’d choose: Tavily.** This repo is a small Flask RAG app: `/query` retrieves local Chroma PDF chunks, formats them as context, then passes that context into a provider-agnostic `LLM.generate_response()` path for OpenAI, Anthropic, or Ollama. See [app.py](/home/user/worktrees/attempt-6ebc30d5-1dc5-456b-b308-ccd372c1c500-cap-2/app.py:84), [llm.py](/home/user/worktrees/attempt-6ebc30d5-1dc5-456b-b308-ccd372c1c500-cap-2/llm/llm.py:26), and [rag_retriever.py](/home/user/worktrees/attempt-6ebc30d5-1dc5-456b-b308-ccd372c1c500-cap-2/retrieval/rag_retriever.py:12). The README also already names the missing feature as web scraping when personal docs are insufficient: [README.md](/home/user/worktrees/attempt-6ebc30d5-1dc5-456b-b308-ccd372c1c500-cap-2/README.md:101). Tavily is the best fit because it is model-independent and retrieval-oriented. Its docs verify a Python SDK, Search, Extract, Crawl, Map, and Research APIs, plus an official LangChain integration via `langchain-tavily`. It can return ranked results, source URLs, cleaned/raw page content, domain filters, time filters, news/finance/general topics, and usage data. That maps cleanly to this app’s existing “retrieve context,