What it does

Many items are more expensive in the United States than they are in other countries, due to differences in supply chain, currency exchange rates, local economic factors, etc. Additionally, many people will bring back items in their suitcases when they travel to other countries. Our hack combines these two facts to find the best deals for people by identifying the best country to buy a product, then connecting buyers with travelers to save money. We created a chrome extension to actively seek out price differences when buyers are on a shopping page, and a website that facilitates transactions.

How we built it

We have three primary components as part of this hack: the frontend, backend, and a chrome extension.

The frontend was built using React, using Material UI, Chakra. The frontend dynamically imports data from Supabase (PostgreSQL) database, and populates the page with various items.

The backend consists of an Express API built with TypeScript, which takes a link to a product and uses Gemini to explore the price of the same product on the same website in different countries. We first take the link provided by an API call from the chrome extension (see below) and send it to Gemini via Gemini API to generate alternative links to access the website as if we are in different countries; we then use Puppeteer to take a screenshot of each website, and then send the screenshot to Gemini to get the price of the product, which allows us to visually find the price without having to figure out different web-scraping approaches for websites with different layouts. If a deal is found, the backend sends the data for a product to our database, which is accessed by the frontend.

The chrome extension was made with JavaScript; it processes the contents of the user's browser and sends requests to the backend, and links to the frontend if it finds a good deal.

Challenges we ran into

The main challenge on the backend was figuring out how to get the price of products in different countries. Our initial approach was to just prompt an LLM to scan different countries' versions of the website. However, we quickly found out that no LLM was able to reliably access and parse different websites and get the latest price data. We then had to find a workaround, which we did by using the screenshot approach listed above; this still used an LLM to find prices, but was a lot harder than just telling the LLM to do so.

Accomplishments that we're proud of

Before this Bitcamp, we didn't have any experience in many of the technologies we used for our project. We had to learn how to create an API, how to prompt an LLM via API, how to use a headless browser, and how to integrate multiple features together with other APIs and a SQL database.

Built With

+ 1 more
Share this project:

Updates