<?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: Dylan Ferrara</title>
    <description>The latest articles on DEV Community by Dylan Ferrara (@dylanferrara).</description>
    <link>https://dev.to/dylanferrara</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%2F4156231%2F92fec5e7-66a5-4c88-adde-604b2cbe6b15.png</url>
      <title>DEV Community: Dylan Ferrara</title>
      <link>https://dev.to/dylanferrara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dylanferrara"/>
    <language>en</language>
    <item>
      <title>Teach your agent to shop: verify any deal against price history in 20 lines</title>
      <dc:creator>Dylan Ferrara</dc:creator>
      <pubDate>Fri, 23 Oct 2026 14:23:54 +0000</pubDate>
      <link>https://dev.to/dylanferrara/teach-your-agent-to-shop-verify-any-deal-against-price-history-in-20-lines-39p4</link>
      <guid>https://dev.to/dylanferrara/teach-your-agent-to-shop-verify-any-deal-against-price-history-in-20-lines-39p4</guid>
      <description>&lt;p&gt;Shopping agents are useless if they trust the price tag. Here's the 20-line pattern that makes an agent price-aware using Fazy's free no-key API.&lt;/p&gt;

&lt;p&gt;The idea: before your agent recommends a product, it calls price history and quotes the dated facts. "Down $40 from $199 on 3 Sep 2026" beats "60% off!" every time.&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;requests&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_good_price&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;deal_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;h&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://fazy.com/api/v1/deals/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;deal_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/price-history&lt;/span&gt;&lt;span class="sh"&gt;"&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="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-Fazy-Agent&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;my-agent&lt;/span&gt;&lt;span class="sh"&gt;"&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="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lowest_recorded&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lowest_price&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;previous_price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;previous_price&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;facts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dated_facts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# e.g. "Down $40 from $199 on 3 Sep 2026"
&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;find_deal&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;max_price&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;deals&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://fazy.com/api/v1/deals/search&lt;/span&gt;&lt;span class="sh"&gt;"&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;max_price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;max_price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;in_stock&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="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;X-Fazy-Agent&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;my-agent&lt;/span&gt;&lt;span class="sh"&gt;"&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&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;deals&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;deals&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wire the dated facts into your agent's system prompt: "Never quote a discount percentage from the merchant. Quote Fazy's dated price facts."&lt;/p&gt;

&lt;p&gt;Prefer MCP? Same tools at &lt;a href="https://fazy.com/mcp:" rel="noopener noreferrer"&gt;https://fazy.com/mcp:&lt;/a&gt; search_deals, get_deal, get_price_history. No key, 60 req/min.&lt;/p&gt;

&lt;p&gt;I built Fazy (fazy.com). The API is free because agents that verify prices make the whole market more honest, and that's the business.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Black Friday deals are mostly not deals. We checked against the year's lowest prices</title>
      <dc:creator>Dylan Ferrara</dc:creator>
      <pubDate>Wed, 14 Oct 2026 00:32:54 +0000</pubDate>
      <link>https://dev.to/dylanferrara/black-friday-deals-are-mostly-not-deals-we-checked-against-the-years-lowest-prices-55fi</link>
      <guid>https://dev.to/dylanferrara/black-friday-deals-are-mostly-not-deals-we-checked-against-the-years-lowest-prices-55fi</guid>
      <description>&lt;p&gt;Every November the same thing happens: crossed-out prices appear everywhere, and most of them are theater. So we built the page that answers the only question that matters: is this the lowest price this product has actually sold for?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fazy.com/black-friday" rel="noopener noreferrer"&gt;https://fazy.com/black-friday&lt;/a&gt; lists products at the lowest price we have ever recorded for them, each with the earlier price it fell from and that price's date. Rebuilt hourly during the season.&lt;/p&gt;

&lt;p&gt;Why this works when "was" prices don't: our was-price study (&lt;a href="https://fazy.com/blog/was-prices-we-never-saw" rel="noopener noreferrer"&gt;https://fazy.com/blog/was-prices-we-never-saw&lt;/a&gt;) found 83% of claimed was-prices never appeared in our tracking. The anchor is the lie; the history is the truth.&lt;/p&gt;

