**Provider Pick** I’d choose **Tavily**, specifically `langchain-tavily` or `tavily-python`, as the managed web-search/retrieval provider. This repo is a small Flask + LangChain RAG app. The current path is: `/query` retrieves Chroma chunks, formats context/sources, then sends that context into the LLM prompt: [app.py](/home/user/worktrees/attempt-fa02ee3a-8677-44ee-878a-6c7e1903ccd7-cap-0/app.py:84), [rag_retriever.py](/home/user/worktrees/attempt-fa02ee3a-8677-44ee-878a-6c7e1903ccd7-cap-0/retrieval/rag_retriever.py:12), [llm.py](/home/user/worktrees/attempt-fa02ee3a-8677-44ee-878a-6c7e1903ccd7-cap-0/llm/llm.py:7). Tavily fits that shape cleanly because it can return search results, cleaned page content, source URLs, and LangChain-compatible tooling without forcing the app to abandon Ollama or Claude support. **Why Tavily** Tavily is built for AI agent/RAG search, has a current official Python SDK, and supports Search plus Extract/Crawl/Map/Research APIs. Its Search API can include cleaned parsed HTML content from results, and Extract can pull page content from specific URLs. The Python SDK is a simple package install and supports both search and extraction. LangChain’s current Python integration is `langchain-tavily`, with fields this app needs: title, URL, content snippet, raw content, answer, images, async support, domain filters, and time filters. Sources: Tavily Search do