<?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: Roger</title>
    <description>The latest articles on DEV Community by Roger (@rlosman).</description>
    <link>https://dev.to/rlosman</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%2F4239312%2Ff482140c-1a72-4a8f-a1ba-3faba77fc3dd.png</url>
      <title>DEV Community: Roger</title>
      <link>https://dev.to/rlosman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rlosman"/>
    <language>en</language>
    <item>
      <title>I built an app that compares one product across 20 stores by the real total</title>
      <dc:creator>Roger</dc:creator>
      <pubDate>Wed, 11 Nov 2026 14:51:32 +0000</pubDate>
      <link>https://dev.to/rlosman/i-built-an-app-that-compares-one-product-across-20-stores-by-the-real-total-3dm2</link>
      <guid>https://dev.to/rlosman/i-built-an-app-that-compares-one-product-across-20-stores-by-the-real-total-3dm2</guid>
      <description>&lt;p&gt;I kept running into the same problem while shopping online: the cheapest-looking price was often not the cheapest price once I reached checkout.&lt;/p&gt;

&lt;p&gt;One store would list an item for less, then add shipping. Another would include shipping but charge more for the product. A marketplace result might look like the full product and turn out to be only an accessory, a replacement part, or a different size or model. Comparing five or six tabs manually was slow, and comparing twenty stores was unrealistic.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;BargainBadger&lt;/strong&gt;, an Android app that starts with one product search and compares matching listings across 20 stores: Amazon, eBay, Walmart, Temu, AliExpress, Shein, DHgate, Alibaba, Vinted, TikTok Shop, Target, Wayfair, ASOS, Zalando, Currys, Notino, Nike, ABOUT YOU, Otto, and StockX.&lt;/p&gt;

&lt;p&gt;The important part is not just collecting prices. BargainBadger ranks results by the &lt;strong&gt;real total&lt;/strong&gt; — the product price plus the shipping and fees we can determine for the buyer’s country. That sounds obvious, but most comparison views still lead with the sticker price. A $19 item with $8 shipping is not cheaper than a $24 item with free shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;A user enters the name of a product, and BargainBadger brings the results into one view, with the best-value option placed first. The user can open the winning listing on the store’s own site and buy it there. BargainBadger does not replace the stores or pretend to be the seller.&lt;/p&gt;

&lt;p&gt;It also includes a watchlist with a target called &lt;strong&gt;“Your budget.”&lt;/strong&gt; If any store’s total drops to that amount, the user can be alerted. There is a community deal feed, barcode comparison for shopping in a physical store, and a simple cashback balance called Badger Bank.&lt;/p&gt;

&lt;p&gt;The buyer-facing description of that last feature is deliberately short: Earn additional cash back by purchasing through BargainBadger.&lt;/p&gt;

&lt;p&gt;I also made privacy part of the product rather than a separate promise buried in settings. The app does not ask for a name, address, payment details, or a normal account just to search and compare. Its watchlist and related features use a random device ID instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works, at a high level
&lt;/h2&gt;

&lt;p&gt;At a high level, the app sends a search to the backend, gathers listings from the connected stores, and normalizes things that stores describe inconsistently: titles, currencies, product variants, shipping information, and fees. It then tries to remove results that contradict the search — for example, an accessory appearing in results for the complete product — and ranks what remains by landed total.&lt;/p&gt;

&lt;p&gt;The difficult part has not been displaying a list. It has been deciding whether two listings are actually the same product. Stores use different titles for identical items, and sometimes nearly identical titles for different items. Size, colour, storage capacity, pack quantity, and condition can all change what a fair comparison means.&lt;/p&gt;

&lt;p&gt;Shipping creates another problem. A listing that does not ship to the buyer’s market should not win just because its product price is low. Country-specific charges matter too. If the app cannot establish the full total honestly, the interface should say what is known instead of presenting a false bargain.&lt;/p&gt;

&lt;p&gt;Those details are where most of my recent work has gone. They are less glamorous than adding another button, but a price-comparison app is useless if its first recommendation is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;p&gt;BargainBadger is available now as a direct Android download from &lt;strong&gt;getbargainbadger.com&lt;/strong&gt;. It is &lt;strong&gt;free until Dec 1, 2026, 13:30 UTC&lt;/strong&gt;. Downloads made during that free window stay free while installed. After the window, a $4.99/month subscription is planned.&lt;/p&gt;

&lt;p&gt;I will be honest about the stage it is at: sales are zero so far. The app is live, the store connections are live, and people can download it, but turning that into sustained traffic is still the unsolved part. That is the normal indie problem nobody can code away — building the thing is only the first half.&lt;/p&gt;

&lt;h2&gt;
  
  
  I need Android testers
&lt;/h2&gt;

&lt;p&gt;The next step is Google Play. Before a personal developer account can move to a public Play release, the app needs a closed test with &lt;strong&gt;at least 12 testers opted in for 14 days&lt;/strong&gt;. I am looking for Android users willing to install BargainBadger, open it, run some real searches over the test period, and tell me what breaks or confuses them.&lt;/p&gt;

&lt;p&gt;If you join the closed test, install before Dec 1, 2026 so the free-window rule applies and the app stays free while installed.&lt;/p&gt;

&lt;p&gt;The feedback I most need is specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A result that is not the product you searched for&lt;/li&gt;
&lt;li&gt;A total that looks wrong or incomplete&lt;/li&gt;
&lt;li&gt;A store you expected to see for your country&lt;/li&gt;
&lt;li&gt;A crash, freeze, or painfully slow search&lt;/li&gt;
&lt;li&gt;Any screen where the next step is not obvious&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need to be a developer or write a formal bug report. “I searched for this, expected that, and got this instead” is exactly the kind of report that helps.&lt;/p&gt;

&lt;p&gt;If you have an Android phone and can help, the download and tester information are at &lt;strong&gt;getbargainbadger.com&lt;/strong&gt;. I’m building in public as &lt;strong&gt;rlosman&lt;/strong&gt;, and I’ll keep reporting what works, what does not, and what the testing changes.&lt;/p&gt;

&lt;p&gt;One product, 20 stores, and the real total first. That is the whole idea.&lt;/p&gt;

</description>
      <category>android</category>
      <category>indiedev</category>
      <category>buildinpublic</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
