<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcus ma</title>
    <description>The latest articles on DEV Community by Marcus ma (@cloudsway).</description>
    <link>https://dev.to/cloudsway</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063632%2F9661a69b-4ebe-446e-9af2-5be55e3f6caa.jpg</url>
      <title>DEV Community: Marcus ma</title>
      <link>https://dev.to/cloudsway</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cloudsway"/>
    <language>en</language>
    <item>
      <title>How to Build an Agentic RAG Pipeline with Real-Time Web Search</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Wed, 26 Aug 2026 03:39:16 +0000</pubDate>
      <link>https://dev.to/cloudsway/how-to-build-an-agentic-rag-pipeline-with-real-time-web-search-2k1l</link>
      <guid>https://dev.to/cloudsway/how-to-build-an-agentic-rag-pipeline-with-real-time-web-search-2k1l</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An agentic RAG pipeline treats retrieval as a tool the AI agent can call, evaluate, and call again rather than as a fixed step.&lt;/li&gt;
&lt;li&gt;The pipeline can search an internal knowledge base first, then use real-time web search when the available evidence is missing, weak, or outdated.&lt;/li&gt;
&lt;li&gt;Internal documents and web results should be converted into a shared evidence format before the model generates an answer.&lt;/li&gt;
&lt;li&gt;A reliable system must preserve URLs, publication dates, document identifiers, and the claims supported by each source.&lt;/li&gt;
&lt;li&gt;Retrieval quality, web-search precision, citation correctness, latency, cost, and stopping behaviour should all be evaluated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A basic RAG pipeline works well until the answer is not in the knowledge base.&lt;/p&gt;

&lt;p&gt;Imagine an enterprise copilot that can answer questions about internal product documentation. It performs semantic search against a vector database, retrieves several relevant passages, and passes them to a language model. For questions covered by the indexed documents, the system may work remarkably well.&lt;/p&gt;

&lt;p&gt;Then a user asks about a release announced yesterday, a recently changed regulation, or how the company’s product compares with a new competitor.&lt;/p&gt;

&lt;p&gt;The vector database cannot retrieve information it has never indexed. A conventional pipeline may return no answer, but it may also produce a confident response from incomplete or outdated context.&lt;/p&gt;

&lt;p&gt;Adding a Web Search API helps solve the freshness problem, but it introduces another decision: when should the system trust its internal knowledge, and when should it search the open web?&lt;/p&gt;

&lt;p&gt;An agentic RAG pipeline places that decision inside the retrieval workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a RAG Pipeline Agentic?
&lt;/h2&gt;

&lt;p&gt;A traditional RAG pipeline usually follows a fixed path: transform the question into a search query, retrieve the most similar passages, add those passages to the prompt, and generate an answer.&lt;/p&gt;

&lt;p&gt;An agentic RAG pipeline allows the model to make decisions between those stages. Retrieval becomes a tool rather than a mandatory one-time operation.&lt;/p&gt;

&lt;p&gt;The agent can determine what information the question requires, decide which source to search, inspect the evidence, reformulate the query, and retrieve again. It can also decide that the evidence is already sufficient and skip unnecessary searches.&lt;/p&gt;

&lt;p&gt;This does not mean every stage has to be autonomous. The strongest architectures often combine deterministic controls with a limited number of model-driven decisions. Search budgets, domain restrictions, evidence schemas, and citation requirements can remain fixed even when the agent controls query planning and routing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-agentic" rel="noopener noreferrer"&gt;Microsoft’s agentic RAG architecture guidance&lt;/a&gt; describes a similar pattern: retrieval is exposed as a tool that an agent can invoke while reasoning across several information sources.&lt;/p&gt;

&lt;p&gt;For a broader comparison of the two approaches, see &lt;a href="https://dev.toADD_INTERNAL_LINK"&gt;Agentic RAG vs. Traditional RAG: How AI Agents Improve Retrieval&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture of an Agentic RAG Pipeline
&lt;/h2&gt;

&lt;p&gt;A practical pipeline can begin with internal retrieval and expand to the web only when the initial evidence is inadequate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User query
    ↓
Intent and query planner
    ↓
Internal vector search
    ↓
Evidence grader
    ├── Sufficient ─────────────→ Answer with citations
    │
    └── Missing, weak or stale
                    ↓
             Web Search API
                    ↓
       Extract, normalise and deduplicate
                    ↓
         Optional follow-up search
                    ↓
             Answer with citations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The planner first determines whether the question contains several information needs. A broad request may need to be divided into smaller queries before any retrieval begins.&lt;/p&gt;

&lt;p&gt;The internal retriever then searches the existing knowledge base. This stage can use vector search, keyword search, or a hybrid approach. The important point is that the retrieved documents are not passed directly to the answer generator.&lt;/p&gt;

&lt;p&gt;An evidence grader checks whether those documents can support the requested answer. It should assess coverage, freshness and direct support—not just embedding similarity.&lt;/p&gt;

&lt;p&gt;If the evidence is sufficient, the pipeline can answer without using the web. If it is incomplete or outdated, the agent calls the Web Search API. The resulting pages are extracted, normalised, deduplicated and added to the same evidence store used for internal documents.&lt;/p&gt;

&lt;p&gt;This design gives web search a clear role. It is neither a permanent first step nor an unstructured last resort. It is an external evidence source invoked under defined conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build the Pipeline Around Evidence, Not Tools
&lt;/h2&gt;

&lt;p&gt;The most useful way to design this system is to begin with the evidence required by the final answer. Tools are simply different ways of obtaining that evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expose Internal Retrieval and Web Search as Separate Tools
&lt;/h3&gt;

&lt;p&gt;The internal retrieval tool should return the document text together with information such as the document ID, collection, section and retrieval score. The web-search tool should return a title, URL, snippet, source, publication date and, when necessary, extracted page content.&lt;/p&gt;

&lt;p&gt;Keeping the tools separate makes routing visible. It becomes possible to determine whether the agent searched the web unnecessarily, ignored a useful internal document, or relied on a snippet when it should have inspected the complete page.&lt;/p&gt;

&lt;p&gt;The tools should retrieve information rather than generate final answers. If a search tool silently summarises its results, the pipeline may lose the connection between the original evidence and the claims produced later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.langchain.com/oss/python/langgraph/agentic-rag" rel="noopener noreferrer"&gt;LangGraph’s custom RAG agent guide&lt;/a&gt; demonstrates this separation through dedicated retrieval, document-grading and query-rewriting stages. The same principle applies even if the pipeline uses another framework or a custom orchestrator.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a Router and an Evidence Grader
&lt;/h3&gt;

&lt;p&gt;The router decides where the search should begin. A question about an internal policy probably belongs in the knowledge base. A question containing phrases such as “latest”, “today” or “current price” is more likely to require real-time search.&lt;/p&gt;

&lt;p&gt;Some questions need both sources. A support agent might use internal documentation to explain how a product works, then search the web for a newly disclosed vulnerability affecting one of its dependencies.&lt;/p&gt;

&lt;p&gt;After internal retrieval, the evidence grader determines whether the results are sufficient. It should distinguish between several failure modes: no documents were retrieved, the documents are off-topic, the information is relevant but incomplete, or the information is too old for the question.&lt;/p&gt;

&lt;p&gt;This is where corrective RAG and adaptive RAG ideas become useful. The &lt;a href="https://arxiv.org/abs/2401.15884" rel="noopener noreferrer"&gt;Corrective RAG paper&lt;/a&gt; proposes assessing retrieved documents and using web search to extend the available information when the original corpus produces weak results.&lt;/p&gt;

&lt;p&gt;The grader does not need to be an unrestricted agent. It can use a structured output such as &lt;code&gt;sufficient&lt;/code&gt;, &lt;code&gt;partial&lt;/code&gt;, &lt;code&gt;irrelevant&lt;/code&gt; or &lt;code&gt;stale&lt;/code&gt;, followed by a short explanation. The workflow can then route each result through predefined edges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Normalise Internal and Web Evidence
&lt;/h3&gt;

&lt;p&gt;A vector database and a Web Search API return different types of data. If those formats are passed directly to the model, it becomes difficult to compare sources, remove duplicates or produce reliable citations.&lt;/p&gt;

&lt;p&gt;Both sources should be converted into a shared evidence structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"internal | web"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Source title"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url_or_document_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Source identifier"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"published_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Publication or update date"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Relevant source passage"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"relevance_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.86&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"supported_claims"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Claim supported by this source"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact fields can change, but every evidence item needs a stable identity and a traceable origin.&lt;/p&gt;

&lt;p&gt;Web results also require additional processing. Several pages may repeat the same press release, quote the same research paper, or reproduce an announcement without adding independent evidence. Deduplication should therefore consider the underlying source, not only whether the URLs are different.&lt;/p&gt;

&lt;p&gt;Search-result snippets may be enough to decide which pages deserve inspection, but they are usually too limited to support important claims. When a claim matters, the pipeline should retrieve the page and preserve the relevant passage.&lt;/p&gt;

&lt;p&gt;For a deeper explanation of web evidence and source handling, see &lt;a href="https://dev.toADD_INTERNAL_LINK"&gt;Agentic Search: How AI Agents Search, Evaluate, and Cite the Web&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define Search and Stopping Rules
&lt;/h3&gt;

&lt;p&gt;Once an agent can search repeatedly, it needs rules for when another search is justified.&lt;/p&gt;

&lt;p&gt;A follow-up search may be appropriate when a key subquestion has no supporting evidence, two credible sources disagree, the retrieved pages are outdated, or the current results introduce a new term that requires investigation.&lt;/p&gt;

&lt;p&gt;The pipeline should also know when to stop. It may finish when every important claim has at least one suitable source, the requested topics have been covered, and another query is unlikely to change the conclusion.&lt;/p&gt;

&lt;p&gt;Hard limits remain necessary. A production system should cap the number of searches, inspected pages, tokens, elapsed time or API spend. These limits protect the application when the model keeps reformulating queries without finding anything useful.&lt;/p&gt;

&lt;p&gt;NVIDIA’s &lt;a href="https://docs.nvidia.com/rag/latest/agentic-rag.html" rel="noopener noreferrer"&gt;Agentic RAG Blueprint&lt;/a&gt; uses planning, task execution, synthesis and optional verification, while also acknowledging that the agentic path requires additional model calls and latency. That trade-off should be explicit in any implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Evaluate the Pipeline
&lt;/h2&gt;

&lt;p&gt;The final answer is only one part of an agentic RAG evaluation. The path used to produce it also matters.&lt;/p&gt;

&lt;p&gt;Retrieval relevance measures whether the internal search found the correct documents. Fallback precision measures whether web search was called only when it added value. If the system searches the web for every question, the router is not doing useful work.&lt;/p&gt;

&lt;p&gt;Groundedness examines whether the answer is supported by the collected evidence, while citation correctness checks whether each cited source supports the particular claim attached to it. Source quality should account for authority, freshness and independence.&lt;/p&gt;

&lt;p&gt;Operational metrics are equally important. Web search, page extraction and repeated tool calls add latency and cost. Agent observability should therefore capture queries, routing decisions, retrieved sources, grader outputs, retries and stopping reasons.&lt;/p&gt;

&lt;p&gt;An evaluation set should contain simple internal questions, current questions that require the web, questions that need both sources, and questions for which no reliable answer exists. The last category tests whether the system can stop and acknowledge uncertainty instead of continuing to search indefinitely.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a Basic RAG Pipeline Is Still Better
&lt;/h2&gt;

&lt;p&gt;Agentic RAG should not be the default architecture for every retrieval task.&lt;/p&gt;

&lt;p&gt;If the knowledge base is stable, the questions are predictable and one retrieval step usually finds the necessary context, a basic RAG pipeline will be faster, cheaper and easier to evaluate.&lt;/p&gt;

&lt;p&gt;Agentic retrieval becomes valuable when the system must choose among sources, handle multi-step questions, recover from weak retrieval or access current information. The additional complexity should solve an identifiable retrieval problem rather than merely make the architecture appear more advanced.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A Web Search API gives a RAG agent access to current information. The agentic pipeline decides when that information is needed, how it should be combined with internal knowledge, which sources deserve to be trusted and when the research should end.&lt;/p&gt;

&lt;p&gt;The most reliable systems do not begin with autonomous tools. They begin with a clear evidence model, controlled routing and measurable stopping conditions.&lt;/p&gt;

&lt;p&gt;When those foundations are in place, real-time web search becomes more than a fallback. It becomes a traceable evidence layer for answers that an internal knowledge base could not produce alone.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
      <category>rag</category>
      <category>api</category>
    </item>
    <item>
      <title>Agentic Search for Developers: How AI Agents Search, Evaluate, and Cite the Web</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Tue, 25 Aug 2026 02:52:52 +0000</pubDate>
      <link>https://dev.to/cloudsway/agentic-search-for-developers-how-ai-agents-search-evaluate-and-cite-the-web-4k8j</link>
      <guid>https://dev.to/cloudsway/agentic-search-for-developers-how-ai-agents-search-evaluate-and-cite-the-web-4k8j</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Agentic search lets an AI agent plan queries, inspect results, identify missing evidence, and search again before answering.&lt;/li&gt;
&lt;li&gt;It differs from traditional RAG because it can work with live web information instead of relying only on a pre-indexed knowledge base.&lt;/li&gt;
&lt;li&gt;Search results should be treated as evidence, not as finished answers.&lt;/li&gt;
&lt;li&gt;A production search agent needs persistent state, source-quality checks, citations, and explicit search limits.&lt;/li&gt;
&lt;li&gt;The hardest part is often not calling the search API—it is deciding when the agent has enough evidence to stop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adding web search to an AI agent looks simple at first.&lt;/p&gt;

&lt;p&gt;Define a search tool, send the user’s question to an API, return the results to the model, and ask it to write an answer. That is enough for a demo, but it is rarely enough for a dependable research system.&lt;/p&gt;

&lt;p&gt;The first query may be too broad. The results may be outdated, duplicated, or promotional. Important evidence may be buried several pages deep, while two credible sources may disagree about the same claim.&lt;/p&gt;

&lt;p&gt;A useful search agent must therefore do more than retrieve links. It must decide what to search for, evaluate what it finds, recognize what is still missing, and determine when further searching is no longer useful.&lt;/p&gt;

&lt;p&gt;That is the basic idea behind &lt;strong&gt;agentic search&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Agentic Search?
&lt;/h2&gt;

&lt;p&gt;Agentic search is an iterative search process controlled by an AI agent.&lt;/p&gt;

&lt;p&gt;Instead of sending one query and immediately generating an answer, the agent treats the request as a research task. It can break the task into smaller questions, create multiple queries, inspect individual pages, compare sources, and refine its search plan as new information appears.&lt;/p&gt;

&lt;p&gt;Consider this request:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which search infrastructure would work best for a customer-support agent that needs current product documentation, regional sources, and verifiable citations?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A basic search integration might submit the whole sentence as one query and summarize the first few results.&lt;/p&gt;

&lt;p&gt;An agentic system would approach the question differently. It might first identify several decisions that need to be made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which services provide sufficiently fresh web results?&lt;/li&gt;
&lt;li&gt;Which ones support geographic or domain filtering?&lt;/li&gt;
&lt;li&gt;Do they return source URLs and publication dates?&lt;/li&gt;
&lt;li&gt;Can they retrieve the full page when a snippet is not enough?&lt;/li&gt;
&lt;li&gt;What are their latency and pricing characteristics?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The searches performed later in the process depend on what the agent discovers earlier. If a provider supports regional search but does not clearly document its citation metadata, the agent can create a follow-up query specifically for that gap.&lt;/p&gt;

&lt;p&gt;This is what makes the search process agentic: the route is not completely predetermined.&lt;/p&gt;

&lt;p&gt;Anthropic makes a similar distinction in its guide to &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" rel="noopener noreferrer"&gt;building effective agents&lt;/a&gt;. Workflows follow predefined paths, while agents dynamically decide how to use tools and direct the process.&lt;/p&gt;

