Inspiration

One of our members is in the market for a new car, and he was looking for the fastest acceleration he could find under his budget, but all of the cars that were in his sweet spot were hundreds of miles away, and incurred a high transfer fee. When we saw the opportunity offered to us through Carmax, we knew we had to take advantage.

What it does

CarMaps scrapes the transfer fees from the Carmax website and displays the data on a map using concentric circles to divide distances into zones. The website features an interactive slider that allows users to modify the constraints of the map to focus on the distances they are primarily interested in. For each ring, the website displays min, max, median, and average for all transfer fees as well as the line of best fit for the relationship between distances of cars and their transfer fees.

How we built it

Front end: For the user interface, we used HTML and CSS to develop the framework of our website, and we used JavaScript along with Google Maps API, Geocoding API, Places API, and Chart JS, to integrate the data on a Google Maps overlay. We also used Python and Flask to develop a Python server to run the website locally. Then, we also configured Google Cloud Storage Buckets, Google Cloud Load Balancers, and a domain name from Domain.com to host the website serverlessly on Google Cloud at http://www.carmaps.tech. Back end: On the back end, we used Selenium to scrape transfer fee data from the Carmax website, and we used SciPy and NumPy with Python to calculate the linear regression of distances vs transfer fees of the cars. We used Google Cloud Functions to host this process serverlessly, which was used to call the data to the website.

Challenges we ran into

The biggest challenge we ran into was with collecting the data. Since there was no official API provided during the competition, we had to scrape the data manually. This process was relatively time consuming, so we had to use techniques such as caching to make the scraping process as fast as possible. Another issue we dealt with was configuring our Google Cloud Functions. Since all of us were new to the services of Google Cloud, we had to take time to learn about the features Google Cloud offers, and figure out the best way to implement these features with our project.

Accomplishments that we're proud of

One big accomplishment we had is that we were able to host our website serverlessly using Google Cloud Storage Buckets and Google Cloud Functions. We were also able to tackle the challenge of obtaining all of our data and visualizing on a website.

What we learned

We learned a lot about the services offered by Google Cloud, and how we can implement them in the projects we do. These skills will be helpful for us in the future, as cloud technologies continue to develop. We also were able improve our skills in Data Science with the NumPy, SciPy, and Scraping methods that were implemented.

What's next for CarMaps

Although this site is currently flexible, it doesn't efficiently find the transfer fees for all cars from a certain origin. We could choose to implement a database that stores our data and caches it for future sessions. We could also implement other statistical techniques and make a more general model of the CarMax transfer fee estimate with distance and time as input variables.

Share this project:

Updates