Cartwise

A price comparison site such as Heureka.sk shows the cheapest offer for one product. When buying several products at once, though, we run into a few problems:
- We cannot judge each product on its own. The sum of the lowest prices is not a real basket – buying from three stores means paying for delivery three times.
- Finding out whether a single store has every item in stock becomes almost impossible beyond a certain number of products.
- There are stores we are unwilling to buy from, even at the lowest price.
That is why we developed Cartwise, our own Google Chrome extension that finds the cheapest way to buy the whole basket – from a single online store or split across several, taking delivery into account.
Products are added with a button right on the Heureka.sk product page. The extension downloads every store’s offers and delivery options by itself, and the basket page shows the cheapest purchase from a single store (if there is one) and the five cheapest alternatives.
The result can be adjusted: the user fills in the delivery price and the free-delivery threshold from the store’s note (the extension remembers them for future purchases), corrects a product price the store lists differently than Heureka, or leaves out an unavailable offer or a whole store. The ranking is recalculated instantly after every change.
At its core is an efficient optimization algorithm: it treats the task as a facility location problem, known, for example, from warehouse planning, and solves it with branch and bound. A real basket of seven products and 42 online stores allows more than 38 million possible assignments, yet the algorithm evaluates only 107 of them and has the result in under 5 ms. For unusually large baskets it switches to a faster approximate method, and the page flags this.
The extension has no server of its own and all data stays in the user’s browser. It uses Manifest V3. Details are in the privacy policy(opens in a new tab).
Technologies:
Frontend: JavaScript, HTML, CSS
Other: Chrome Extensions API (Manifest V3), GraphQL, Node.js test runner, Playwright