&lt;p&gt;Agentic search applies that decision-making ability to information retrieval.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Agentic Search Loop
&lt;/h2&gt;

&lt;p&gt;Most agentic search systems can be understood as a feedback loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understand the goal → plan the research → search → evaluate the evidence → refine or answer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent begins by interpreting the request. This matters because a user’s prompt does not always contain a good search query.&lt;/p&gt;

&lt;p&gt;For example, “compare the leading AI agent frameworks” leaves several questions unanswered. What qualifies as leading? Should the comparison focus on adoption, orchestration features, deployment, observability, or enterprise support? Does the answer require current release information?&lt;/p&gt;

&lt;p&gt;After identifying the real information needs, the agent generates one or more focused queries. It sends them to a search API, receives the results, and evaluates whether those results provide enough evidence.&lt;/p&gt;

&lt;p&gt;If the evidence is weak or incomplete, the agent searches again.&lt;/p&gt;

&lt;p&gt;A simplified control loop might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_research_state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nf"&gt;should_stop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;plan_next_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;search_web&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;evidence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;evaluate_results&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;evidence&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generate_answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user_request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;evidence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;accepted_evidence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;include_citations&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code is not the difficult part. The real engineering decisions are hidden inside &lt;code&gt;plan_next_query&lt;/code&gt;, &lt;code&gt;evaluate_results&lt;/code&gt;, and &lt;code&gt;should_stop&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those functions determine whether the system behaves like a research agent or merely a language model repeatedly calling a search endpoint.&lt;/p&gt;

&lt;p&gt;Mistral’s &lt;a href="https://docs.mistral.ai/studio/search/agentic-search" rel="noopener noreferrer"&gt;Agentic Search documentation&lt;/a&gt; describes a similar orchestration layer in which the model can search, inspect results, navigate sources, and search again as new information needs appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agentic Search vs. Traditional RAG
&lt;/h2&gt;

&lt;p&gt;Agentic search and retrieval-augmented generation solve related problems, but they are not the same architecture.&lt;/p&gt;

&lt;p&gt;Traditional RAG normally begins with a prepared knowledge base. Documents are collected, divided into chunks, converted into embeddings, and stored in a vector database. When a user submits a question, the system retrieves relevant chunks and places them in the model’s context.&lt;/p&gt;

&lt;p&gt;This works well when the information is stable and the organization controls the documents. Internal policies, product manuals, support articles, and private company data are good RAG use cases.&lt;/p&gt;

&lt;p&gt;Agentic search is better suited to information that changes frequently, lives on the open web, or cannot be indexed in advance. It can change its query strategy during execution and investigate unexpected information discovered along the way.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Traditional RAG&lt;/th&gt;
&lt;th&gt;Agentic Search&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Information source&lt;/td&gt;
&lt;td&gt;Pre-indexed knowledge base&lt;/td&gt;
&lt;td&gt;Live web or external sources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retrieval behavior&lt;/td&gt;
&lt;td&gt;Usually one retrieval stage&lt;/td&gt;
&lt;td&gt;Adaptive, multi-round search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query strategy&lt;/td&gt;
&lt;td&gt;Based mainly on the original prompt&lt;/td&gt;
&lt;td&gt;Changes as evidence gaps appear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best suited for&lt;/td&gt;
&lt;td&gt;Stable internal knowledge&lt;/td&gt;
&lt;td&gt;Current or open-ended research&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main risk&lt;/td&gt;
&lt;td&gt;Missing indexed information&lt;/td&gt;
&lt;td&gt;Search loops, weak sources, and higher cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In practice, developers do not always need to choose one or the other.&lt;/p&gt;

&lt;p&gt;A production agent might search an internal knowledge base first. If the internal material is insufficient or the request depends on recent information, the agent can search the web and compare the new evidence with the internal documents.&lt;/p&gt;

&lt;p&gt;RAG supplies controlled organizational knowledge. Agentic search supplies freshness and external coverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Agentic Search with a Web Search API
&lt;/h2&gt;

&lt;p&gt;A Web Search API provides access to information. The surrounding agent workflow determines whether that information becomes a reliable answer.&lt;/p&gt;

&lt;p&gt;The architecture usually contains a planner, a search tool, an evidence store, an evaluator, and an answer generator. Depending on the application, there may also be a page-content extractor, reranker, citation validator, or human-review stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Give the Search Tool a Clear Contract
&lt;/h3&gt;

&lt;p&gt;The search tool should accept predictable, structured inputs. These may include the query, language, region, date range, allowed domains, blocked domains, and maximum number of results.&lt;/p&gt;

&lt;p&gt;The output should also be consistent. Each result should ideally contain a title, URL, snippet, source name, and publication date. If the tool retrieves full-page content, that content must remain connected to its original URL.&lt;/p&gt;

&lt;p&gt;A clear contract makes tool calls easier to test and inspect. It also reduces the risk that the agent will confuse a search snippet with a verified claim.&lt;/p&gt;

&lt;p&gt;The search function should retrieve evidence. It should not silently generate the final answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Treat Search Results as Evidence
&lt;/h3&gt;

&lt;p&gt;A high-ranking result is not automatically a trustworthy source.&lt;/p&gt;

&lt;p&gt;Search rankings measure relevance using many signals, but they do not guarantee accuracy. A result may be outdated, promotional, copied from another page, or based on a source that is no longer available.&lt;/p&gt;

&lt;p&gt;Before using a result, the agent should consider questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the page directly support the claim?&lt;/li&gt;
&lt;li&gt;Is the publication date relevant?&lt;/li&gt;
&lt;li&gt;Is this a primary source or a summary of another source?&lt;/li&gt;
&lt;li&gt;Are several results repeating the same underlying report?&lt;/li&gt;
&lt;li&gt;Does another credible source contradict it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For high-impact claims, the agent may need to inspect the full page or confirm the information with another independent source.&lt;/p&gt;

&lt;p&gt;The evidence should also remain connected to its citation. If the workflow summarizes pages and discards their URLs, the final model may produce an answer that sounds well researched but cannot show where its claims came from.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preserve Research State
&lt;/h3&gt;

&lt;p&gt;A multi-step search agent needs memory.&lt;/p&gt;

&lt;p&gt;At a minimum, it should retain the queries already attempted, sources already inspected, claims supported by each source, unresolved questions, and the reason another search is needed.&lt;/p&gt;

&lt;p&gt;Without this state, an agent may repeat the same query, inspect the same source several times, or lose the relationship between a claim and its evidence.&lt;/p&gt;

&lt;p&gt;Graph-based orchestration works well for this type of workflow because search naturally contains branches and loops. LangGraph’s &lt;a href="https://docs.langchain.com/oss/python/langgraph/graph-api" rel="noopener noreferrer"&gt;Graph API&lt;/a&gt;, for example, uses shared state, nodes, and conditional edges.&lt;/p&gt;

&lt;p&gt;A search node can retrieve results. An evaluation node can determine whether the evidence is sufficient. A conditional edge can then send the workflow either back to query planning or forward to answer generation.&lt;/p&gt;

&lt;p&gt;The framework itself is optional. The important part is that every stage leaves behind enough structured information for the next stage to make a better decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Decide When to Stop
&lt;/h3&gt;

&lt;p&gt;Stopping is one of the most important—and easiest to overlook—parts of agentic search.&lt;/p&gt;

&lt;p&gt;If the agent stops too early, the answer may be incomplete. If it keeps searching, latency and API costs continue to rise even when the additional results add little value.&lt;/p&gt;

&lt;p&gt;A reliable workflow usually combines evidence-based stopping conditions with hard limits.&lt;/p&gt;

&lt;p&gt;The agent may stop when all required subquestions have supporting evidence, important claims have citations, and the latest searches are no longer producing new information. At the same time, the system should impose a maximum number of searches, page inspections, tokens, or seconds.&lt;/p&gt;

&lt;p&gt;The final decision should not rely entirely on the model saying, “I am confident now.”&lt;/p&gt;

&lt;p&gt;Model confidence can be useful, but it is not a safety boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating an Agentic Search System
&lt;/h2&gt;

&lt;p&gt;Evaluating only the final answer is not enough.&lt;/p&gt;

&lt;p&gt;Two agents can produce similar responses while using very different processes. One might rely on current primary sources and stop after four focused searches. Another might perform fifteen repetitive searches, use weak sources, and attach citations that do not support its claims.&lt;/p&gt;

&lt;p&gt;A useful evaluation should examine both the result and the research trajectory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Groundedness&lt;/strong&gt; asks whether the answer is supported by the collected evidence. &lt;strong&gt;Citation correctness&lt;/strong&gt; checks whether each linked source supports the sentence where it appears. &lt;strong&gt;Source quality&lt;/strong&gt; examines authority, freshness, independence, and relevance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coverage&lt;/strong&gt; measures whether the research addressed the important parts of the request. &lt;strong&gt;Search efficiency&lt;/strong&gt; considers the number of queries, page inspections, tokens, API calls, and seconds required to complete the task.&lt;/p&gt;

&lt;p&gt;The trajectory itself can also be tested. Did the agent reformulate a query after poor results? Did it recognize conflicting evidence? Did it apply date or domain filters when required? Did it stop for a defensible reason?&lt;/p&gt;

&lt;p&gt;Anthropic’s guide to &lt;a href="https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents" rel="noopener noreferrer"&gt;evaluating AI agents&lt;/a&gt; recommends evaluating both final outputs and the tool-use process that produced them. This is especially important for search agents because an apparently good answer can hide a fragile research process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Agentic Search Is Most Useful
&lt;/h2&gt;

&lt;p&gt;Agentic search is valuable when an answer depends on current, external, or difficult-to-predict information.&lt;/p&gt;

&lt;p&gt;It fits research assistants, monitoring agents, fact-checking systems, competitive intelligence tools, shopping assistants, technical support agents, and products that must answer with verifiable sources.&lt;/p&gt;

&lt;p&gt;It is less useful when the answer already exists in a stable, controlled knowledge base. In those cases, traditional retrieval may be faster, cheaper, and easier to evaluate.&lt;/p&gt;

&lt;p&gt;Agentic behavior should be introduced because the task requires adaptive research—not simply because an agent loop is technically possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Agentic search changes retrieval from a single lookup into a managed research process.&lt;/p&gt;

&lt;p&gt;The agent decides what it needs to learn, creates queries, evaluates sources, preserves evidence, identifies gaps, and determines when the research is complete.&lt;/p&gt;

&lt;p&gt;That flexibility helps AI systems answer current and open-ended questions, but it creates new engineering responsibilities. Developers must control search loops, verify citations, measure source quality, preserve state, and manage cost and latency.&lt;/p&gt;

&lt;p&gt;Calling a Web Search API is the easy part.&lt;/p&gt;

&lt;p&gt;Building an agent that knows what to search for, what to trust, and when to stop is where the real work begins.&lt;/p&gt;




&lt;p&gt;If you are building an agent that searches the web, what has been the hardest part to control: query planning, source quality, citations, or stopping conditions?&lt;/p&gt;

&lt;p&gt;I would be interested to hear how you are approaching it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
      <category>rag</category>
      <category>api</category>
    </item>
    <item>
      <title>AI Slop Is Becoming a Search Infrastructure Problem</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Mon, 24 Aug 2026 08:15:39 +0000</pubDate>
      <link>https://dev.to/cloudsway/ai-slop-is-becoming-a-search-infrastructure-problem-112d</link>
      <guid>https://dev.to/cloudsway/ai-slop-is-becoming-a-search-infrastructure-problem-112d</guid>
      <description>&lt;p&gt;LinkedIn recently added a “Seems like AI slop” option to the menu attached to each post. According to the company’s chief product officer, users selected it more than one million times during its first two weeks.&lt;/p&gt;

&lt;p&gt;The number represents reports rather than verified AI-generated posts or unique users. Even so, one million clicks is a strong signal. People are finding enough repetitive, low-value content in their feeds that they actively want a way to filter it out.&lt;/p&gt;

&lt;p&gt;For most users, this looks like a social media moderation problem. For developers building search engines, RAG applications, research assistants, and autonomous agents, it exposes a deeper failure mode.&lt;/p&gt;

&lt;p&gt;The web can contain millions of pages without containing millions of independent facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI-Generated and Low-Quality Are Different Labels
&lt;/h2&gt;

&lt;p&gt;“AI slop” has no stable technical definition.&lt;/p&gt;

&lt;p&gt;The term can describe automatically generated spam, inaccurate summaries, repetitive LinkedIn posts, mass-produced SEO pages, or any writing that sounds recognizably machine-generated.&lt;/p&gt;

&lt;p&gt;These categories often get grouped together, even though they represent different problems.&lt;/p&gt;

&lt;p&gt;Authorship asks how the content was created. Accuracy asks whether its claims are true. Originality asks whether it contributes new information. Quality asks whether it helps the reader accomplish something.&lt;/p&gt;

&lt;p&gt;An AI-content detector usually addresses only the first question.&lt;/p&gt;

&lt;p&gt;This distinction matters for developers because authorship is an unreliable proxy for usefulness. A human can manually publish an empty article built from familiar talking points. An AI-assisted article can include original benchmarks, customer interviews, real implementation details, and carefully verified sources.&lt;/p&gt;

&lt;p&gt;A system that treats “likely AI-generated” as equivalent to “low quality” will make predictable mistakes.&lt;/p&gt;

&lt;p&gt;Generated status should be treated as metadata. It should not become the quality score itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  LinkedIn Is Building a Human Feedback Dataset
&lt;/h2&gt;

&lt;p&gt;LinkedIn’s &lt;a href="https://www.linkedin.com/posts/hsrinivasan1_ai-slop-is-a-top-priority-for-all-of-us-share-7488612006321889282-Ps8Z/" rel="noopener noreferrer"&gt;announcement&lt;/a&gt; described AI slop as a priority and outlined new classifiers for identifying low-quality and automated content.&lt;/p&gt;

&lt;p&gt;The reporting button adds another component: human-labeled feedback.&lt;/p&gt;

&lt;p&gt;That feedback is valuable because people notice qualities that automated classifiers struggle to measure. An experienced developer may immediately recognize that a technical post contains no working details. A hiring manager may see that a leadership story is built entirely from recycled advice. A researcher may notice that an article contains statistics without identifiable sources.&lt;/p&gt;

&lt;p&gt;Each click gives LinkedIn a signal that a post produced a negative quality judgment.&lt;/p&gt;

&lt;p&gt;The signal also contains noise.&lt;/p&gt;

&lt;p&gt;Readers have different standards for what counts as AI slop. Some react to formatting, tone, or vocabulary. Others use the label for any content they dislike. Posts written by non-native English speakers may be polished with writing tools and then mistaken for automated content.&lt;/p&gt;

&lt;p&gt;A reporting option can also be abused by competitors, critics, or coordinated groups.&lt;/p&gt;

&lt;p&gt;The button is useful because it collects experience at scale. Its reliability depends on how LinkedIn combines that data with other signals.&lt;/p&gt;

&lt;p&gt;For search and recommendation developers, this is a familiar lesson: user feedback is informative, contextual, and imperfect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watermarks Solve a Smaller Problem
&lt;/h2&gt;

&lt;p&gt;Anthropic is approaching AI-content transparency from the generation side.&lt;/p&gt;

&lt;p&gt;Claude models launched on or after August 2, 2026 include machine-readable markings in generated text. Files such as images and documents may also include signed provenance metadata. Anthropic explains the approach in its documentation on &lt;a href="https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content" rel="noopener noreferrer"&gt;how Claude marks AI-generated content&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A text watermark generally works by influencing token selection. The output reads normally to a person, while a detector can examine statistical patterns in the text.&lt;/p&gt;

&lt;p&gt;This can support provenance, regulatory compliance, abuse investigation, and coordinated campaign detection. It helps answer whether a piece of text probably came from a particular generation system.&lt;/p&gt;

