<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dataswap</title>
    <link>https://dataswap.io/blog</link>
    <description>Technical notes on search data, AI answer engines and the plumbing between them.</description>
    <language>en</language>
    <lastBuildDate>Tue, 04 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://dataswap.io/blog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI crawlers read your HTML, not your JavaScript</title>
      <link>https://dataswap.io/blog/ai-crawlers-read-html-not-javascript</link>
      <guid isPermaLink="true">https://dataswap.io/blog/ai-crawlers-read-html-not-javascript</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Before you measure whether an AI assistant cites you, check whether it can read you at all. The test is one curl command, and the result is often uncomfortable.</description>
      <category>ai-visibility</category>
      <category>crawling</category>
      <category>geo</category>
    </item>
    <item>
      <title>Grounding an LLM agent with search data</title>
      <link>https://dataswap.io/blog/grounding-llm-agents-with-search-data</link>
      <guid isPermaLink="true">https://dataswap.io/blog/grounding-llm-agents-with-search-data</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Search results are the wrong shape for a prompt. How to turn a SERP into grounding context an agent can use: dedupe, rerank, budget tokens, keep citations.</description>
      <category>grounding</category>
      <category>rag</category>
      <category>llm-agents</category>
      <category>search-api</category>
      <category>context-window</category>
    </item>
    <item>
      <title>Designing MCP search tools an agent can actually use</title>
      <link>https://dataswap.io/blog/mcp-search-tools-for-agents</link>
      <guid isPermaLink="true">https://dataswap.io/blog/mcp-search-tools-for-agents</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why mirroring your REST API into MCP makes agents worse, and the rules that fix it: curated tool-belts, routing descriptions, compact returns, bounded output.</description>
      <category>mcp</category>
      <category>model-context-protocol</category>
      <category>agents</category>
      <category>tool-design</category>
      <category>claude</category>
      <category>cursor</category>
    </item>
    <item>
      <title>Product matching at scale, without guessing</title>
      <link>https://dataswap.io/blog/product-matching-at-scale</link>
      <guid isPermaLink="true">https://dataswap.io/blog/product-matching-at-scale</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Matching offers across retailers is an identifier problem before it is a model problem. Blocking, attribute normalisation, and why four verdicts beat true/false.</description>
      <category>product-matching</category>
      <category>ecommerce</category>
      <category>entity-resolution</category>
      <category>pricing</category>
      <category>digital-shelf</category>
    </item>
    <item>
      <title>Rank tracking by API, without fooling yourself</title>
      <link>https://dataswap.io/blog/rank-tracking-by-api</link>
      <guid isPermaLink="true">https://dataswap.io/blog/rank-tracking-by-api</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Build rank tracking that reports something true: pin location and device, diff sets instead of averaging positions, and know why keyword volumes never agree.</description>
      <category>rank-tracking</category>
      <category>serp-api</category>
      <category>seo</category>
      <category>keyword-volume</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Reading Google AI Overviews programmatically</title>
      <link>https://dataswap.io/blog/read-google-ai-overviews-programmatically</link>
      <guid isPermaLink="true">https://dataswap.io/blog/read-google-ai-overviews-programmatically</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Google ships no official AI Overview API. What the block is, how it differs from AI Mode, how to pull it with its citations, and why one sample tells you nothing.</description>
      <category>ai-overview</category>
      <category>ai-mode</category>
      <category>serp-api</category>
      <category>google</category>
      <category>citations</category>
    </item>
    <item>
      <title>Scraping vs licensed data: what actually differs</title>
      <link>https://dataswap.io/blog/scraping-vs-licensed-data</link>
      <guid isPermaLink="true">https://dataswap.io/blog/scraping-vs-licensed-data</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>CFAA, hiQ, the EU TDM opt-out, the database right and GDPR Article 14 — where web data sourcing is risky, and what a provenance receipt can and cannot prove.</description>
      <category>compliance</category>
      <category>gdpr</category>
      <category>web-scraping</category>
      <category>tdm</category>
      <category>data-sourcing</category>
      <category>provenance</category>
    </item>
    <item>
      <title>What GEO is, and how to actually measure it</title>
      <link>https://dataswap.io/blog/what-is-geo-and-how-to-measure-it</link>
      <guid isPermaLink="true">https://dataswap.io/blog/what-is-geo-and-how-to-measure-it</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>Generative engine optimisation has no rank to track. A measurement design that survives non-determinism: share of answer, denominators, sample size, consensus.</description>
      <category>geo</category>
      <category>ai-visibility</category>
      <category>share-of-answer</category>
      <category>measurement</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