&lt;p&gt;For builders: the same data feeds our free no-key API and MCP server (&lt;a href="https://fazy.com/developers" rel="noopener noreferrer"&gt;https://fazy.com/developers&lt;/a&gt;). Your agent can answer "should I buy this now or wait" from the record instead of the tag.&lt;/p&gt;

&lt;p&gt;I'm the founder of Fazy. The numbers are ours; the method is public; check it.&lt;/p&gt;

</description>
      <category>data</category>
      <category>webdev</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How we measured 83% of was-prices were fake (methodology deep-dive)</title>
      <dc:creator>Dylan Ferrara</dc:creator>
      <pubDate>Fri, 09 Oct 2026 14:21:50 +0000</pubDate>
      <link>https://dev.to/dylanferrara/how-we-measured-83-of-was-prices-were-fake-methodology-deep-dive-2g4f</link>
      <guid>https://dev.to/dylanferrara/how-we-measured-83-of-was-prices-were-fake-methodology-deep-dive-2g4f</guid>
      <description>&lt;h2&gt;
  
  
  #3 — How we measured 83% of was-prices were fake (methodology deep-dive)
&lt;/h2&gt;

&lt;p&gt;Tags: data, datascience, webdev, tutorial&lt;/p&gt;

&lt;p&gt;We published a finding last week: 83% of "was" prices in our catalog were never the price. Here's exactly how we measured it, so you can replicate or critique it.&lt;/p&gt;

&lt;p&gt;The dataset: every product in Fazy's catalog showing a reference ("was") price at least 5% above its current price, with the current price read within the previous three days.&lt;/p&gt;

&lt;p&gt;The test per product:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull the full price history: every recorded observation with timestamps.&lt;/li&gt;
&lt;li&gt;Require at least 30 days of tracking and 4+ observations. Anything thinner is excluded.&lt;/li&gt;
&lt;li&gt;Check: did the product ever sell within 2% of the claimed was-price? If no, it fails.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Results: 83% failed. Average watch time was eight weeks with 13 observations each, so this isn't a thin sample artifact.&lt;/p&gt;

&lt;p&gt;The category split surprised us: wellness 97%, cosmetics 96%, home 91%, footwear 91%, electronics 88%, appliances 75%, apparel 68%. Apparel's relative honesty makes sense: real seasonal markdowns exist there.&lt;/p&gt;

&lt;p&gt;The ugliest stat: 43% of products showed the same price at every single check. Not a sale with a fake anchor — just a fake anchor.&lt;/p&gt;

&lt;p&gt;Replicate it: our price history is queryable, free, no key: &lt;a href="https://fazy.com/developers" rel="noopener noreferrer"&gt;https://fazy.com/developers&lt;/a&gt; and MCP at &lt;a href="https://fazy.com/mcp" rel="noopener noreferrer"&gt;https://fazy.com/mcp&lt;/a&gt;. The get_price_history tool returns the dated facts.&lt;/p&gt;

&lt;p&gt;I'm the founder of Fazy, so read skeptically. The methodology is the whole point.&lt;/p&gt;

</description>
      <category>data</category>
      <category>datascience</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>83% of "was" prices were never the price. We measured it.</title>
      <dc:creator>Dylan Ferrara</dc:creator>
      <pubDate>Fri, 02 Oct 2026 04:13:06 +0000</pubDate>
      <link>https://dev.to/dylanferrara/83-of-was-prices-were-never-the-price-we-measured-it-4kn3</link>
      <guid>https://dev.to/dylanferrara/83-of-was-prices-were-never-the-price-we-measured-it-4kn3</guid>
      <description>&lt;p&gt;We run fazy.com, a deals site that records what products actually sold for. Last week we asked our own data a simple question: when a retailer shows a "was" price, was that ever the price?&lt;/p&gt;

&lt;p&gt;For 83% of products, the answer was no. Not once in our tracking history did the product sell within 2% of its "was" price.&lt;/p&gt;

&lt;p&gt;How we measured: every product in our catalog showing a reference price at least 5% above its current price, price read within the previous three days, tracked for at least 30 days with 4+ observations. Average watch time: eight weeks, 13 observations each.&lt;/p&gt;

&lt;p&gt;By category, the worst offenders: wellness 97%, cosmetics 96%, home 91%, footwear 91%, electronics 88%. Apparel was the most honest at 68%.&lt;/p&gt;

&lt;p&gt;43% of products showed the same price at every single check. A crossed-out price that never moves is not a discount. It is the presentation.&lt;/p&gt;

&lt;p&gt;Full methodology: &lt;a href="https://fazy.com/blog/was-prices-we-never-saw" rel="noopener noreferrer"&gt;https://fazy.com/blog/was-prices-we-never-saw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why I am posting this here: the dataset is queryable. We expose a free, no-key deals API and MCP server with price history: &lt;a href="https://fazy.com/developers" rel="noopener noreferrer"&gt;https://fazy.com/developers&lt;/a&gt; and &lt;a href="https://fazy.com/mcp" rel="noopener noreferrer"&gt;https://fazy.com/mcp&lt;/a&gt;. Any agent can ask "what did this actually cost over the last 90 days" instead of trusting the tag.&lt;/p&gt;

&lt;p&gt;I am the founder of Fazy, so read the numbers skeptically and check the methodology. That is the point of publishing it.&lt;/p&gt;

</description>
      <category>data</category>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I wired a free no-key deals API into my agent: 7 MCP tools, verified discounts</title>
      <dc:creator>Dylan Ferrara</dc:creator>
      <pubDate>Fri, 02 Oct 2026 04:02:28 +0000</pubDate>
      <link>https://dev.to/dylanferrara/i-wired-a-free-no-key-deals-api-into-my-agent-7-mcp-tools-verified-discounts-491g</link>
      <guid>https://dev.to/dylanferrara/i-wired-a-free-no-key-deals-api-into-my-agent-7-mcp-tools-verified-discounts-491g</guid>
      <description>&lt;p&gt;I built fazy.com, a price-checked deals site. Last week I needed deal data inside an agent without scraping, so I used our own API. It is free, no key, 60 req/min, and read-only. Here is the whole integration.&lt;/p&gt;

&lt;p&gt;The API: &lt;a href="https://fazy.com/developers" rel="noopener noreferrer"&gt;https://fazy.com/developers&lt;/a&gt;&lt;br&gt;
The MCP server: &lt;a href="https://fazy.com/mcp" rel="noopener noreferrer"&gt;https://fazy.com/mcp&lt;/a&gt; (7 tools: search_deals, get_deal, get_price_history, similar_deals, list_categories, catalog_slice, post_brief)&lt;/p&gt;

&lt;p&gt;Why it is different from scraping: every deal carries a verified discount_pct plus the current and reference price, and get_price_history returns the recorded price changes with dates. So the agent can answer "is this actually a good deal" instead of trusting the store's "was" price.&lt;/p&gt;

&lt;p&gt;We ran our own catalogue against those "was" prices: 83% of them were never the price while we watched (methodology: &lt;a href="https://fazy.com/blog/was-prices-we-never-saw" rel="noopener noreferrer"&gt;https://fazy.com/blog/was-prices-we-never-saw&lt;/a&gt;). That is the dataset your agent gets to query.&lt;/p&gt;

&lt;p&gt;Minimal example, curl, no key:&lt;/p&gt;

&lt;p&gt;curl "&lt;a href="https://fazy.com/api/v1/deals/search?q=robot+vacuum" rel="noopener noreferrer"&gt;https://fazy.com/api/v1/deals/search?q=robot+vacuum&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;Response includes discount_pct, price, reference_price, merchant, in_stock, and a url field per deal. For MCP clients, point at &lt;a href="https://fazy.com/mcp" rel="noopener noreferrer"&gt;https://fazy.com/mcp&lt;/a&gt; and the tools show up.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/FazyFer/fazy-mcp" rel="noopener noreferrer"&gt;https://github.com/FazyFer/fazy-mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am the founder, so obviously biased, but the API is free and the data is the interesting part. Happy to answer questions about the price-tracking methodology.&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