&lt;p&gt;It says very little about whether the content is accurate.&lt;/p&gt;

&lt;p&gt;A watermarked security explanation could be carefully researched and technically correct. A manually written article could contain fabricated benchmarks and invented sources.&lt;/p&gt;

&lt;p&gt;Watermarks also become less reliable as content moves through editing pipelines. Text may be shortened, translated, paraphrased, or passed through another model before publication.&lt;/p&gt;

&lt;p&gt;A recent &lt;a href="https://arxiv.org/abs/2607.16010" rel="noopener noreferrer"&gt;empirical evaluation of AI watermarking&lt;/a&gt; found that paraphrasing substantially weakened several watermarking approaches and produced uncertain or incorrect classifications under some experimental conditions.&lt;/p&gt;

&lt;p&gt;Watermarking remains useful for provenance. Search quality requires a wider set of evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Failure Mode Is Synthetic Consensus
&lt;/h2&gt;

&lt;p&gt;Consider a typical web-enabled RAG pipeline:&lt;/p&gt;

&lt;p&gt;A user submits a question. The application retrieves search results, extracts page content, splits it into chunks, ranks those chunks, and sends the highest-ranked material to a language model.&lt;/p&gt;

&lt;p&gt;Now imagine that one incorrect claim is published on a small website.&lt;/p&gt;

&lt;p&gt;Several automated news aggregators summarize it. SEO sites rewrite those summaries. Social media accounts turn the claim into short posts. More websites generate articles based on those posts.&lt;/p&gt;

&lt;p&gt;A search query may return twenty pages that repeat the same claim with slightly different wording.&lt;/p&gt;

&lt;p&gt;A basic retrieval system sees twenty relevant documents. The model sees apparent agreement across several sources. The user receives a confident answer.&lt;/p&gt;

&lt;p&gt;The system has mistaken repetition for confirmation.&lt;/p&gt;

&lt;p&gt;This is synthetic consensus: one claim is transformed into many pages, and content volume creates the appearance of independent evidence.&lt;/p&gt;

&lt;p&gt;Keyword-based duplicate detection catches exact copies. AI-generated rewrites are more difficult because the wording changes while the underlying information remains the same.&lt;/p&gt;

&lt;p&gt;Embedding similarity can help identify near-duplicates, although document-level similarity alone may miss pages that share only one repeated claim. Stronger systems will need to compare sources, citations, entities, and individual factual statements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top-K Retrieval Can Amplify the Problem
&lt;/h2&gt;

&lt;p&gt;Many RAG systems optimize retrieval around semantic relevance.&lt;/p&gt;

&lt;p&gt;Given a query, they select the chunks that appear most closely related to the user’s question. This works well when the source collection contains diverse and reliable material.&lt;/p&gt;

&lt;p&gt;On the open web, the most semantically similar results may all be derived from the same origin.&lt;/p&gt;

&lt;p&gt;If the top five results repeat one announcement, the model effectively receives one source five times. The repeated language increases confidence without increasing evidence.&lt;/p&gt;

&lt;p&gt;More documents do not automatically create better context. Independence matters as much as relevance.&lt;/p&gt;

&lt;p&gt;A retrieval pipeline should therefore consider whether its selected sources represent separate information paths.&lt;/p&gt;

&lt;p&gt;Two articles quoting the same press release belong to one evidence cluster. A vendor announcement, an independent benchmark, a customer report, and a public dataset provide four different forms of evidence.&lt;/p&gt;

&lt;p&gt;This distinction becomes especially important for research agents. An agent may be instructed to compare sources, yet it cannot perform a meaningful comparison when every result originates from the same claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Trust-Aware Retrieval Needs to Measure
&lt;/h2&gt;

&lt;p&gt;A better search and retrieval layer needs more than a binary AI-content label.&lt;/p&gt;

&lt;h3&gt;
  
  
  Provenance
&lt;/h3&gt;

&lt;p&gt;The system should identify where a claim first appeared.&lt;/p&gt;

&lt;p&gt;A product announcement from the company, a report quoting that announcement, and a generated summary of the report should have a visible relationship. Search results should help the model locate the primary source.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source independence
&lt;/h3&gt;

&lt;p&gt;Several URLs may still represent one source.&lt;/p&gt;

&lt;p&gt;Retrieval systems should cluster pages that share the same citations, quotes, data, or factual structure. The final context should contain evidence from multiple independent clusters rather than several rewrites from one cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Freshness
&lt;/h3&gt;

&lt;p&gt;Technical information expires quickly.&lt;/p&gt;

&lt;p&gt;API behavior, pricing, security advisories, laws, product availability, and model specifications can change within days. A polished article may rank well long after its details have become obsolete.&lt;/p&gt;

&lt;p&gt;Published dates, update dates, and the timing of cited sources should influence retrieval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Citation support
&lt;/h3&gt;

&lt;p&gt;A page containing links is not necessarily well sourced.&lt;/p&gt;

&lt;p&gt;The retrieval layer should check whether a citation actually supports the surrounding claim. This requires moving beyond URL counting toward claim-to-source relationships.&lt;/p&gt;

&lt;h3&gt;
  
  
  Duplication
&lt;/h3&gt;

&lt;p&gt;Exact duplicate detection is no longer enough.&lt;/p&gt;

&lt;p&gt;Systems need semantic deduplication at the document and claim levels. They should identify articles that preserve the same facts and reasoning while changing the presentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Domain-specific authority
&lt;/h3&gt;

&lt;p&gt;A website’s general popularity does not guarantee expertise in every subject.&lt;/p&gt;

&lt;p&gt;A small project repository may be the strongest source for a software change. A government regulator may be the best source for a new rule. An independent security researcher may have better evidence about a vulnerability than a large technology publication.&lt;/p&gt;

&lt;p&gt;Authority should be evaluated in relation to the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search APIs Need to Return More Than Text
&lt;/h2&gt;

&lt;p&gt;A basic search response may contain a title, URL, snippet, and page content.&lt;/p&gt;

&lt;p&gt;Agent-oriented search benefits from richer metadata: publication time, source type, citations, language, content format, and relationships between results.&lt;/p&gt;

&lt;p&gt;This metadata helps the agent distinguish a primary source from a summary, compare dates, and avoid treating duplicate pages as independent evidence.&lt;/p&gt;

&lt;p&gt;Search APIs designed for AI agents, including &lt;a href="https://www.cloudsway.ai/product/search/" rel="noopener noreferrer"&gt;Cloudsway Search&lt;/a&gt;, are moving toward structured web data because raw text alone provides too little context for reliable decisions.&lt;/p&gt;

&lt;p&gt;The retrieval layer should help an agent answer two separate questions:&lt;/p&gt;

&lt;p&gt;What does this page say?&lt;/p&gt;

&lt;p&gt;Why should this page influence the answer?&lt;/p&gt;

&lt;p&gt;Most current RAG pipelines are much better at the first question.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Agents Make Search Quality More Important
&lt;/h2&gt;

&lt;p&gt;A human browsing search results has several informal defenses.&lt;/p&gt;

&lt;p&gt;They can recognize a suspicious domain, notice repetitive language, open multiple tabs, inspect the author, or decide that a page feels empty.&lt;/p&gt;

&lt;p&gt;An AI agent may read and process hundreds of pages without experiencing that kind of fatigue or skepticism. It can absorb low-quality information at machine speed.&lt;/p&gt;

&lt;p&gt;The consequences also extend beyond generating a weak summary.&lt;/p&gt;

&lt;p&gt;A coding agent may follow outdated documentation. A shopping agent may recommend a product based on automated comparison pages. A research agent may cite several articles that all copied the same source. A compliance agent may interpret an old regulation as current.&lt;/p&gt;

&lt;p&gt;When an agent can act on retrieved information, search quality becomes part of the application’s safety model.&lt;/p&gt;

&lt;p&gt;Model intelligence cannot compensate for missing or misleading evidence. The retrieval layer decides what information reaches the model in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better Content Still Has a Future
&lt;/h2&gt;

&lt;p&gt;The growth of AI-generated publishing does not make content irrelevant. It changes which content remains valuable.&lt;/p&gt;

&lt;p&gt;First-hand information becomes more important. Benchmarks, experiments, interviews, implementation failures, screenshots, datasets, and detailed case studies add information that cannot be recovered by summarizing existing search results.&lt;/p&gt;

&lt;p&gt;Clear sourcing also becomes a competitive advantage. Articles that show where claims came from are easier for readers to verify and easier for agents to cite.&lt;/p&gt;

&lt;p&gt;Independent judgment matters as well.&lt;/p&gt;

&lt;p&gt;The web already has enough summaries. Useful writing explains why an event matters, which assumptions deserve scrutiny, and what changes for the reader.&lt;/p&gt;

&lt;p&gt;AI can support research, organization, editing, and translation. The final article still needs to contribute evidence, experience, or analysis that was previously missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search Will Compete on Evidence Density
&lt;/h2&gt;

&lt;p&gt;LinkedIn’s million AI slop reports show that users already feel the cost of synthetic content.&lt;/p&gt;

&lt;p&gt;Platforms are responding with report buttons, classifiers, watermarks, and provenance metadata. Each tool contributes a useful signal, and each has clear limitations.&lt;/p&gt;

&lt;p&gt;For developers building search and RAG systems, the larger opportunity lies in evidence-aware retrieval.&lt;/p&gt;

&lt;p&gt;The next generation of search infrastructure will need to trace claims to their origins, identify duplicate information, preserve publication context, evaluate citations, and select genuinely independent sources.&lt;/p&gt;

&lt;p&gt;The goal is no longer to retrieve the largest number of relevant pages.&lt;/p&gt;

&lt;p&gt;The goal is to retrieve the smallest set of sources that provides the strongest evidence.&lt;/p&gt;

&lt;p&gt;As the web becomes easier to generate, evidence density will become one of the most valuable search signals.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>machinelearning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>DeepSeek Harness Explained: Why “Everything Is a Plugin” Matters</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Fri, 21 Aug 2026 02:47:07 +0000</pubDate>
      <link>https://dev.to/cloudsway/deepseek-harness-explained-why-everything-is-a-plugin-matters-286c</link>
      <guid>https://dev.to/cloudsway/deepseek-harness-explained-why-everything-is-a-plugin-matters-286c</guid>
      <description>&lt;p&gt;DeepSeek Harness has already passed 170,000 stars on GitHub, and a predictable label has followed it around: &lt;em&gt;Claude Code killer&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I understand the comparison. It is open source, MIT-licensed, supports multiple model providers, and can run coding-agent workflows. If you only look at the surface, it seems like another entry in the increasingly crowded list of terminal coding agents.&lt;/p&gt;

&lt;p&gt;But that is not the interesting part.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness" rel="noopener noreferrer"&gt;DeepSeek Harness&lt;/a&gt;, or &lt;code&gt;dsh&lt;/code&gt;, is really an attempt to make the machinery around an AI agent replaceable. The model adapter is a plugin. The tool registry is a plugin. Sessions, sandboxes, telemetry, interfaces, and even the default agent loop are plugins.&lt;/p&gt;

&lt;p&gt;That makes DSH less like a free copy of Claude Code and more like a kit for building the coding agent—or research agent, or internal automation agent—you actually want.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An agent harness is the runtime around a model: context, tools, state, permissions, execution, and the loop that connects them.&lt;/li&gt;
&lt;li&gt;DeepSeek Harness applies one plugin system to nearly every part of that runtime.&lt;/li&gt;
&lt;li&gt;It gives developers more architectural control than a typical finished coding agent, but also more setup and maintenance work.&lt;/li&gt;
&lt;li&gt;Claude Code and Codex are still better fits when you want a polished product. OpenCode is a closer comparison if you want an open, provider-agnostic coding agent.&lt;/li&gt;
&lt;li&gt;DSH is currently a developer preview, so treat it as a platform to explore rather than infrastructure you can adopt without evaluation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  First: What Is an Agent Harness?
&lt;/h2&gt;

&lt;p&gt;A language model cannot edit a repository, run tests, search documentation, or ask you to approve a shell command on its own.&lt;/p&gt;

&lt;p&gt;It needs a runtime that decides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what context reaches the model;&lt;/li&gt;
&lt;li&gt;which tools the model can call;&lt;/li&gt;
&lt;li&gt;how tool arguments are validated;&lt;/li&gt;
&lt;li&gt;where commands are executed;&lt;/li&gt;
&lt;li&gt;how session state is stored;&lt;/li&gt;
&lt;li&gt;when the agent should continue or stop;&lt;/li&gt;
&lt;li&gt;which actions require human approval.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That runtime is the harness.&lt;/p&gt;

&lt;p&gt;This is why the same model can feel surprisingly different across two coding tools. Model quality matters, but so do the system prompt, context strategy, tool schemas, permission boundaries, and recovery behavior.&lt;/p&gt;

&lt;p&gt;The model supplies the reasoning. The harness determines how that reasoning turns into action.&lt;/p&gt;

&lt;h2&gt;
  
  
  What DSH Does Differently
&lt;/h2&gt;

&lt;p&gt;Plenty of developer tools have plugins. DeepSeek Harness goes further by making the runtime itself composable.&lt;/p&gt;

&lt;p&gt;DSH is built on &lt;a href="https://github.com/cordiverse/cordis" rel="noopener noreferrer"&gt;Cordis&lt;/a&gt;, a framework in which plugins contribute services, typed events, and reversible effects to a shared context. According to the &lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md" rel="noopener noreferrer"&gt;official architecture guide&lt;/a&gt;, there is no privileged core that must be patched whenever you want to change the product.&lt;/p&gt;

&lt;p&gt;Instead, a running DSH instance is assembled as a plugin tree.&lt;/p&gt;

&lt;p&gt;The base layer provides things such as model adapters, tools, persistence, sandboxing, approvals, credentials, and telemetry. A profile then adds the pieces needed for a particular environment. DSH currently ships &lt;code&gt;web&lt;/code&gt; and &lt;code&gt;headless&lt;/code&gt; profile templates.&lt;/p&gt;

&lt;p&gt;The practical result is that you can swap one capability without rebuilding everything around it.&lt;/p&gt;

&lt;p&gt;For example, a team could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;change the model provider while keeping its existing tools;&lt;/li&gt;
&lt;li&gt;move shell execution from a laptop to a remote sandbox;&lt;/li&gt;
&lt;li&gt;replace the default loop with its own orchestration strategy;&lt;/li&gt;
&lt;li&gt;build a different UI on top of the same session system;&lt;/li&gt;
&lt;li&gt;intercept tool calls to add approvals, logging, or organization-specific policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The default loop is not hidden magic. It is another registered service.&lt;/p&gt;

&lt;p&gt;That is the part of DSH I find most interesting. It treats agent behavior as infrastructure that can be inspected and replaced, not merely configured around the edges.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Concrete Example: Moving Execution
&lt;/h2&gt;

&lt;p&gt;Imagine that your internal coding agent starts on developer laptops. Later, security requires every shell command to run in an isolated remote environment.&lt;/p&gt;

&lt;p&gt;In many agent implementations, filesystem access, subprocess execution, terminal state, and tool definitions have grown together. Moving execution means rewriting several layers and then checking every place that assumed a local machine.&lt;/p&gt;

&lt;p&gt;DSH defines capability seams between providers and consumers. Its filesystem and subprocess providers can share an execution environment, so replacing the backend can move Bash, PTY, and language-server operations together.&lt;/p&gt;

&lt;p&gt;That does not make the migration automatic. You still need to implement and secure the provider. But it gives the change a defined architectural boundary, which is much better than discovering the boundary through production bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  DSH vs Claude Code, Codex, and OpenCode
&lt;/h2&gt;

