Due to the COVID-19 Pandemic, the stocks of airlines have dropped by over 35%. There is potential for 75 million jobs and 2.1 trillion dollars to be lost. The travel industry is one of the most useful and necessary fields - everyone utilizes it. Through travel, we get to experience the world and gain unforgettable memories. The travel industry needs to get back on its feet, and fast.
Pandemic or no pandemic, one of the biggest issues with travel is booking. Around a year ago, I planned a family trip to the Scottish Highlands. It took me an incredibly long time to evaluate the best options and prices for different activities (separately and then together); even then, I always missed something. While our trip was incredible, it took a lot of planning on my part. Using AutoVoyage, effective trip planning, in general, is simple and neat.
In the near future, people will be quite nervous about booking flights and vacations post-pandemic. There are few intuitive and reliable products that are able to verify how safe an airplane is, or a vacation to a certain area is. While also serving to simplify bookings, AutoVoyage ensures safety when traveling, thus reassuring potential travelers, helping them enjoy a wonderful and stress-free vacation, and boosting the industry.
What it does
One of the features of this web app is the ticket checker. Users can enter the basic details of their ticket and our machine learning & data modeling algorithm will evaluate the ticket based on factors such as annual traffic, cleanliness, Food, onboard service, and others. If our ticket is not deemed good by our algorithm, our web scraping application will scrape the internet and look for better ticket options based on your needs. All of our analysis is backed with datasets from sources such as Johns Hopkins University.
Another feature of this web app is the automated vacation planner. Users can enter the basic details of what kind of vacation they are looking to plan and our algorithm will open windows with potential options for your vacation. We have a web scraper that scrapes the web and looks for vacations that meet the current standard of hygiene that is required for vacations post-pandemic.
How I built it
I used flask as the basis for my server system and used python to communicate with ajax requests that were transferring the data from the signup and login form
I also the MySQL database which communicated with the flask backend to keep track of all users signed up and all users logged in
Metric for Evaluating Users Ticket
First, I came up with some factors that I wanted to evaluate tickets upon. These included annual airport traffic, number of total coronavirus cases, deaths, and recoveries in the area of airport, sanitation and customer service rates, average traffic and delays, as well as food and convenience.
I gathered datasets from reliable resources such as JohnsHopkins University and Kaggle that had data on the factors that I was looking for.
I used the Pandas and NumPy modules to scan and compute the scores for some of the world’s airports. In order to render this data on the webpage, I used the Plotly and Chart_Studio modules.
With the Pandas module, I read the datasets and put them in the best format for analysis. I stored the data I wanted to use for evaluation in NumPy arrays and then used those arrays to render the graph using Plotly and chart_studio. The Numpy and Pandas modules were also used to evaluate the user’s ticket and determine if it was a good purchase.
In order to calculate how much time the airport round trip will make, I used the Geopy and GeoPandas modules. In order to scrape the internet and choose the best option for the customer, I used the Selenium, BeautifulSoup, and Chrome WebDriver modules
I used Selenium, BeautifulSoup, and Chrome WebDriver to read the user input and scrape the internet for options. With a Flask backend system, I was able to process the requests from the user in the most intuitive way. Selenium ActionChains were helpful for advanced scraping features that helped process the user's customized inputs regarding their trip.
In addition, I utilized Selenium ExceptedConditions to fine-tune my algorithm and ensure that the bot does not search and scrape websites prematurely (it will not return any information from a loading page)
I used the SocketIO and Flask modules in python to create an environment in which multiple users can communicate with each other
I used socket.js as the middleman to communicate between the user input from the HTML and the python backend processing the requests
Challenges I ran into
While the Forum was not a major element of my website, I struggled a bit with integrating it. At first, the message box and input area were on another “page”, a page below the original screen. This made it so that messages could not be viewed without scrolling very far down. The messages never took up the page, but rather a piece below it. Each message simply moved that area down. Testing various elements, I first changed the percentage height of the area above the messaging box. That was a temporary fix; new messages still pushed the box down and out of the page. After analyzing my code, I figured that the message div was forcing the message box out of the way. I put them into the same div and moved the message box below the messages to create a more orderly and functional system. I also changed the screen percentage to change the height of the input box.
When I was creating the login system using Flask, I faced trouble integrating the Flask code with the SQL database; I had never used this database system before. In order to improve my understanding of integrating Flask to create a login system, I first read the MySQL documentation and was able to understand how to look at my database in the command line as well as using the MySQL workbench interface. After reading the documentation, I figured out the errors: integration with Flask and the forms as well as an incorrectly configured SQL installation. I was able to fix the issue with my form and Flask by reading up how to use ajax commands, after which I formatted my query properly. In order to fix the integration with Flask and the database, uninstalled the MySQL database system and then reconfiguring my setup to make the MySQL system discoverable on my computer.
When I first started creating the web scraping algorithm, I was unsure how to use Selenium and the Chrome web driver correctly. After taking a quick crash course on the basics, I tried implementing those concepts and found that those concepts were not very helpful. With my limited understanding of web scraping at the time, I decided to read the Selenium documentation to get a better understanding of some of the advanced concepts. After reading the documentation for 35 minutes, I stumbled upon ActionChains and ExpectedConditions in Selenium, and I realized that I could implement these concepts to get my algorithm to work. In the end, I ended using ActionChains and ExpectedConditions to perfect my search algorithm.
Accomplishments that I'm proud of
Before I began this hackathon, I was not knowledgeable about the technologies I am now familiar with, technologies used to build this product. I am truly grateful to Travel Scrum because I have picked up many new skills over this hackathon period.
Based on my research, there are very few reliable websites dedicated to analyzing travel and providing customized options.
I also had never used the flask python framework and MySQL database before starting to work on my project. This hackathon helped me get comfortable with learning new frameworks in a short time frame and pushed to my limits at some points, including when I stayed up until 5 am on Saturday to finish the final feature!
After taking some suggestions from a friend, I learned how to use CSS Grids in order to style my forms in a simple, organized grid to utilize horizontal page space; I am proud of my styling because it is another skill I have refined and developed during this hackathon.
What I learned
While I have a bit of coding experience, I lack any in the area of AI and machine learning. However, I was able to learn this over the four days of this hackathon using various courses and tutorials. With this new knowledge (plus CSS and HTML knowledge), I created this project!
I have also picked up many skills in debugging. Because I used software I was unfamiliar with for this project, such as Flask, I faced various issues. I learned to write neat code, code in which problems could easily be identified and fixed. I practiced conceptualizing an issue, breaking it down, and testing various elements in order to solve it.
Due to the longer length of this hackathon, I was really able to grow my coding skills and gain intuition as to how code is really implemented and what is really happening behind the scenes.
What's next for Automate the Travel Experience
My web application only scrapes the surface - there is so much potential to a travel software due to the large amount of busy, manual work that booking entails.
Here's What's Next:
I will implement a convolutional neural network in order to analyze the data more effectively. The convolutional neural network will allow my algorithm to learn from itself and improve overtime as well as decrease the amount of time it takes to run.
I will create a page for struggling small, private companies to advertise themselves and gain business. Due to COVID, travel has been hindered and many local people who relied on a travel-based job, perhaps as a translator or guide, have run out of business. They can find hope for their businesses with this element. Using an API or by creating our own scraping service, we will scrape for coupon codes for various bookings, thus allowing a user to plan an economic trip easily.
I will give each user multiple plan options that fit more of their criteria and allow for more customization. Each plan will weigh many factors including connecting flights or budgets. The plan result will be formatted slightly differently, creating various trip timelines with links to various bookings and trip plans. I may also break down the forms a bit more for more specific results.
For every use of my application, (plane ticket checks, or vacation planning) the user will be charged $3. All money will go to struggling travel companies.