Skip to content

Latest commit

 

History

History
73 lines (50 loc) · 5.87 KB

README.md

File metadata and controls

73 lines (50 loc) · 5.87 KB

Checkjebon.nl

Comparing food prices across multiple supermarkets is made a lot simpler using Checkjebon.nl. Simply scan your receipt, or enter your shopping list manually and you can instantly compare how much you would spend at each supermarket on the exact same products. You can query for generic products like milk or be more exact and specify the brand and amount.

The project can freely be used on https://www.checkjebon.nl/

This will bring up the amount due per supermarket for the shopping list.

After setting up your shopping list and selecting your preferred supermarket, simply check off items as you collect them from the store.

You can share your current shopping list with family members or friends at any time, or use the sharing functionality to use the shopping list created on your desktop or tablet to your phone as you go out to get groceries.

Supported supermarkets

Checkjebon.nl is aimed at the Dutch market, and currently aims to provide accurate and recent prices for:

Some supermarkets do not provide prices for their products online or are not yet indexed on a daily basis, and therefor are currently not included in the data set:

  • Boni - No online assortment.
  • Boon's Markt (MCD) - No online assortment.
  • Butlon - Not yet indexed.
  • Crisp - No online assortment without an account.
  • Dagwinkel - Not yet indexed.
  • EkoPlaza - Not yet indexed.
  • Flink - Not yet indexed.
  • GORILLAS - No online assortment without an account.
  • Hanos - No online assortment without an account.
  • Makro - Not yet indexed.
  • Marqt - No online assortment.
  • LIDL - No online assortment.
  • Nettorama - No online assortment.
  • Odin - Not yet indexed.
  • Poiesz - Not yet indexed.
  • Sligro - No online assortment without an account.

Product selection algorithm

For any product added to the shopping list, Checkjebon.nl tries to take a best guess at what you actually meant. Sometimes this may result in not seeing what you expect, simply because other products come up cheaper. In general, first an exact match by name is attempted. If there was no exact match, a fuzzy search will be applied, compiling a list of all products that contain the words from the shopping list item. The fuzzy search finds products based on if they contain all the letters from your shopping list item in the same order as they are given, but not necessarily right next to each other. For example, milk will find skiM mILK as well as whole MILK. When an amount in liter or kilogram is given, all products below the given amount are filtered out unless this returns zero results, in which case the filter is undone. Finally, products are first ordered by the string length of the fuzzy search (so whole MILK=>4 goes before skiM mILK=>6) in an attempt to find the closed possible match, those results are then ordered by price, and finally the top item from that list is returned.

The algorithm works better when supplying exactly what you are looking for. Note that generic names like milk are not well suited for this even though in in day to day live that would be enough to write down since you will make the choice between skim milk or whole milk once you get to the cooling compartment. The same goes for products like butter (salted butter, whipped butter, cream butter, etc).

When no prices are found for a specific product for any of the given supermarkets, a price estimate is used based on the average price for that product among other supermarkets.

Receipt scanning

When scanning receipts, Tesseract.js is used in order to detect text. After that, some processing is done to align the recognized text with true product names. Adjust any errors where necessary.

Privacy

When entering your shopping list, you data never leaves your computer. All processing is done in the browser. This means no one can keep track of your purchases or build an advertisement profile based on your searches. Upon opening Checkjebon.nl, all available prices will be downloaded. You will notice that reloading the page will not empty your shopping list; this is stored in your browser using the localStorage API.

Open data

Product price data is updated frequently and may be reused in other projects. For example, you can get a price alert when a product you don't buy often is discounted, such as cleaning supplies or personal care products, or more expensive products with long expiration dates such as (soft) drinks or bake-off pizzas. Data journalists may use the data to see trends or verify claims from supermarkets.