&lt;p&gt;These projects overlap, but they optimize for different jobs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Best description&lt;/th&gt;
&lt;th&gt;Where it fits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;A polished coding agent centered on Claude&lt;/td&gt;
&lt;td&gt;You want a strong terminal or IDE workflow with sensible defaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;A connected coding-agent experience across CLI, IDE, cloud, and desktop&lt;/td&gt;
&lt;td&gt;You want local and managed workflows built around OpenAI models and services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;An open-source, provider-agnostic coding agent&lt;/td&gt;
&lt;td&gt;You want an open coding tool you can configure and use directly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek Harness&lt;/td&gt;
&lt;td&gt;A composable runtime for assembling agents&lt;/td&gt;
&lt;td&gt;You want to replace or own parts of the agent architecture itself&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Calling DSH a Claude Code alternative is not wrong, but it hides the trade-off.&lt;/p&gt;

&lt;p&gt;Claude Code gives you an integrated product. DSH gives you architectural control. The first removes decisions; the second exposes them.&lt;/p&gt;

&lt;p&gt;The same applies to Codex. Codex CLI is open source, so this is not a simple “open versus closed” comparison. The difference is that DSH makes more of the surrounding runtime—including the loop—part of one replaceable composition model.&lt;/p&gt;

&lt;p&gt;OpenCode may be the closest practical comparison, but even there the emphasis differs. OpenCode is primarily a flexible coding agent. DSH is useful when you want to reshape or embed the agent itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Should Actually Try It?
&lt;/h2&gt;

&lt;p&gt;DSH makes sense if you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building an internal agent platform;&lt;/li&gt;
&lt;li&gt;experimenting with several model providers;&lt;/li&gt;
&lt;li&gt;designing custom tools, permissions, or approval flows;&lt;/li&gt;
&lt;li&gt;moving agent execution into your own sandbox;&lt;/li&gt;
&lt;li&gt;testing alternative agent loops;&lt;/li&gt;
&lt;li&gt;embedding an agent into another application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you mainly want help writing and reviewing code every day, DSH may be more infrastructure than you need. Claude Code, Codex, or OpenCode will get you to a productive workflow faster.&lt;/p&gt;

&lt;p&gt;A useful rule of thumb is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Choose a coding agent when you want to delegate coding. Choose an agent harness when you want to control how delegation works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What It Still Costs
&lt;/h2&gt;

&lt;p&gt;MIT-licensed does not mean free to operate.&lt;/p&gt;

&lt;p&gt;You still need models, compute, storage, sandboxes, monitoring, and people who understand the system well enough to maintain it. If the agent works with current external information, you also need a reliable way to search and read the web without losing source metadata.&lt;/p&gt;

&lt;p&gt;This is where the modular approach becomes useful. Search, page reading, execution, and orchestration do not have to be bundled into one agent product.&lt;/p&gt;

&lt;p&gt;For example, an agent can use a search service to retrieve current, source-backed information, a reader to turn pages or documents into model-ready content, and a sandbox to isolate code execution. Those capabilities can evolve separately as long as their interfaces remain stable.&lt;/p&gt;

&lt;p&gt;At Cloudsway, this is the layer we work on: &lt;a href="https://www.cloudsway.ai/product/search/" rel="noopener noreferrer"&gt;Search and Reader&lt;/a&gt; provide live web information and structured content, while &lt;a href="https://www.cloudsway.ai/product/scalebox/" rel="noopener noreferrer"&gt;Scalebox&lt;/a&gt; provides an isolated execution environment. DSH offers an interesting foundation for wiring capabilities like these into a custom agent without making them permanent parts of one monolithic loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer Preview Label Matters
&lt;/h2&gt;

&lt;p&gt;The repository is explicit about its current status: DeepSeek Harness is a developer preview, and compatibility-breaking changes should be expected.&lt;/p&gt;

&lt;p&gt;That should affect how you evaluate it.&lt;/p&gt;

&lt;p&gt;Before using DSH in a real workflow, I would want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pinned versions and repeatable integration tests;&lt;/li&gt;
&lt;li&gt;a clear review process for plugins;&lt;/li&gt;
&lt;li&gt;strict separation between untrusted content and powerful tools;&lt;/li&gt;
&lt;li&gt;isolated command execution;&lt;/li&gt;
&lt;li&gt;approval policies for destructive or sensitive actions;&lt;/li&gt;
&lt;li&gt;logs for model requests, tool calls, and permission decisions;&lt;/li&gt;
&lt;li&gt;an upgrade plan for configuration and plugin changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The security point is especially important. An agent may read repositories, web pages, documentation, issues, or reusable instructions that contain content written by someone else. If the same agent can execute commands or access credentials, prompt injection becomes an execution-boundary problem—not just a prompting problem.&lt;/p&gt;

&lt;p&gt;Modularity gives you places to enforce controls. It does not enforce them for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying DSH Locally
&lt;/h2&gt;

&lt;p&gt;With Node.js installed, the quickest way to launch the Web profile is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @deepseek-ai/dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, DSH starts its local Web UI at &lt;code&gt;http://127.0.0.1:3080&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you want to inspect the source instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/deepseek-ai/deepseek-harness.git
&lt;span class="nb"&gt;cd &lt;/span&gt;deepseek-harness
pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm run build
pnpm dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repository is moving quickly, so check the &lt;a href="https://github.com/deepseek-ai/deepseek-harness" rel="noopener noreferrer"&gt;official README&lt;/a&gt; before relying on setup instructions copied elsewhere.&lt;/p&gt;

&lt;p&gt;For a longer walkthrough of profiles, bundles, providers, and the Web UI, we also published a &lt;a href="https://www.cloudsway.ai/resources/deepseek-harness-tutorial-architecture-and-quick-start?id=16" rel="noopener noreferrer"&gt;DeepSeek Harness architecture and quick-start tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;DeepSeek Harness probably will not make paid coding agents obsolete. That is the wrong benchmark for the project.&lt;/p&gt;

&lt;p&gt;Its more interesting contribution is making the harness layer visible. It encourages developers to treat model access, context, tools, state, permissions, execution, and orchestration as separate design decisions.&lt;/p&gt;

&lt;p&gt;For most people, a finished coding agent is still the practical choice. For teams building their own agent infrastructure, DSH is worth studying—even if they never use it in production.&lt;/p&gt;

&lt;p&gt;The question is not whether DSH can imitate Claude Code. It is whether developers want enough control to build a different kind of agent.&lt;/p&gt;

&lt;p&gt;If you have tried DSH, which part of the runtime would you replace first: the model, the tool layer, the sandbox, or the agent loop?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>news</category>
    </item>
    <item>
      <title>Cursor Origin: Why AI Coding Is Moving Beyond the Editor</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Wed, 19 Aug 2026 03:28:28 +0000</pubDate>
      <link>https://dev.to/cloudsway/cursor-origin-why-ai-coding-is-moving-beyond-the-editor-551i</link>
      <guid>https://dev.to/cloudsway/cursor-origin-why-ai-coding-is-moving-beyond-the-editor-551i</guid>
      <description>&lt;p&gt;On August 17, Cursor opened the early beta of Origin, a new code-hosting service for paid users. It includes repositories, pull requests, code browsing, GitHub synchronization, and integrations with services such as Vercel, Depot, and Buildkite.&lt;/p&gt;

&lt;p&gt;The launch quickly reached Hacker News and X, where much of the discussion framed Origin as a possible GitHub alternative. That comparison makes an effective headline, although the more interesting story lies in the direction of travel. AI coding companies are expanding beyond code generation and moving into the infrastructure where software work is stored, reviewed, tested, and shipped.&lt;/p&gt;

&lt;p&gt;Origin offers an early view of what an agent-native development platform might look like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Finternal-api-drive-stream.feishu.cn%2Fspace%2Fapi%2Fbox%2Fstream%2Fdownload%2Fauthcode%2F%3Fcode%3DZmQ5NDMzNzJkZTE1NTk1MTc1MWM1NzgyOGVkYzdiZTdfODE1Y2U3NTMzOGI3MDU1OTk2NTQ0ODBhMmRkZGFhNzVfSUQ6NzY3NTIxNTE3MzAyNzgyNjYxNl8xNzg3MTA5MzE1OjE3ODcxOTU3MTVfVjM" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Finternal-api-drive-stream.feishu.cn%2Fspace%2Fapi%2Fbox%2Fstream%2Fdownload%2Fauthcode%2F%3Fcode%3DZmQ5NDMzNzJkZTE1NTk1MTc1MWM1NzgyOGVkYzdiZTdfODE1Y2U3NTMzOGI3MDU1OTk2NTQ0ODBhMmRkZGFhNzVfSUQ6NzY3NTIxNTE3MzAyNzgyNjYxNl8xNzg3MTA5MzE1OjE3ODcxOTU3MTVfVjM" alt="Image" width="1756" height="970"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Editor Was the Easiest Place to Start
&lt;/h2&gt;

&lt;p&gt;The first wave of AI coding tools lived inside the editor. Autocomplete suggested the next line, chat interfaces explained unfamiliar functions, and code-generation tools turned short instructions into working snippets.&lt;/p&gt;

&lt;p&gt;That model worked because the developer remained responsible for the wider process. A person selected the relevant files, checked the output, ran the tests, created the branch, opened the pull request, and followed the change through review.&lt;/p&gt;

&lt;p&gt;Coding agents have widened that scope. They can explore repositories, modify several files, run commands, investigate failures, and prepare pull requests. Cloud-based agents can continue working after the developer closes the editor. Some can also monitor CI results or respond to review comments.&lt;/p&gt;

&lt;p&gt;Once an agent starts handling work that lasts longer than a single coding session, the editor becomes only one surface in a much larger system.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Coding Agents Need More Than Code Access
&lt;/h2&gt;

&lt;p&gt;A useful coding agent needs access to the source code, but source code represents only part of the development context.&lt;/p&gt;

&lt;p&gt;Consider a request such as “fix the checkout failure introduced in the latest release.” The agent may need to inspect the issue, identify the relevant service, review recent commits, understand repository conventions, reproduce the failure, run tests, create a branch, open a pull request, and respond to comments from reviewers.&lt;/p&gt;

&lt;p&gt;Each step produces new context. Test results influence the next edit. Review comments reveal requirements that may not appear in the original task. CI failures provide information about environments the agent cannot reproduce locally. Deployment results show whether the change worked outside the development machine.&lt;/p&gt;

&lt;p&gt;For a human developer, these signals are spread across familiar tools. An autonomous agent needs a structured way to read them and act on them.&lt;/p&gt;

&lt;p&gt;This changes the role of the repository. It begins to serve as the shared operating record for developers, agents, reviewers, and deployment systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Repository Is Becoming an Agent Workspace
&lt;/h2&gt;

&lt;p&gt;Traditional code hosting platforms are organized around human collaboration. Developers create branches, submit pull requests, leave comments, approve changes, and trigger automation.&lt;/p&gt;

&lt;p&gt;Agent-driven development adds another participant with different requirements. An agent may need an isolated environment, explicit permissions, persistent task state, machine-readable feedback, and a clear history of every action it has taken.&lt;/p&gt;

&lt;p&gt;The repository therefore becomes much more than a destination for generated code. It provides the boundaries within which an agent works.&lt;/p&gt;

&lt;p&gt;This helps explain the significance of &lt;a href="https://cursor.com/changelog/origin-code-hosting" rel="noopener noreferrer"&gt;Cursor Origin&lt;/a&gt;. Its current feature set covers familiar code-hosting functions, while the surrounding product direction points toward tighter integration with agents. Cursor has already connected its coding experience with cloud agents, pull-request review, remote environments, and multi-repository workflows. Hosting the repository brings those pieces closer together.&lt;/p&gt;

&lt;p&gt;The immediate product may look familiar. The architecture around it is designed for software work that increasingly involves autonomous systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI Coding Companies Want the Whole Workflow
&lt;/h2&gt;

&lt;p&gt;Coding agents improve when they can observe the results of their own work.&lt;/p&gt;

&lt;p&gt;An agent that only generates a patch receives a limited feedback loop. It may never see whether the patch passed CI, satisfied the reviewer, or survived deployment. An agent connected to the full workflow can use those outcomes to decide what to do next.&lt;/p&gt;

&lt;p&gt;Owning more of the development loop offers several advantages. Context can follow a task from the initial request through implementation and review. Environments can be prepared consistently. Permissions can be enforced at each step. Agent actions can be logged, evaluated, and resumed later.&lt;/p&gt;

&lt;p&gt;It also gives the platform a clearer view of how software is produced. The useful data extends beyond prompts and generated code. It includes accepted changes, rejected suggestions, recurring failures, review patterns, and deployment outcomes.&lt;/p&gt;

&lt;p&gt;This is why repository hosting matters strategically. It connects the AI coding interface to the systems that determine whether generated work is actually useful.&lt;/p&gt;

&lt;p&gt;Origin’s integrations with Vercel, Depot, and Buildkite reinforce this direction. They connect repositories with deployment, builds, and CI infrastructure, allowing the workflow to continue after the code has been written.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Remains Difficult to Replace
&lt;/h2&gt;

&lt;p&gt;Git repositories are portable. Development workflows are much less portable.&lt;/p&gt;

&lt;p&gt;GitHub’s position comes from years of accumulated developer identities, project histories, integrations, organizational policies, automation, and community activity. For enterprises, audit logs, access controls, security processes, and existing vendor relationships can matter as much as the repository itself.&lt;/p&gt;

&lt;p&gt;Open-source projects also depend on GitHub’s network effects. Issues, pull requests, contributor profiles, stars, forks, discussions, and Actions form a public collaboration layer that would be expensive to recreate elsewhere.&lt;/p&gt;

&lt;p&gt;Origin’s GitHub synchronization points toward a gradual transition. Teams can experiment with a new agent-oriented environment while maintaining their existing GitHub workflow. Comments and reviews can continue to move between the two systems instead of forcing an immediate migration.&lt;/p&gt;

&lt;p&gt;This hybrid approach is likely to shape the next phase of the market. AI coding platforms can build new workflow layers around existing repositories before asking organizations to move their source of record.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Platform Lock-In May Live Above Git
&lt;/h2&gt;

&lt;p&gt;Code portability will remain important, but a new kind of platform dependency is beginning to form around agent context.&lt;/p&gt;

&lt;p&gt;An agent may accumulate task histories, repository instructions, environment configurations, tool permissions, reusable skills, memories, and feedback from previous runs. These elements influence how reliably it works, yet they do not currently share a universal portability standard.&lt;/p&gt;

&lt;p&gt;Moving a Git repository is straightforward. Moving the complete working context of an agent may be considerably harder.&lt;/p&gt;

&lt;p&gt;This creates an important question for development teams: who owns the operational memory generated by coding agents?&lt;/p&gt;

&lt;p&gt;The answer will affect more than vendor choice. Teams will need to consider whether agent histories can be exported, whether permissions are understandable, whether automated actions are auditable, and whether workflows can continue if the underlying agent platform changes.&lt;/p&gt;

&lt;p&gt;Repository hosting gives AI coding companies a strong foundation for this context layer. It also raises the stakes for interoperability and governance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent-Native Development Extends Beyond the Repository
&lt;/h2&gt;

&lt;p&gt;Even a well-connected repository cannot contain every piece of information an agent needs.&lt;/p&gt;

&lt;p&gt;Software development constantly depends on external context: updated documentation, newly disclosed vulnerabilities, package releases, service incidents, API changes, and technical discussions. An agent working with outdated information can produce a plausible solution that has already become obsolete.&lt;/p&gt;

&lt;p&gt;Real-time information access will therefore become another important part of the agent stack. Services such as &lt;a href="https://www.cloudsway.ai/product/search/" rel="noopener noreferrer"&gt;Cloudsway Search&lt;/a&gt; provide structured web data for AI agents, allowing them to retrieve current information and support decisions with external sources.&lt;/p&gt;

&lt;p&gt;This fits into the same broader shift. AI coding products are evolving into systems that coordinate models, repositories, execution environments, development tools, and live information. Code generation remains one component of that system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Origin Tells Us About the Future of AI Coding
&lt;/h2&gt;

&lt;p&gt;The next stage of AI coding will probably be defined by workflow ownership.&lt;/p&gt;

