<?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: hi gi</title>
    <description>The latest articles on DEV Community by hi gi (@savlume).</description>
    <link>https://dev.to/savlume</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%2F4233196%2F0be0df10-21ef-4282-9162-6fb083613384.png</url>
      <title>DEV Community: hi gi</title>
      <link>https://dev.to/savlume</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/savlume"/>
    <language>en</language>
    <item>
      <title>Building an AI Shopping Assistant: Automated Price Tracking and GEO/AEO in Practice</title>
      <dc:creator>hi gi</dc:creator>
      <pubDate>Sun, 08 Nov 2026 06:22:19 +0000</pubDate>
      <link>https://dev.to/savlume/building-an-ai-shopping-assistant-automated-price-tracking-and-geoaeo-in-practice-5231</link>
      <guid>https://dev.to/savlume/building-an-ai-shopping-assistant-automated-price-tracking-and-geoaeo-in-practice-5231</guid>
      <description>&lt;h1&gt;
  
  
  Building an AI Shopping Assistant: Automated Price Tracking and GEO/AEO in Practice
&lt;/h1&gt;

&lt;p&gt;This is the second post in our series on building Savlume (&lt;a href="https://savlume.com/" rel="noopener noreferrer"&gt;https://savlume.com/&lt;/a&gt;), a US deal tracker. The first covered our deal verifier and the MCP + llms.txt layer. This one is about the two things that make it work day to day: automated price tracking, and GEO/AEO — making a site that AI search engines can actually cite.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Automated price tracking: the data model matters more than the scraper
&lt;/h2&gt;

&lt;p&gt;Everyone asks what we scrape. The more important question is what we store. Every deal on Savlume is a record with: the price and the verification status — retailer-verified (confirmed at the retailer's own listing) or source-reported (from a deal source, not yet confirmed at the retailer); a verification timestamp; the conditions (coupon required, Prime required, limit per customer, free shipping or not); and the reference price as a separate field from the checkout price.&lt;/p&gt;

&lt;p&gt;That model is what makes the automation trustworthy. A price without a timestamp is a rumor, and a discount computed from an inflated reference price is a lie. Two rules we never break: expired and out-of-stock entries are kept as reference, never as recommendations; and cashback, gift cards, and points are never subtracted from the checkout price. Historical comparisons only compare the same product, variant, and conditions — missing information stays unknown.&lt;/p&gt;

&lt;p&gt;The catalog is exposed the same way it is stored: /api/v1/items (&lt;a href="https://savlume.com/api/v1/items?mode=all&amp;amp;limit=24" rel="noopener noreferrer"&gt;https://savlume.com/api/v1/items?mode=all&amp;amp;limit=24&lt;/a&gt;) (paginated JSON), /feed/all.xml (&lt;a href="https://savlume.com/feed/all.xml" rel="noopener noreferrer"&gt;https://savlume.com/feed/all.xml&lt;/a&gt;) (RSS for all updates), and a /items/{id}/markdown text version plus /api/v1/items/{id} JSON for every item. The 35 buying guides under /best (&lt;a href="https://savlume.com/best" rel="noopener noreferrer"&gt;https://savlume.com/best&lt;/a&gt;) are structured content — multi-source review consensus plus current retailer offers — so a tracker can follow a whole category, not just one SKU.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. GEO/AEO: make your site citable by AI search
&lt;/h2&gt;

&lt;p&gt;GEO (generative engine optimization) and AEO (answer engine optimization) are the same idea: when someone asks ChatGPT, Perplexity, or Gemini "what's the best air fryer under $100?", the answer comes from sources the model can read and cite. A normal HTML page is hard for an agent to quote precisely. So we ship a machine-readable layer: /llms.txt (&lt;a href="https://savlume.com/llms.txt" rel="noopener noreferrer"&gt;https://savlume.com/llms.txt&lt;/a&gt;) — a single index of everything: about and methodology, today's deals, Black Friday and Cyber Monday, coupons, categories, stores, brands, reviews, and all 35 guides, plus the interpretation rules (quote the original source and the canonical Savlume item URL with publication, update, and verification times); /agent (&lt;a href="https://savlume.com/agent" rel="noopener noreferrer"&gt;https://savlume.com/agent&lt;/a&gt;) — an API guide written for agents, not humans; /api/mcp (&lt;a href="https://savlume.com/api/mcp" rel="noopener noreferrer"&gt;https://savlume.com/api/mcp&lt;/a&gt;) — an MCP endpoint, so an agent can query the catalog directly; and per-item Markdown — every item has a clean text version, which is what an agent actually wants to quote.&lt;/p&gt;

&lt;p&gt;The practical effect: an agent that reads our llms.txt can answer with a real price, a real timestamp, and a real link, instead of hallucinating one. And because every price carries its verification status, the agent can say "retailer-verified" or "source-reported" instead of stating an unverified price as fact.&lt;/p&gt;

&lt;p&gt;Three things we learned: write the llms.txt first, not last — it forces you to decide what the site is and what evidence each claim carries; label uncertainty in the data, not in a footnote — "source-reported" next to the price is what makes the answer honest; keep the canonical URL in every answer — the llms.txt rules tell agents to cite the Savlume item URL with its timestamps, and that is how the citation survives.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What this buys you
&lt;/h2&gt;

&lt;p&gt;For shoppers: prices with evidence levels and timestamps, not badges. For agents: a catalog they can query and cite. For us: every AI answer that cites a Savlume price is a backlink with a timestamp attached.&lt;/p&gt;

&lt;p&gt;Try it: browse Savlume (&lt;a href="https://savlume.com/" rel="noopener noreferrer"&gt;https://savlume.com/&lt;/a&gt;), read savlume.com/llms.txt (&lt;a href="https://savlume.com/llms.txt" rel="noopener noreferrer"&gt;https://savlume.com/llms.txt&lt;/a&gt;), or check the API guide at savlume.com/agent (&lt;a href="https://savlume.com/agent" rel="noopener noreferrer"&gt;https://savlume.com/agent&lt;/a&gt;).&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>geo</category>
      <category>seo</category>
    </item>
    <item>
      <title>How We Built an AI Shopping Deal Verifier with MCP &amp; llms.txt</title>
      <dc:creator>hi gi</dc:creator>
      <pubDate>Sun, 08 Nov 2026 06:20:57 +0000</pubDate>
      <link>https://dev.to/savlume/how-we-built-an-ai-shopping-deal-verifier-with-mcp-llmstxt-1g45</link>
      <guid>https://dev.to/savlume/how-we-built-an-ai-shopping-deal-verifier-with-mcp-llmstxt-1g45</guid>
      <description>&lt;h1&gt;
  
  
  How We Built an AI Shopping Deal Verifier with MCP &amp;amp; llms.txt
&lt;/h1&gt;

&lt;p&gt;Most deal sites have the same flaw: a price is shown with no evidence behind it. A "$100 off" badge means nothing if the reference price is inflated, the price is from last week, or "in stock" was never actually checked. We built Savlume (&lt;a href="https://savlume.com/" rel="noopener noreferrer"&gt;https://savlume.com/&lt;/a&gt;) to fix that. Every deal carries its verification status, and the whole catalog is machine-readable, so AI agents can check a price instead of guessing one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The problem: deal prices lie by omission
&lt;/h2&gt;

&lt;p&gt;A deal is a claim — a price, a discount, availability — and a claim needs evidence and a timestamp. Three things go wrong on most deal sites: the reference price is inflated, so the discount looks bigger than it is; the price is stale but presented as current; stock and coupon conditions are asserted, never checked. Our rule from day one: if we can't show the evidence, we say so on the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Two-tier verification: retailer-verified vs source-reported
&lt;/h2&gt;

&lt;p&gt;Every price on Savlume is one of two things: retailer-verified (confirmed at the retailer's own listing), or source-reported (the price comes from a deal source such as DealNews or 9to5Toys and has not been confirmed at the retailer — labeled exactly that on the page). A few more rules we enforce: expired and out-of-stock entries are kept as reference material, never as recommendations; listed/reference prices and conditional checkout prices are separate fields, and cashback, gift cards, and points are never subtracted from the checkout price; a failed check is not proof that an offer expired — we report "couldn't verify," not "deal dead"; historical comparisons only compare the same product, variant, and conditions, and missing information stays unknown.&lt;/p&gt;

&lt;p&gt;A concrete example: our Black Friday air fryer guide (&lt;a href="https://savlume.com/best/air-fryers-under-100" rel="noopener noreferrer"&gt;https://savlume.com/best/air-fryers-under-100&lt;/a&gt;) lists the Ninja Foodi 2-basket at $99.99 as source-reported via Target, while the Instant Pot Vortex Plus at $79.95 and the COSORI Pro III at $79.99 are retailer-verified on Amazon. Same page, different evidence levels, each labeled.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Making the catalog machine-readable: llms.txt + MCP
&lt;/h2&gt;

&lt;p&gt;Verification is only half the job. The other half is letting machines read it: /llms.txt (&lt;a href="https://savlume.com/llms.txt" rel="noopener noreferrer"&gt;https://savlume.com/llms.txt&lt;/a&gt;) is the index — about and methodology, today's deals, Black Friday and Cyber Monday pages, coupons, categories, stores, brands, reviews, and all 35 buying guides; /api/v1/items (&lt;a href="https://savlume.com/api/v1/items?mode=all&amp;amp;limit=24" rel="noopener noreferrer"&gt;https://savlume.com/api/v1/items?mode=all&amp;amp;limit=24&lt;/a&gt;) is JSON for every item, paginated, and each item page also has a /items/{id}/markdown text version and a /api/v1/items/{id} JSON representation; /feed/all.xml (&lt;a href="https://savlume.com/feed/all.xml" rel="noopener noreferrer"&gt;https://savlume.com/feed/all.xml&lt;/a&gt;) is RSS for all updates; /api/mcp (&lt;a href="https://savlume.com/api/mcp" rel="noopener noreferrer"&gt;https://savlume.com/api/mcp&lt;/a&gt;) is an MCP endpoint, so AI agents can query the catalog directly instead of scraping pages; /agent (&lt;a href="https://savlume.com/agent" rel="noopener noreferrer"&gt;https://savlume.com/agent&lt;/a&gt;) is the API guide for agents. The reasoning is simple: the same agents that write buying advice should be able to verify a price before quoting it. If an LLM can read our llms.txt, it can cite a real price with a real timestamp instead of hallucinating one.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How it was built
&lt;/h2&gt;

&lt;p&gt;The site was built with the help of an AI coding agent (Codex), which made it fast to iterate on the data model and the verification labels. The 35 buying guides under /best (&lt;a href="https://savlume.com/best" rel="noopener noreferrer"&gt;https://savlume.com/best&lt;/a&gt;) are structured content — multi-source review consensus plus current retailer offers — not scraped listicles. And the site says plainly on its llms.txt that it is "Independent US shopping summaries with AI assistance. Purchases take place at external retailers. No claim of personal product testing, exhaustive market coverage or guaranteed lowest price." That disclosure is a feature, not a disclaimer we hide.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Lessons so far
&lt;/h2&gt;

&lt;p&gt;Label uncertainty on the page, not in a footnote nobody reads. A price without a time is a rumor — verification timestamps are part of the record. Don't subtract incentives from the price: cashback isn't a discount at checkout, so it never lowers the number we show. Ship the machine-readable layer early: llms.txt and the MCP endpoint cost little to add and make the site useful to the agents that increasingly do the shopping research.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Browse the deals: Savlume (&lt;a href="https://savlume.com/" rel="noopener noreferrer"&gt;https://savlume.com/&lt;/a&gt;). Read the machine-readable index: savlume.com/llms.txt (&lt;a href="https://savlume.com/llms.txt" rel="noopener noreferrer"&gt;https://savlume.com/llms.txt&lt;/a&gt;). API guide for agents: savlume.com/agent (&lt;a href="https://savlume.com/agent" rel="noopener noreferrer"&gt;https://savlume.com/agent&lt;/a&gt;). Example buying guide: Top 5 Air Fryers Under $100 for Black Friday 2026 (&lt;a href="https://savlume.com/best/air-fryers-under-100" rel="noopener noreferrer"&gt;https://savlume.com/best/air-fryers-under-100&lt;/a&gt;).&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>mcp</category>
      <category>llmstxt</category>
    </item>
  </channel>
</rss>