&lt;p&gt;Model quality will continue to matter, yet many leading products already provide access to several models. The larger differences will come from how effectively each platform preserves context, manages permissions, connects tools, verifies work, and helps agents recover from failure.&lt;/p&gt;

&lt;p&gt;Repositories sit at the center of those capabilities. They contain the code, record proposed changes, connect to testing systems, and provide the review process through which software becomes trusted.&lt;/p&gt;

&lt;p&gt;Cursor Origin has arrived early in this transition. Its first version may appeal mainly to teams already using Cursor, and GitHub will continue to hold a powerful position across open-source and enterprise development. The broader direction is still clear: AI coding companies want to participate in a much larger share of the software lifecycle.&lt;/p&gt;

&lt;p&gt;The AI coding war began inside the editor. It is now spreading across the entire development stack.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>reviews</category>
    </item>
    <item>
      <title>Building an AI News Aggregator Without Drowning in Duplicate Stories</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Wed, 19 Aug 2026 02:46:54 +0000</pubDate>
      <link>https://dev.to/cloudsway/building-an-ai-news-aggregator-without-drowning-in-duplicate-stories-5400</link>
      <guid>https://dev.to/cloudsway/building-an-ai-news-aggregator-without-drowning-in-duplicate-stories-5400</guid>
      <description>&lt;p&gt;Most AI news aggregator demos stop at the pleasant part: run a search, hand the results to an LLM, and render a neat summary.&lt;/p&gt;

&lt;p&gt;The frustrating part begins on the second refresh.&lt;/p&gt;

&lt;p&gt;An article from last month appears next to today's announcement. Three different URLs turn out to be the same press release. Five publishers repeat one wire story, making it look as if five independent sources confirmed the news. Then the summary introduces a detail that was not in any of the retrieved pages.&lt;/p&gt;

&lt;p&gt;At that point, the project is no longer a search box with a summarizer attached. It is a small editorial system, and most of the work sits between retrieval and generation.&lt;/p&gt;

&lt;p&gt;This post walks through that middle layer. The example is a feed that tracks AI chip export controls, but the same approach works for product launches, regulatory updates, scientific news, or any other narrow topic that changes often.&lt;/p&gt;

&lt;h2&gt;
  
  
  The search query is not the product
&lt;/h2&gt;

&lt;p&gt;Starting with a broad query such as &lt;code&gt;AI chips&lt;/code&gt; creates an impossible filtering job. The phrase covers hardware releases, benchmark results, earnings calls, research papers, stock commentary, supply-chain rumors, and government policy.&lt;/p&gt;

&lt;p&gt;For a useful feed, the topic needs boundaries. In this case, I would limit it to new export rules, enforcement actions, official statements, company responses, and meaningful supply-chain effects. I would also use a seven-day window and exclude product reviews, undated explainers, and opinion pieces that do not add new reporting.&lt;/p&gt;

&lt;p&gt;That scope can be expressed through a handful of short searches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI chip export controls
advanced semiconductor export restrictions
AI accelerator export license
chip export controls company response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works better than a single oversized query. A regulator may write about an “export licensing requirement” while a publisher calls the same change an “AI chip restriction.” Several small queries catch that variation and are easier to debug when irrelevant results get through.&lt;/p&gt;

&lt;p&gt;The retrieval source matters too. RSS is excellent for publishers that are already on a watch list. A dedicated News API is convenient when normalized article metadata is the priority. Web search is useful when the important source may be a regulator, a company newsroom, or a specialist publication that was not known in advance.&lt;/p&gt;

&lt;p&gt;There is no need to choose only one. A practical feed can use RSS for known sources and web search for discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search results are pages, not stories
&lt;/h2&gt;

&lt;p&gt;The first pass should be cheap. Before downloading full pages or calling a model, inspect the title, URL, snippet, domain, and publication date.&lt;/p&gt;

&lt;p&gt;A title that does not contain the expected company, regulator, country, or policy term is usually easy to reject. Category pages and tag indexes can go as well. If a result has no publication date, treat the date as unknown rather than assuming it is recent. Search freshness filters help, but pages are sometimes updated or republished in ways that make old reporting look new.&lt;/p&gt;

&lt;p&gt;It is worth keeping the original title, URL, publisher, and date even when the full article is fetched later. Those fields become part of the audit trail behind the final summary.&lt;/p&gt;

&lt;p&gt;Here is a small Python baseline. It runs several searches, asks for results from the last week, removes repeated URLs, and sorts what remains. The example uses the Cloudsway Smart Search API because it can return both search metadata and extracted page text; the rest of the pipeline is provider-independent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;urllib.parse&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urlsplit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urlunsplit&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;


&lt;span class="n"&gt;API_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://aisearchapi.cloudsway.net/api/search/smart&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;HEADERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CLOUDSWAY_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;canonical_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;urlsplit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;urlunsplit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scheme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;netloc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rstrip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_news&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;HEADERS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;count&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;freshness&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Week&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enableContent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mainText&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;contentType&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TEXT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;webPages&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{}).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;


&lt;span class="n"&gt;queries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI chip export controls&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;advanced semiconductor export restrictions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI accelerator export license&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;seen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;articles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;queries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;search_news&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;canonical_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;continue&lt;/span&gt;

        &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;published&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;datePublished&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mainText&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;published&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
    &lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set &lt;code&gt;CLOUDSWAY_API_KEY&lt;/code&gt; in the environment before running the script. The &lt;a href="https://www.cloudsway.ai/docs/search/quickstart" rel="noopener noreferrer"&gt;quick start&lt;/a&gt; covers authentication, and the &lt;a href="https://www.cloudsway.ai/docs/search/api/references/search" rel="noopener noreferrer"&gt;search reference&lt;/a&gt; lists the available parameters.&lt;/p&gt;

&lt;p&gt;This code is intentionally incomplete. It retrieves candidates and removes exact URL duplicates. The harder duplicate problem comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The duplicate problem has more than one layer
&lt;/h2&gt;

&lt;p&gt;Some duplicates are mechanical. Tracking parameters, fragments, and trailing slashes create different URLs for the same page. Normalizing the URL handles many of these.&lt;/p&gt;

&lt;p&gt;Syndication is less obvious. The same article may appear on several domains with a slightly modified headline. Comparing normalized titles, opening paragraphs, named entities, and content hashes can catch most copies.&lt;/p&gt;

&lt;p&gt;But two articles about the same event are not necessarily duplicates. A government notice and a chipmaker's response belong to one story, yet both may be valuable. Deleting either one loses context; displaying them as separate events makes the feed repetitive.&lt;/p&gt;

&lt;p&gt;This is where event clustering becomes more useful than another deduplication rule.&lt;/p&gt;

&lt;p&gt;For each candidate, build a compact representation from the headline, entities, publication time, and central claim. Group candidates that share the same entities and describe the same development within a reasonable time window. Embeddings are helpful when headlines use different language, but they should not decide on their own. Two articles can sound similar while referring to different rules, countries, or dates.&lt;/p&gt;

&lt;p&gt;Inside a cluster, choose a lead source based on relevance, recency, source quality, and completeness. Keep the other independent sources attached. An official document may be best for establishing what changed, while reporting from a specialist publication may better explain the commercial impact.&lt;/p&gt;

&lt;p&gt;A useful sanity check is to ask where each article's information originated. Ten sites repeating one wire report are still one line of reporting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let the model in late
&lt;/h2&gt;

&lt;p&gt;The LLM should see an event cluster, not a raw page of search results.&lt;/p&gt;

&lt;p&gt;Give each retained source an ID such as &lt;code&gt;S1&lt;/code&gt;, &lt;code&gt;S2&lt;/code&gt;, and &lt;code&gt;S3&lt;/code&gt;, then provide only the title, date, relevant passage, and URL metadata returned by retrieval. Ask the model for a neutral headline, a short summary, why the event matters, and the source IDs behind each factual statement.&lt;/p&gt;

&lt;p&gt;The important restriction is that the model cannot create a URL. It can only refer to an ID from the supplied evidence. After generation, the application maps the IDs back to stored URLs and rejects anything outside the set.&lt;/p&gt;

&lt;p&gt;That still does not make every summary correct. A real page may be cited for a claim it does not support. The final check should compare the claim with the cited passage, not merely confirm that the URL exists.&lt;/p&gt;

&lt;p&gt;The output also needs a way to express uncertainty. If credible sources disagree, preserve the disagreement. If there is not enough evidence, say so. For a sensitive story, requiring a primary source or two genuinely independent reports is usually safer than letting the model turn a weak signal into a confident update.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would add before scheduling it
&lt;/h2&gt;

&lt;p&gt;The next production feature would not be a nicer UI. It would be logging.&lt;/p&gt;

&lt;p&gt;Store the query that found each result, the filters it passed, its cluster assignment, and the source IDs used in the summary. When a bad item appears in the feed, this makes it possible to tell whether retrieval, date handling, clustering, ranking, or generation failed.&lt;/p&gt;

&lt;p&gt;Caching matters for the same reason. A monitoring job should not repeatedly fetch and summarize pages that have not changed. Retries need limits and backoff, and a single domain should not be allowed to dominate the feed just because it publishes aggressively.&lt;/p&gt;

&lt;p&gt;I would also keep a manual review path for low-confidence clusters and high-impact claims. Automation is useful here because it reduces a noisy stream to a manageable set of evidence. It should not remove the ability to inspect how a conclusion was reached.&lt;/p&gt;

&lt;p&gt;Finally, an aggregator should link to original reporting instead of reproducing full articles. Facts can be summarized, but the article's language, images, and other protected expression come with separate copyright and licensing considerations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;The summarizer is the most visible part of an AI news product, but it is not the part that makes the feed trustworthy.&lt;/p&gt;

&lt;p&gt;That comes from narrower queries, careful date handling, separating copied articles from independent coverage, grouping pages into events, and keeping generated statements tied to material the system actually retrieved.&lt;/p&gt;

&lt;p&gt;If you have built a monitoring feed, I am curious how you handle event-level duplication. Do embeddings work well enough for your topic, or have you ended up combining them with entity and date rules?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: AI tools were used to help edit this post.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Tried DeepSeek Harness: Architecture and Quick Start</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Mon, 17 Aug 2026 10:30:15 +0000</pubDate>
      <link>https://dev.to/cloudsway/i-tried-deepseek-harness-architecture-and-quick-start-18gj</link>
      <guid>https://dev.to/cloudsway/i-tried-deepseek-harness-architecture-and-quick-start-18gj</guid>
      <description>&lt;p&gt;I recently spent some time exploring &lt;strong&gt;DeepSeek Harness&lt;/strong&gt;, also known as &lt;code&gt;dsh&lt;/code&gt;. The project describes itself as an open-source agent harness, but what makes it interesting is not another chat interface or a new model. It is the layer around the model: the system that connects tools, sessions, storage, execution policies, and user interfaces into a working agent.&lt;/p&gt;

&lt;p&gt;The idea at the center of the project is simple: &lt;strong&gt;everything is a plugin&lt;/strong&gt;. That sounds like a familiar software slogan, but DeepSeek Harness applies it unusually broadly. Model adapters, the tool registry, session logs, the agent loop, storage, sandbox policies, credentials, and interfaces all participate in the same composition system.&lt;/p&gt;

&lt;p&gt;I wanted to understand what that architecture looks like in practice, how quickly the project can be run locally, and what questions a team should ask before building on top of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Harness Layer Matters
&lt;/h2&gt;

&lt;p&gt;A capable model is only one part of an AI agent. A useful agent also needs a way to receive context, call tools, maintain state, execute actions, request approval, recover from failures, and return results that people can inspect.&lt;/p&gt;

&lt;p&gt;That surrounding system is the harness. It explains why two agents using the same model can behave very differently. Their tool definitions, permission boundaries, context delivery, execution loops, and feedback signals may be completely different. When an agent performs poorly, changing the model is therefore not always the most useful response. The real problem may be how the rest of the system is assembled.&lt;/p&gt;

&lt;p&gt;DeepSeek Harness makes this surrounding layer visible. Instead of locking the model, tools, memory, and interface into one fixed application, it treats them as components that can be configured and replaced. This makes the project useful not only as an agent application, but also as a public reference for thinking about agent runtime design.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/deepseek-ai/deepseek-harness" rel="noopener noreferrer"&gt;official repository&lt;/a&gt; currently describes DeepSeek Harness as a developer preview released under the MIT License. The preview label is important: the project is ready to explore, but compatibility-breaking changes should still be expected. For now, I would treat it as a strong prototyping environment rather than a stable production contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  How “Everything Is a Plugin” Works
&lt;/h2&gt;

&lt;p&gt;DeepSeek Harness is built on &lt;a href="https://github.com/cordiverse/cordis" rel="noopener noreferrer"&gt;Cordis&lt;/a&gt;, which provides the composition model underneath the runtime. Plugins contribute services, typed events, and reversible effects to a shared context. The model adapter, agent loop, tool registry, session log, persistence layer, sandbox policy, telemetry, credentials, and interface can all be mounted through the same system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7g899w2km9oq9v1l438.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7g899w2km9oq9v1l438.png" alt=" " width="799" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1: A simplified view of the DeepSeek Harness plugin architecture and its shared Cordis context.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This structure creates useful boundaries. A team can replace a model adapter without rebuilding its tools, change the storage layer without rewriting the agent loop, or test a different interface while keeping the underlying runtime intact. Search, storage, approval policies, and observability can evolve independently, which matters because those parts often change at different speeds in a real agent project.&lt;/p&gt;

&lt;p&gt;Cordis adds another useful property: plugins are designed to manage their own runtime effects. Its architecture documentation describes temporal composability, where removing a component reverses the effects it introduced, and spatial composability, where components declare dependencies and react to changes in their surrounding context. In plain language, the framework is designed for systems whose components may appear, disappear, or depend on one another while the application is running.&lt;/p&gt;

&lt;p&gt;That model fits AI agents particularly well. Different sessions may need different tools, policies, sandboxes, model routes, or interfaces. A modular runtime makes those variations easier to express without turning every experiment into a separate application.&lt;/p&gt;

&lt;p&gt;DeepSeek Harness assembles these components through profiles and bundles. A profile is a named composition, and the project provides &lt;code&gt;web&lt;/code&gt; and &lt;code&gt;headless&lt;/code&gt; profile templates. A bundle packages configuration and the code it mounts. If you want to see what a profile will load before starting it, the CLI can print the resolved configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dsh &lt;span class="nt"&gt;--profile&lt;/span&gt; web &lt;span class="nt"&gt;--dump-config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially helpful when a setup grows beyond the default configuration and you need to understand where a model, tool, or policy enters the plugin tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running DeepSeek Harness Locally
&lt;/h2&gt;

&lt;p&gt;The fastest way to explore the project is through its Web UI. With a supported Node.js version installed, open a terminal in a safe test workspace and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @deepseek-ai/dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interface is served locally at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://127.0.0.1:3080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwuynu5lotqu7ympatny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwuynu5lotqu7ympatny.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2: DeepSeek Harness running locally through its Web UI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once the interface opens, configure a model credential under &lt;strong&gt;Settings → Models&lt;/strong&gt;, choose a safe workspace, and start a new session. A simple first request is enough to confirm that the model can inspect the selected directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Summarize this workspace and identify its main packages.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The directory from which the command is invoked becomes the default filesystem location, although a new Web UI session still asks you to select a workspace before the composer becomes available.&lt;/p&gt;

&lt;p&gt;If your goal is to inspect the implementation or develop plugins, it is better to run the project from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/deepseek-ai/deepseek-harness.git
&lt;span class="nb"&gt;cd &lt;/span&gt;deepseek-harness
pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm run build
pnpm dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project’s &lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/development.md" rel="noopener noreferrer"&gt;development guide&lt;/a&gt; currently lists Node.js 22.19+ or 24+, Corepack-enabled pnpm, and Git as prerequisites. A model API key is not necessary for reading and building the repository, but it is required for running real-model examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing Current Web Information Into an Agent
&lt;/h2&gt;

&lt;p&gt;After running the basic interface, I was particularly interested in web search. Models often need information that changes after training, such as new documentation, product releases, regulations, and research. Search is therefore a natural harness capability, but it also needs to remain separate from the model itself. Teams may change search providers, apply different source policies, or add internal retrieval without wanting to rebuild the rest of the agent.&lt;/p&gt;

&lt;p&gt;DeepSeek Harness follows that separation. The model-facing &lt;code&gt;web_search&lt;/code&gt; tool is distinct from the provider that supplies the results. Its provider-neutral request currently includes a query and an optional result limit, while providers return normalized sources with URLs and, when available, titles, snippets, and publication dates. The official repository includes provider packages for DeepSeek, Exa, and Perplexity.&lt;/p&gt;

&lt;p&gt;For a local proof of concept, I used &lt;a href="https://www.cloudsway.ai/product/search/" rel="noopener noreferrer"&gt;Cloudsway SmartSearch&lt;/a&gt; as the external retrieval layer for a DeepSeek Harness research session. The test returned current titles, source URLs, dates, and summaries that the agent could use while preparing its answer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvku6rn86y6798puiebq9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvku6rn86y6798puiebq9.png" alt=" " width="799" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3: Results returned during a local DeepSeek Harness test using Cloudsway SmartSearch.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was an experimental local setup rather than an official or bundled DeepSeek Harness integration. I have deliberately left the compatibility layer out of this quick-start article because the current setup is not yet a clean one-command installation. Anyone evaluating the search API itself can review the available interfaces in the &lt;a href="https://www.cloudsway.ai/docs/" rel="noopener noreferrer"&gt;Cloudsway Search documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The cleaner long-term solution would be a native search provider that calls the external API directly, registers with the Harness web runtime, and normalizes its response behind the standard &lt;code&gt;web_search&lt;/code&gt; tool. That would preserve the central architectural idea: the agent loop should be able to use search without being tightly coupled to a particular retrieval service.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Would Evaluate Next
&lt;/h2&gt;

&lt;p&gt;The Web UI makes the first run easy, but a successful demo is not enough to establish that an agent runtime is ready for real work. The next step should be a small set of representative tasks with clear success criteria. A coding agent might need to read a workspace, modify a file, run a command, and stop for approval at the correct moment. A research agent might need to find current sources, distinguish official documentation from third-party commentary, and preserve citations in its final answer.&lt;/p&gt;

&lt;p&gt;During those tests, I would pay close attention to compatibility, permissions, state, failure recovery, and observability. It should be clear which tools can read files, write changes, execute commands, or access credentials. Model and search timeouts should fail in a predictable way. Session events should be inspectable, and critical tools should remain portable if the team later changes its model or runtime.&lt;/p&gt;

&lt;p&gt;Version pinning also matters because DeepSeek Harness is still a developer preview. A prototype should record the exact configuration and package versions that produced its results. Otherwise, a fast-moving plugin API can make it difficult to reproduce an experiment several weeks later.&lt;/p&gt;

&lt;p&gt;The most useful evaluation question is not “How many tools can this agent call?” It is whether the complete harness improves the reliability of a real workflow. More components only help when their boundaries make the system easier to test, replace, and audit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is DeepSeek Harness?
&lt;/h3&gt;

&lt;p&gt;DeepSeek Harness, or &lt;code&gt;dsh&lt;/code&gt;, is an open-source agent runtime developed by DeepSeek AI. It assembles models, tools, sessions, sandboxes, agent loops, storage, and interfaces through a plugin-based architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is DeepSeek Harness open source?
&lt;/h3&gt;

&lt;p&gt;Yes. Its official repository is available under the MIT License. The project is currently a developer preview, so users should expect its APIs and configurations to change.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I install DeepSeek Harness?
&lt;/h3&gt;

&lt;p&gt;The quickest option is to install a supported Node.js version and run &lt;code&gt;npx @deepseek-ai/dsh web&lt;/code&gt;. Developers who want to inspect or modify the implementation can clone the official repository and build it with pnpm.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is DeepSeek Harness ready for production?
&lt;/h3&gt;

&lt;p&gt;DeepSeek does not currently present it as a production-stable release. Teams should validate version compatibility, permissions, failure handling, credential management, state persistence, and observability before using it for production workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;DeepSeek Harness is interesting because it treats the agent runtime—not only the model—as a first-class engineering surface. Its Cordis-based architecture provides a consistent way to compose model access, tools, sessions, policies, sandboxes, storage, and interfaces.&lt;/p&gt;

&lt;p&gt;For now, its strongest use case is exploration. Launching the Web UI takes only one command, but the more valuable exercise is inspecting the plugin tree and identifying which parts of an agent your own team needs to keep replaceable. Search is one example, but the same logic applies to models, permissions, storage, and execution environments.&lt;/p&gt;

&lt;p&gt;The project is moving quickly, and production teams should plan for change. Even so, it offers a concrete and unusually open example of how the harness layer around an AI model can be designed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness" rel="noopener noreferrer"&gt;DeepSeek Harness official repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md" rel="noopener noreferrer"&gt;DeepSeek Harness architecture documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md" rel="noopener noreferrer"&gt;DeepSeek Harness CLI documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/development.md" rel="noopener noreferrer"&gt;DeepSeek Harness development guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web" rel="noopener noreferrer"&gt;DeepSeek Harness web capability packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cordiverse/cordis" rel="noopener noreferrer"&gt;Cordis repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cordiverse/paper" rel="noopener noreferrer"&gt;Cordis paper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work with Cloudsway. I used Cloudsway SmartSearch for the local retrieval test described above. This is not an official or bundled DeepSeek Harness integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI assistance:&lt;/strong&gt; AI tools were used to help structure the article, edit the English, and create the illustrations. I reviewed the technical claims against the official documentation and local test results before publication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Sales Prospecting with Web Search: How to Research Prospects Before Outreach</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Thu, 13 Aug 2026 03:07:32 +0000</pubDate>
      <link>https://dev.to/cloudsway/sales-prospecting-with-web-search-how-to-research-prospects-before-outreach-3c39</link>
      <guid>https://dev.to/cloudsway/sales-prospecting-with-web-search-how-to-research-prospects-before-outreach-3c39</guid>
      <description>&lt;h1&gt;
  
  
  Sales Prospecting with Web Search: How to Research Prospects Before Outreach
&lt;/h1&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Sales databases are good at telling you &lt;strong&gt;who&lt;/strong&gt; to contact.&lt;/p&gt;

&lt;p&gt;Web search can help explain &lt;strong&gt;why now&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Useful prospecting signals include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;funding&lt;/li&gt;
&lt;li&gt;hiring&lt;/li&gt;
&lt;li&gt;product launches&lt;/li&gt;
&lt;li&gt;leadership changes&lt;/li&gt;
&lt;li&gt;partnerships&lt;/li&gt;
&lt;li&gt;geographic expansion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simple workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Target Account
     ↓
Search Objectives
     ↓
Web Search API
     ↓
Recent Company Information
     ↓
Signal Classification
     ↓
Prospect Brief
     ↓
Personalized Outreach
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to replace your CRM or sales database.&lt;/p&gt;

&lt;p&gt;Web search works best as the &lt;strong&gt;live context layer&lt;/strong&gt; around them.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Contact Data Is Not Enough
&lt;/h2&gt;

&lt;p&gt;Suppose your sales database gives you this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company: Acme
Employee Count: 500
Industry: SaaS
Contact: VP of Engineering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful?&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Enough to write a relevant message?&lt;/p&gt;

&lt;p&gt;Probably not.&lt;/p&gt;

&lt;p&gt;The harder question is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Why should I contact Acme right now?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To answer that, a rep often starts another research process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open company website
      ↓
Search recent news
      ↓
Check product announcements
      ↓
Look for hiring
      ↓
Search funding / partnerships
      ↓
Find an outreach angle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Doing this for five strategic accounts is manageable.&lt;/p&gt;

&lt;p&gt;Doing it for hundreds of accounts becomes expensive very quickly.&lt;/p&gt;

&lt;p&gt;That is where web search can become part of the prospecting workflow itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Define the Signals Worth Looking For
&lt;/h2&gt;

&lt;p&gt;You do not need a complete company profile before every outreach.&lt;/p&gt;

&lt;p&gt;You need enough recent context to answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What changed at this company?

Could that change create a relevant need?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few signal categories are especially useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Funding
&lt;/h3&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new funding rounds&lt;/li&gt;
&lt;li&gt;acquisitions&lt;/li&gt;
&lt;li&gt;major investment announcements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Funding alone does not prove buying intent.&lt;/p&gt;

&lt;p&gt;But it can indicate new budgets, expansion, or upcoming infrastructure investment.&lt;/p&gt;




&lt;h3&gt;
  
  
  Hiring
&lt;/h3&gt;

&lt;p&gt;Hiring can reveal where a company is investing.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 new AI engineering roles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is more useful than simply knowing the company is growing.&lt;/p&gt;

&lt;p&gt;You can go further and look for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Infrastructure hiring
Security hiring
AI / ML hiring
International sales hiring
Developer relations hiring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The team being expanded often matters more than the raw number of jobs.&lt;/p&gt;




&lt;h3&gt;
  
  
  Product Launches
&lt;/h3&gt;

&lt;p&gt;New products can create new technical requirements.&lt;/p&gt;

&lt;p&gt;Useful signals include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new product lines&lt;/li&gt;
&lt;li&gt;beta releases&lt;/li&gt;
&lt;li&gt;enterprise plans&lt;/li&gt;
&lt;li&gt;API launches&lt;/li&gt;
&lt;li&gt;new integrations&lt;/li&gt;
&lt;li&gt;major feature releases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A launch can also tell you which direction the company is moving strategically.&lt;/p&gt;




&lt;h3&gt;
  
  
  Leadership Changes
&lt;/h3&gt;

&lt;p&gt;A new executive may change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;priorities&lt;/li&gt;
&lt;li&gt;tooling&lt;/li&gt;
&lt;li&gt;vendors&lt;/li&gt;
&lt;li&gt;budgets&lt;/li&gt;
&lt;li&gt;operating processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For enterprise sales, these changes can be useful triggers for deeper account research.&lt;/p&gt;




&lt;h3&gt;
  
  
  Partnerships and Expansion
&lt;/h3&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new markets&lt;/li&gt;
&lt;li&gt;regional expansion&lt;/li&gt;
&lt;li&gt;partnerships&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;li&gt;channel agreements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Expansion often creates requirements that did not exist before.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Turn Sales Questions Into Search Objectives
&lt;/h2&gt;

&lt;p&gt;The easiest implementation is keyword-based.&lt;/p&gt;

&lt;p&gt;For every account, you could search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[company] latest news

[company] funding

[company] hiring

[company] product launch

[company] partnership

[company] expansion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works, but a more useful AI workflow can express the actual research objective.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme hiring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you might ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent evidence that Acme is expanding
its AI or infrastructure engineering teams.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme news
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you could use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find important product, funding, partnership,
or expansion announcements from Acme this month.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For sales prospecting, the query should be designed around the signal you want to detect.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Use Search as the Live Research Layer
&lt;/h2&gt;

&lt;p&gt;The architecture can remain pretty simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRM / Account List
       ↓
Company
       ↓
Generate Search Queries
       ↓
Web Search API
       ↓
Recent Web Results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, your application has current information.&lt;/p&gt;

&lt;p&gt;But raw search results still are not a prospect brief.&lt;/p&gt;

&lt;p&gt;That requires another processing step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Classify the Results Into Sales Signals
&lt;/h2&gt;

&lt;p&gt;Suppose we search a target SaaS company and retrieve these results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Company launches a new enterprise product

2. Company opens engineering roles in Singapore

3. Company announces an APAC partnership
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A downstream application or LLM can classify them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"product_launch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"importance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"hiring"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"importance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"expansion"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"importance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the workflow starts turning general web information into sales intelligence.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Combine Related Signals
&lt;/h2&gt;

&lt;p&gt;Individual facts often become much more useful when combined.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Signal 1:
Acme launched an enterprise product.

Signal 2:
Acme is hiring infrastructure engineers in Singapore.

Signal 3:
Acme announced an APAC partnership.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Individually, these are just company updates.&lt;/p&gt;

&lt;p&gt;Together, they suggest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme may be increasing its enterprise focus
while expanding its APAC operations.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates a much stronger research hypothesis.&lt;/p&gt;

&lt;p&gt;The system could produce:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Recent signal:&lt;/strong&gt; APAC expansion and increased enterprise focus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Possible relevance:&lt;/strong&gt; The company may need infrastructure capable of supporting regional growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suggested research angle:&lt;/strong&gt; Investigate whether its current stack supports multi-region deployments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice the wording.&lt;/p&gt;

&lt;p&gt;The system is not claiming:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme definitely needs our product.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is generating a &lt;strong&gt;research hypothesis&lt;/strong&gt; for the rep to validate.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Build a Prospect Brief
&lt;/h2&gt;

&lt;p&gt;A useful prospect brief does not need to be long.&lt;/p&gt;

&lt;p&gt;Something like this is usually enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company:
Acme

Recent Signals:
- Enterprise product launch
- APAC partnership
- Infrastructure hiring in Singapore

What May Be Changing:
Increasing enterprise and regional expansion.

Potential Relevance:
May create additional infrastructure and
multi-region requirements.

Sources:
- Company announcement
- Careers page
- Industry coverage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rep can review the evidence before deciding whether the signal is relevant.&lt;/p&gt;




&lt;h2&gt;
  
  
  Web Search vs Sales Databases
&lt;/h2&gt;

&lt;p&gt;Web search and sales intelligence databases solve different problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Sales Database&lt;/th&gt;
&lt;th&gt;Web Search&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Main purpose&lt;/td&gt;
&lt;td&gt;Structured account/contact data&lt;/td&gt;
&lt;td&gt;Current company context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical question&lt;/td&gt;
&lt;td&gt;Who works there?&lt;/td&gt;
&lt;td&gt;What changed recently?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;Roles, emails, company size&lt;/td&gt;
&lt;td&gt;News, launches, hiring, funding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh discovery&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best use&lt;/td&gt;
&lt;td&gt;Contact discovery&lt;/td&gt;
&lt;td&gt;Trigger and context research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A sales database might tell you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jane Smith
VP of Engineering
Acme
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Web search might tell you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme launched an AI product.

Acme is hiring 10 infrastructure engineers.

Acme is expanding into Europe.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Together, they answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Who should I contact?

Why might this account be worth researching now?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is why I would treat web search as a complement to CRM and enrichment systems rather than a replacement.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: Automating Account Research
&lt;/h2&gt;

&lt;p&gt;Suppose your sales team has 100 target accounts.&lt;/p&gt;

&lt;p&gt;A scheduled workflow could run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Account List
    ↓
For Each Company
    ↓
Search Recent Signals
    ↓
Remove Duplicates
    ↓
Classify Results
    ↓
Rank Important Signals
    ↓
Generate Prospect Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For each company, the search queries could include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find major announcements from Acme this month.

Find recent funding or acquisition news involving Acme.

Find evidence that Acme is expanding its engineering team.

Find products or features Acme launched recently.

Find recent partnerships or geographic expansion involving Acme.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then only accounts with useful signals need to be surfaced to the rep.&lt;/p&gt;

&lt;p&gt;That makes the workflow closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100 Accounts
     ↓
Automated Research
     ↓
12 Accounts With Strong Signals
     ↓
Human Review
     ↓
Outreach
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of manually researching all 100.&lt;/p&gt;




&lt;h2&gt;
  
  
  Adding Cloudsway Search API
&lt;/h2&gt;

&lt;p&gt;One way to implement the retrieval layer is with &lt;strong&gt;Cloudsway Search API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The workflow could look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRM / Account List
       ↓
Company Query
       ↓
Cloudsway Search API
       ↓
Current Web Results
       ↓
Signal Classification
       ↓
LLM Analysis
       ↓
Prospect Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent product launches, partnerships,
funding, hiring, or expansion news from Acme.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The retrieved results can then be passed into downstream logic that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;removes duplicate stories&lt;/li&gt;
&lt;li&gt;identifies company events&lt;/li&gt;
&lt;li&gt;categorizes sales signals&lt;/li&gt;
&lt;li&gt;summarizes the evidence&lt;/li&gt;
&lt;li&gt;preserves original sources&lt;/li&gt;
&lt;li&gt;generates a short account brief&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The separation of responsibilities is useful:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudsway Search API
→ Discover current public information

Application
→ Filter, deduplicate, and structure

LLM
→ Interpret the signals

Sales Rep
→ Decide whether and how to reach out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Web search does not need to run the entire prospecting system.&lt;/p&gt;

&lt;p&gt;It provides the live company context the rest of the workflow can use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Keep Humans in the Final Step
&lt;/h2&gt;

&lt;p&gt;There is an obvious temptation to go directly from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company Signal
      ↓
AI-Generated Message
      ↓
Send
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I would avoid making that the default.&lt;/p&gt;

&lt;p&gt;A better workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search
   ↓
Detect Signal
   ↓
Generate Research Brief
   ↓
Human Review
   ↓
Personalize Outreach
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because a public signal does not automatically mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the company has the problem you solve&lt;/li&gt;
&lt;li&gt;the specific prospect owns that problem&lt;/li&gt;
&lt;li&gt;the timing is appropriate&lt;/li&gt;
&lt;li&gt;the signal should be mentioned directly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Search can reduce research time.&lt;/p&gt;

&lt;p&gt;The rep should still make the sales judgment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Sales prospecting often has two separate problems:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Who should I contact?

2. Why might now be relevant?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sales databases are strong at the first.&lt;/p&gt;

&lt;p&gt;Current web research can help with the second.&lt;/p&gt;

&lt;p&gt;A practical system might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRM / Sales Database
        +
   Web Search
        ↓
Current Account Context
        ↓
Signal Classification
        ↓
Prospect Brief
        ↓
Human Review
        ↓
Outreach
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to generate more information about every prospect.&lt;/p&gt;

&lt;p&gt;It is to surface a small number of &lt;strong&gt;recent, relevant signals&lt;/strong&gt; that help sales teams decide where deeper research and outreach are actually worth their time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>automation</category>
      <category>saas</category>
    </item>
    <item>
      <title>How to Build a Competitor Monitoring Workflow with a Web Search API</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:49:19 +0000</pubDate>
      <link>https://dev.to/cloudsway/how-to-build-a-competitor-monitoring-workflow-with-a-web-search-api-5b6d</link>
      <guid>https://dev.to/cloudsway/how-to-build-a-competitor-monitoring-workflow-with-a-web-search-api-5b6d</guid>
      <description>&lt;h1&gt;
  
  
  How to Build a Competitor Monitoring Workflow with a Web Search API
&lt;/h1&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A useful competitor-monitoring system should not alert you every time a website changes.&lt;/p&gt;

&lt;p&gt;It should detect &lt;strong&gt;meaningful business signals&lt;/strong&gt; such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pricing changes&lt;/li&gt;
&lt;li&gt;product launches&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;li&gt;partnerships&lt;/li&gt;
&lt;li&gt;funding&lt;/li&gt;
&lt;li&gt;positioning changes&lt;/li&gt;
&lt;li&gt;market reactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simple architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Competitors
    ↓
Monitoring Objectives
    ↓
Web Search API
    ↓
Relevant Sources
    ↓
Deduplicate &amp;amp; Group
    ↓
Classify &amp;amp; Analyze
    ↓
Competitive Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key distinction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Page monitoring → What changed on a page we already know?

Web search → What new information appeared around this competitor?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using both gives you much better coverage.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Traditional Competitor Monitoring
&lt;/h2&gt;

&lt;p&gt;Imagine a competitor launches a new enterprise plan on Monday.&lt;/p&gt;

&lt;p&gt;On Tuesday, customers start discussing it.&lt;/p&gt;

&lt;p&gt;On Wednesday, an industry publication covers it and the company announces a new integration.&lt;/p&gt;

&lt;p&gt;If your process looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open competitor websites every Friday
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you will probably find the update eventually.&lt;/p&gt;

&lt;p&gt;But you miss the context around it.&lt;/p&gt;

&lt;p&gt;A useful monitoring system needs to answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What changed?

Why does it matter?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That second question is what turns website monitoring into competitive intelligence.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Monitor Signals, Not Every Page
&lt;/h2&gt;

&lt;p&gt;One of the easiest ways to build a noisy monitoring system is to watch everything.&lt;/p&gt;

&lt;p&gt;A footer update and a major pricing change are both technically "changes."&lt;/p&gt;

&lt;p&gt;They clearly do not have the same value.&lt;/p&gt;

&lt;p&gt;Instead, define the signals you care about first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new pricing plans&lt;/li&gt;
&lt;li&gt;price increases or decreases&lt;/li&gt;
&lt;li&gt;usage limits&lt;/li&gt;
&lt;li&gt;enterprise packages&lt;/li&gt;
&lt;li&gt;discounts&lt;/li&gt;
&lt;li&gt;trial changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Product
&lt;/h3&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new features&lt;/li&gt;
&lt;li&gt;product launches&lt;/li&gt;
&lt;li&gt;beta programs&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;li&gt;new use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical
&lt;/h3&gt;

&lt;p&gt;Useful signals include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;changelog updates&lt;/li&gt;
&lt;li&gt;API changes&lt;/li&gt;
&lt;li&gt;SDK releases&lt;/li&gt;
&lt;li&gt;migration guides&lt;/li&gt;
&lt;li&gt;documentation updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Company
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;acquisitions&lt;/li&gt;
&lt;li&gt;funding&lt;/li&gt;
&lt;li&gt;partnerships&lt;/li&gt;
&lt;li&gt;leadership changes&lt;/li&gt;
&lt;li&gt;geographic expansion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Positioning
&lt;/h3&gt;

&lt;p&gt;Look for changes in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;target audience&lt;/li&gt;
&lt;li&gt;category positioning&lt;/li&gt;
&lt;li&gt;messaging&lt;/li&gt;
&lt;li&gt;industries served&lt;/li&gt;
&lt;li&gt;enterprise vs SMB focus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now your monitoring objective becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tell me when something happens that could affect
our product, sales, marketing, or strategy.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tell me whenever competitor.com changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Separate Page Monitoring From Web Search
&lt;/h2&gt;

&lt;p&gt;Page monitoring and web search solve different problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Page Monitoring&lt;/th&gt;
&lt;th&gt;Web Search&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input&lt;/td&gt;
&lt;td&gt;Known URL&lt;/td&gt;
&lt;td&gt;Research question&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Pricing, docs, changelogs&lt;/td&gt;
&lt;td&gt;News, launches, reactions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main question&lt;/td&gt;
&lt;td&gt;What changed here?&lt;/td&gt;
&lt;td&gt;What is happening around this competitor?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coverage&lt;/td&gt;
&lt;td&gt;Fixed pages&lt;/td&gt;
&lt;td&gt;Open web&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discovery&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you already know a competitor's pricing page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://competitor.com/pricing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;monitoring that URL makes sense.&lt;/p&gt;

&lt;p&gt;But you probably do not know the URL of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tomorrow's partnership announcement&lt;/li&gt;
&lt;li&gt;a new product page&lt;/li&gt;
&lt;li&gt;an analyst report&lt;/li&gt;
&lt;li&gt;a customer discussion&lt;/li&gt;
&lt;li&gt;a news article about the company&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those require discovery.&lt;/p&gt;

&lt;p&gt;A more complete system therefore looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Known URLs
    ↓
Page Monitoring

Open Web
    ↓
Web Search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3: Turn Competitive Questions Into Search Queries
&lt;/h2&gt;

&lt;p&gt;The simplest approach is keyword monitoring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[competitor] pricing

[competitor] launch

[competitor] partnership

[competitor] integration

[competitor] funding
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That works, but it can produce a lot of irrelevant results.&lt;/p&gt;

&lt;p&gt;For AI-oriented workflows, I prefer defining the underlying research objective.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent changes to Acme's pricing,
packaging, or enterprise plans.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find products or features Acme announced this month.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also search for reactions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find customer and industry reactions
to Acme's latest product launch.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or strategic changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent evidence that Acme
is moving toward enterprise customers.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters because competitive intelligence usually needs &lt;strong&gt;context&lt;/strong&gt;, not just keyword matches.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Use Search as the Discovery Layer
&lt;/h2&gt;

&lt;p&gt;Once you have your monitoring objectives, you can run them through a Web Search API.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scheduled Job
     ↓
Competitor
     ↓
Search Objectives
     ↓
Web Search API
     ↓
Relevant Sources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose you monitor five competitors.&lt;/p&gt;

&lt;p&gt;For each one, your workflow might search for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pricing
Product launches
Integrations
Partnerships
Funding
Company news
Market reactions
Positioning changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, however, you still do not have competitive intelligence.&lt;/p&gt;

&lt;p&gt;You only have search results.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Turn Search Results Into Events
&lt;/h2&gt;

&lt;p&gt;Suppose Acme launches a new AI product.&lt;/p&gt;

&lt;p&gt;Your search might return:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Acme product page
Acme company blog
Tech publication
Industry newsletter
Reddit discussion
Analyst article
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your system sends six alerts, users will quickly start ignoring them.&lt;/p&gt;

&lt;p&gt;Instead, group those sources into a single competitive event.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Competitor: Acme

Signal:
Product Launch

Detected:
August 11

Event:
New enterprise AI search product

Sources:
- Product page
- Official announcement
- Industry coverage

Market Reaction:
Early discussion focuses on enterprise
security and pricing.

Why It Matters:
Acme appears to be moving further into
enterprise accounts.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the output is much more useful.&lt;/p&gt;

&lt;p&gt;The unit you care about is not the &lt;strong&gt;URL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is the &lt;strong&gt;event&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Deduplicate Related Sources
&lt;/h2&gt;

&lt;p&gt;A basic processing pipeline might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search Results
      ↓
Normalize URLs
      ↓
Extract Entities
      ↓
Compare Titles / Content
      ↓
Group Related Results
      ↓
Create Event
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Possible grouping signals include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;competitor name&lt;/li&gt;
&lt;li&gt;event date&lt;/li&gt;
&lt;li&gt;product name&lt;/li&gt;
&lt;li&gt;shared entities&lt;/li&gt;
&lt;li&gt;similar titles&lt;/li&gt;
&lt;li&gt;semantic similarity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduces duplicate alerts while keeping multiple supporting sources.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7: Classify the Event
&lt;/h2&gt;

&lt;p&gt;Once related sources are grouped, the application can classify the event.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"competitor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"product_launch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"detected_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-11"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"importance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme launched a new enterprise AI search product."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sources"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"official announcement"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"product page"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"industry article"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful categories might include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pricing
product
technical
integration
partnership
funding
positioning
market_reaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Structured events are much easier to store, filter, compare, and analyze later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 8: Let an LLM Analyze the Event
&lt;/h2&gt;

&lt;p&gt;Once the evidence is grouped and structured, an LLM can do what it is good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;summarize the change&lt;/li&gt;
&lt;li&gt;compare it with previous events&lt;/li&gt;
&lt;li&gt;identify strategic implications&lt;/li&gt;
&lt;li&gt;explain why the signal matters&lt;/li&gt;
&lt;li&gt;generate a concise brief&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Web Search
    ↓
Retrieve Evidence

Application
    ↓
Normalize + Deduplicate

LLM
    ↓
Analyze + Summarize

Dashboard / Slack / Email
    ↓
Deliver Intelligence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keeping these responsibilities separate makes the workflow much easier to control.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: Daily Competitor Monitoring
&lt;/h2&gt;

&lt;p&gt;Imagine we want to monitor Acme every morning.&lt;/p&gt;

&lt;p&gt;The workflow could run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent pricing or packaging changes from Acme.

Find products or features Acme announced this week.

Find recent partnerships or integrations involving Acme.

Find recent market reactions to Acme's latest product launch.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then process the results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Daily Scheduler
      ↓
Search Queries
      ↓
Web Search API
      ↓
Current Results
      ↓
Deduplicate
      ↓
Classify
      ↓
LLM Analysis
      ↓
Competitive Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting brief might look like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Acme — Product Launch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Acme launched a new enterprise-focused AI search product this week.&lt;/p&gt;

&lt;p&gt;Its product page emphasizes security, centralized administration, and enterprise integrations.&lt;/p&gt;

&lt;p&gt;Several industry sources are already comparing it with existing enterprise search products.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; This may signal a stronger push toward enterprise buyers and could affect positioning in security-sensitive sales opportunities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is much more actionable than sending a list of six links.&lt;/p&gt;




&lt;h2&gt;
  
  
  Adding Cloudsway Search API
&lt;/h2&gt;

&lt;p&gt;One way to implement the web discovery layer is with the &lt;strong&gt;Cloudsway Search API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The architecture stays the same:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scheduled Workflow
       ↓
Competitor Query
       ↓
Cloudsway Search API
       ↓
Current Web Results
       ↓
Deduplicate
       ↓
Classify
       ↓
LLM Analysis
       ↓
Competitive Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cloudsway handles the live web retrieval step.&lt;/p&gt;

&lt;p&gt;The rest of the application can remain responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;historical storage&lt;/li&gt;
&lt;li&gt;deduplication&lt;/li&gt;
&lt;li&gt;event classification&lt;/li&gt;
&lt;li&gt;scoring&lt;/li&gt;
&lt;li&gt;LLM analysis&lt;/li&gt;
&lt;li&gt;alerts&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This boundary is useful.&lt;/p&gt;

&lt;p&gt;The search layer only needs to answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What relevant information appeared on the web?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your application can then answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is this new?

Is it important?

What does it mean?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Page Monitoring + Web Search
&lt;/h2&gt;

&lt;p&gt;For a more complete system, combine both.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Competitor
                    ↓
                  Router
                ↙        ↘
         Known Pages      Open Web
             ↓               ↓
       Page Monitor       Web Search
                ↘         ↙
             Event Processing
                    ↓
          Deduplicate &amp;amp; Classify
                    ↓
              LLM Analysis
                    ↓
            Competitive Brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use page monitoring when you already know where the information should appear.&lt;/p&gt;

&lt;p&gt;Use web search when you do not.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;A good competitor-monitoring system should not produce more alerts.&lt;/p&gt;

&lt;p&gt;It should produce fewer, more meaningful signals.&lt;/p&gt;

&lt;p&gt;A practical workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Define Signals
     ↓
Search the Web
     ↓
Collect Evidence
     ↓
Group Related Sources
     ↓
Classify Events
     ↓
Explain Why They Matter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Page monitoring tells you what changed on sources you already know.&lt;/p&gt;

&lt;p&gt;Web search helps discover what is happening outside that fixed list.&lt;/p&gt;

&lt;p&gt;Combining the two turns competitor monitoring from a collection of page-change alerts into a much more useful competitive intelligence workflow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>automation</category>
      <category>saas</category>
    </item>
    <item>
      <title>Web Search API for AI Developers: How It Works and When to Use One</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Thu, 13 Aug 2026 02:08:29 +0000</pubDate>
      <link>https://dev.to/cloudsway/web-search-api-for-ai-developers-how-it-works-and-when-to-use-one-1i60</link>
      <guid>https://dev.to/cloudsway/web-search-api-for-ai-developers-how-it-works-and-when-to-use-one-1i60</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Web Search API&lt;/strong&gt; gives AI applications programmatic access to current information from the web.&lt;/li&gt;
&lt;li&gt;It is useful when an LLM needs information that changes frequently, such as news, pricing, documentation, product launches, or company updates.&lt;/li&gt;
&lt;li&gt;A typical workflow looks like:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Query
   ↓
Web Search API
   ↓
Relevant Web Results
   ↓
LLM / Agent / RAG
   ↓
Source-backed Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Search APIs, SERP APIs, and web scraping solve different problems.&lt;/li&gt;
&lt;li&gt;For AI applications, the most important things to evaluate are &lt;strong&gt;relevance, freshness, structured output, source traceability, latency, and cost&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Problem: LLM Knowledge Isn't Always Current
&lt;/h2&gt;

&lt;p&gt;LLMs are great at explaining concepts, summarizing information, and reasoning over existing knowledge.&lt;/p&gt;

&lt;p&gt;But things become harder when the question depends on information that changes frequently.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What changed in this API last week?

What products did this company launch this month?

How much does this service cost today?

What happened in the market this morning?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These aren't really "memory" problems.&lt;/p&gt;

&lt;p&gt;They're &lt;strong&gt;retrieval problems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If an AI application needs current information, it needs a way to retrieve that information while the task is running.&lt;/p&gt;

&lt;p&gt;One common solution is a &lt;strong&gt;Web Search API&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is a Web Search API?
&lt;/h2&gt;

&lt;p&gt;A Web Search API allows an application to search the web programmatically.&lt;/p&gt;

&lt;p&gt;Traditional search is designed for humans:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 ↓
Search Engine
 ↓
Search Results Page
 ↓
Open Pages
 ↓
Read Information
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With an API, the workflow becomes machine-readable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
 ↓
Web Search API
 ↓
Structured Search Results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of rendering a search results page, the API can return data such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example Page"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/article"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"snippet"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Relevant information from the page..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An application can then pass those results directly into an LLM or another processing step.&lt;/p&gt;

&lt;p&gt;That makes search part of the AI workflow itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Does a Web Search API Work?
&lt;/h2&gt;

&lt;p&gt;At a high level, the process is straightforward.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query
  ↓
Search Processing
  ↓
Ranked Results
  ↓
Structured Response
  ↓
AI Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Generate a search query
&lt;/h3&gt;

&lt;p&gt;The query may come directly from the user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;latest AI search infrastructure announcements
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or an AI agent may generate it automatically while working on a larger task.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: Research recent developments in AI search infrastructure.

Agent:
1. Search recent company announcements
2. Search product launches
3. Search industry news
4. Compare findings
5. Generate report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search becomes one tool inside a larger reasoning loop.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Search the web
&lt;/h3&gt;

&lt;p&gt;The search layer finds pages related to the query.&lt;/p&gt;

&lt;p&gt;Depending on the task, relevance alone may not be enough.&lt;/p&gt;

&lt;p&gt;For a query like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenAI API pricing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;an old result could still be highly relevant while being completely useless for answering a question about current pricing.&lt;/p&gt;

&lt;p&gt;For AI systems working with changing information, &lt;strong&gt;freshness matters alongside relevance&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Rank the results
&lt;/h3&gt;

&lt;p&gt;The search API returns the most useful results instead of requiring your application to process thousands of pages.&lt;/p&gt;

&lt;p&gt;This matters because everything you pass to an LLM has a cost.&lt;/p&gt;

&lt;p&gt;Bad retrieval means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Irrelevant Results
        ↓
More Context Tokens
        ↓
More Noise
        ↓
Worse Generation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Good search quality improves the entire downstream pipeline.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Return structured data
&lt;/h3&gt;

&lt;p&gt;A useful search response might include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Company Announces New Search Product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/news"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"snippet"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The company announced..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"published_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-01"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Structured output makes it much easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;filter results&lt;/li&gt;
&lt;li&gt;rank sources&lt;/li&gt;
&lt;li&gt;extract URLs&lt;/li&gt;
&lt;li&gt;generate citations&lt;/li&gt;
&lt;li&gt;pass evidence to an LLM&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Let the AI reason over the results
&lt;/h3&gt;

&lt;p&gt;Search shouldn't necessarily generate the final answer.&lt;/p&gt;

&lt;p&gt;A clean architecture separates retrieval from reasoning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search API
   ↓
Find relevant evidence

LLM
   ↓
Compare, summarize, and reason

Application
   ↓
Present the final answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This separation is particularly useful when building agents and RAG systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Not Just Ask the LLM?
&lt;/h2&gt;

&lt;p&gt;Imagine you're building a competitor-monitoring agent.&lt;/p&gt;

&lt;p&gt;The user asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What has Company X launched in the last 30 days?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without web retrieval:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
   ↓
LLM Knowledge
   ↓
Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model may not have access to those announcements.&lt;/p&gt;

&lt;p&gt;With search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
   ↓
Search Recent Web Sources
   ↓
Retrieve Announcements
   ↓
LLM Analyzes Results
   ↓
Answer + Sources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model no longer needs to "know" everything beforehand.&lt;/p&gt;

&lt;p&gt;It only needs to reason effectively over the evidence you retrieve.&lt;/p&gt;

&lt;p&gt;This is one of the most useful patterns for building web-connected AI applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Web Search API vs SERP API vs Web Scraping
&lt;/h2&gt;

&lt;p&gt;These tools are often grouped together, but they solve different problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Web Search API&lt;/th&gt;
&lt;th&gt;SERP API&lt;/th&gt;
&lt;th&gt;Web Scraping&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Main goal&lt;/td&gt;
&lt;td&gt;Find relevant information&lt;/td&gt;
&lt;td&gt;Retrieve search engine results&lt;/td&gt;
&lt;td&gt;Extract content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starting point&lt;/td&gt;
&lt;td&gt;Information need&lt;/td&gt;
&lt;td&gt;Search query&lt;/td&gt;
&lt;td&gt;Known URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical output&lt;/td&gt;
&lt;td&gt;Relevant web sources&lt;/td&gt;
&lt;td&gt;Rankings, URLs, snippets&lt;/td&gt;
&lt;td&gt;Page content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common use&lt;/td&gt;
&lt;td&gt;AI, RAG, agents, research&lt;/td&gt;
&lt;td&gt;SEO and rank tracking&lt;/td&gt;
&lt;td&gt;Data extraction&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  SERP API
&lt;/h3&gt;

&lt;p&gt;A SERP API is useful when the search results themselves are the data you care about.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which pages rank for "AI search API"?

What position does my website appear in?

Which domains dominate this SERP?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That makes SERP APIs especially useful for SEO tools.&lt;/p&gt;




&lt;h3&gt;
  
  
  Web Search API
&lt;/h3&gt;

&lt;p&gt;A Web Search API is useful when you're trying to answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Where can I find useful information about this question?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is retrieval rather than analyzing the SERP itself.&lt;/p&gt;




&lt;h3&gt;
  
  
  Web Scraping
&lt;/h3&gt;

&lt;p&gt;Scraping usually starts after discovery.&lt;/p&gt;

&lt;p&gt;You already know the URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com/pricing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you want to extract specific information from that page.&lt;/p&gt;

&lt;p&gt;A useful mental model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search → Find the page
Scraping → Extract from the page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Many real-world applications use both.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Web Search Fits Into RAG
&lt;/h2&gt;

&lt;p&gt;Traditional RAG often looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Documents
   ↓
Chunking
   ↓
Embeddings
   ↓
Vector Database
   ↓
Retrieval
   ↓
LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works well when the information already exists in your indexed knowledge base.&lt;/p&gt;

&lt;p&gt;But what happens when the answer exists only on the public web?&lt;/p&gt;

&lt;p&gt;Or when the information was published ten minutes ago?&lt;/p&gt;

&lt;p&gt;That's where web search can complement vector retrieval.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Question
      ↓
   Router
    ↙   ↘
Internal   Current Web
Knowledge  Information
   ↓           ↓
Vector DB   Web Search
    ↘         ↙
       LLM
        ↓
      Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You don't necessarily need to replace your vector database.&lt;/p&gt;

&lt;p&gt;Web search can become another retrieval source.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: Building a Research Agent
&lt;/h2&gt;

&lt;p&gt;Suppose the user asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research recent developments in AI search infrastructure.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A simple agent might perform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Search recent industry news
2. Search company announcements
3. Search product documentation
4. Review retrieved sources
5. Identify important developments
6. Search again for missing information
7. Generate the final research brief
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting part is step 6.&lt;/p&gt;

&lt;p&gt;An agent doesn't always search once.&lt;/p&gt;

&lt;p&gt;It might run a loop like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search
  ↓
Review Evidence
  ↓
Enough Information?
  ├── Yes → Generate Answer
  └── No  → Generate New Query
               ↓
             Search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes search especially useful for &lt;strong&gt;agentic workflows&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. AI Agents
&lt;/h3&gt;

&lt;p&gt;Agents can use search as an external information tool.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;company research agents&lt;/li&gt;
&lt;li&gt;market research agents&lt;/li&gt;
&lt;li&gt;news monitoring agents&lt;/li&gt;
&lt;li&gt;technical research agents&lt;/li&gt;
&lt;li&gt;competitive intelligence agents&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. RAG Systems
&lt;/h3&gt;

&lt;p&gt;Web search can provide information that hasn't yet been added to your internal knowledge base.&lt;/p&gt;

&lt;p&gt;A common architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internal information → Vector retrieval

Current public information → Web search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Research Tools
&lt;/h3&gt;

&lt;p&gt;Search APIs can help discover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;research papers&lt;/li&gt;
&lt;li&gt;reports&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;company announcements&lt;/li&gt;
&lt;li&gt;industry analysis&lt;/li&gt;
&lt;li&gt;technical resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The LLM can then organize and synthesize those sources.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Competitive Intelligence
&lt;/h3&gt;

&lt;p&gt;A competitor-monitoring workflow might search for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Competitor pricing changes
Competitor product launches
New partnerships
Funding announcements
Company news
Documentation updates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search handles discovery.&lt;/p&gt;

&lt;p&gt;Your application handles classification, comparison, and analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Should You Look for in a Web Search API?
&lt;/h2&gt;

&lt;p&gt;Not every search API works equally well for AI applications.&lt;/p&gt;

&lt;p&gt;Here are the main things I'd evaluate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Relevance
&lt;/h3&gt;

&lt;p&gt;If the search results don't match the user's intent, everything downstream gets worse.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bad Retrieval
   ↓
Bad Context
   ↓
Bad Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retrieval quality matters as much as model quality.&lt;/p&gt;




&lt;h3&gt;
  
  
  Freshness
&lt;/h3&gt;

&lt;p&gt;Fresh results are critical when working with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;news&lt;/li&gt;
&lt;li&gt;pricing&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;product updates&lt;/li&gt;
&lt;li&gt;company announcements&lt;/li&gt;
&lt;li&gt;market information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these tasks, a highly relevant page from two years ago may still be the wrong result.&lt;/p&gt;




&lt;h3&gt;
  
  
  LLM-Ready Output
&lt;/h3&gt;

&lt;p&gt;The easier the results are to process, the less infrastructure you need around them.&lt;/p&gt;

&lt;p&gt;Structured responses can reduce additional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;parsing&lt;/li&gt;
&lt;li&gt;HTML cleaning&lt;/li&gt;
&lt;li&gt;extraction&lt;/li&gt;
&lt;li&gt;transformation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;before sending results to your model.&lt;/p&gt;




&lt;h3&gt;
  
  
  Source Traceability
&lt;/h3&gt;

&lt;p&gt;For research-oriented applications, you usually want to preserve the source URL.&lt;/p&gt;

&lt;p&gt;That allows your final system to produce something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claim
 ↓
Evidence
 ↓
Original Source
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of an answer that can't be verified.&lt;/p&gt;




&lt;h3&gt;
  
  
  Latency
&lt;/h3&gt;

&lt;p&gt;Agents may search multiple times for a single user request.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search
 ↓
Analyze
 ↓
Search Again
 ↓
Analyze
 ↓
Generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few hundred milliseconds of additional latency per search can accumulate quickly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;The same applies to cost.&lt;/p&gt;

&lt;p&gt;Don't evaluate search pricing only as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cost per API request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;searches per user task × requests × user volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow-level cost is what ultimately matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using Cloudsway Search API as the Retrieval Layer
&lt;/h2&gt;

&lt;p&gt;One option for this architecture is the &lt;strong&gt;Cloudsway Search API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The basic pattern is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User / Agent Query
       ↓
Cloudsway Search API
       ↓
Structured Web Results
       ↓
LLM / Agent / RAG
       ↓
Final Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, an agent could start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find recent developments in AI search infrastructure.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The search results could then be passed to an LLM to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;summarize recent developments&lt;/li&gt;
&lt;li&gt;compare companies&lt;/li&gt;
&lt;li&gt;identify product announcements&lt;/li&gt;
&lt;li&gt;extract important changes&lt;/li&gt;
&lt;li&gt;generate a source-backed research brief&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful architectural point here is that the responsibilities remain separated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudsway Search API
→ web discovery and retrieval

LLM
→ reasoning and synthesis

Your application
→ workflow and user experience
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So you don't need to build a full web search layer before adding current web information to an AI application.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Web Search APIs solve a simple but important problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does an AI application access information that changes after the model was trained?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A common answer is to retrieve that information at runtime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Question
      ↓
Web Search
      ↓
Current Evidence
      ↓
LLM Reasoning
      ↓
Source-Backed Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pattern works especially well for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI agents&lt;/li&gt;
&lt;li&gt;RAG systems&lt;/li&gt;
&lt;li&gt;research applications&lt;/li&gt;
&lt;li&gt;competitive intelligence&lt;/li&gt;
&lt;li&gt;any AI product that depends on current public information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When choosing a Web Search API, I'd focus less on the number of results it can return and more on how well it works inside the complete AI workflow.&lt;/p&gt;

&lt;p&gt;The key questions are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the results relevant? Are they fresh? Can I trace the sources? Can my LLM consume them easily? And what happens to latency and cost when an agent searches multiple times?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those factors usually matter much more once you move from a demo to a real AI application.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>rag</category>
      <category>webdev</category>
    </item>
    <item>
      <title>welcome！</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Thu, 06 Aug 2026 07:31:27 +0000</pubDate>
      <link>https://dev.to/cloudsway/welcome-2d8e</link>
      <guid>https://dev.to/cloudsway/welcome-2d8e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-story__hidden-navigation-link"&gt;How to Add a Real-Time Search Layer to an Agent Graph&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/cloudsway" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063632%2F9661a69b-4ebe-446e-9af2-5be55e3f6caa.jpg" alt="cloudsway profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/cloudsway" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Marcus ma
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Marcus ma
                
                
              
              &lt;div id="story-author-preview-content-4327931" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/cloudsway" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063632%2F9661a69b-4ebe-446e-9af2-5be55e3f6caa.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Marcus ma&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" id="article-link-4327931"&gt;
          How to Add a Real-Time Search Layer to an Agent Graph
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/api"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;api&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>How to Add a Real-Time Search Layer to an Agent Graph</title>
      <dc:creator>Marcus ma</dc:creator>
      <pubDate>Thu, 06 Aug 2026 05:32:27 +0000</pubDate>
      <link>https://dev.to/cloudsway/-2j6c</link>
      <guid>https://dev.to/cloudsway/-2j6c</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-story__hidden-navigation-link"&gt;How to Add a Real-Time Search Layer to an Agent Graph&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/cloudsway" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063632%2F9661a69b-4ebe-446e-9af2-5be55e3f6caa.jpg" alt="cloudsway profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/cloudsway" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Marcus ma
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Marcus ma
                
                
              
              &lt;div id="story-author-preview-content-4327931" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/cloudsway" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063632%2F9661a69b-4ebe-446e-9af2-5be55e3f6caa.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Marcus ma&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" id="article-link-4327931"&gt;
          How to Add a Real-Time Search Layer to an Agent Graph
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/api"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;api&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/cloudsway/how-to-add-a-real-time-search-layer-to-an-agent-graph-29jd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
