As vegetarians and connoisseurs of good food, we are tired of misleading advertisements and yelp descriptions that read "Vegetarian Options Available" or "Vegetarian Friendly", which nine out of ten times end up in us eating a salad while our friends and family enjoy full, filling meals. There are over 375,000,000 vegetarians in the world, and that number is expected to increase dramatically over the next ten years. Many of them are facing a similar issue. So to the fellow human herbivores that can't seem to find the right restaurant, this one is for you.
What it does
VeggieBytes is unlike anything you've ever seen. It scrapes online menus for the internet and parses them to find mentions of target words like chicken, beef, pork, etc. Using a simple but effective algorithm, VeggieBytes calculates the proportion of a menu that is vegetarian, and the category that each vegetarian food item falls under (Entrees, Appetizer, Desert). Using this data the application approximates how prepared the establishment is to handle this dietary restriction.
How I built it
We started by finding a free, public API to source menus which we would parse and read data from those menus. For the sake of demoing however, the API generated several problems, so instead we converted the menus to text files manually so we could demonstrate the rest of our project without incorporating an inconsistent and useless API. The work was subsequently divided up into two categories, front end and back end development. HTML and CSS were used for building the frontend code for our web application, which was tailored to look professional but also to incorporate our creative ideas. The back end code was written in python and performed all the operations that gave ratings for each restaurant.
Challenges I ran into
We ran into a lot of problems, which we welcome with open arms, it helped us refine our project. In an attempt to integrate an API from Zomato, a restaurant menu and information database, we got numerous errors by searching endpoints that were returning incorrect data due to functions with synonymous names. Additionally, parsing the data in the API didn't give us the right results, as Zomato contained drastically different methods for accessing their menu. Some menus were accessed completely by text, others in jpeg images, others in URL links that redirected you to other pages that were difficult to interpret and process. One of the biggest challenges we faced were the limited experience of our team. Despite our hard work and comfortability around each other, none of us were familiar with integrating API's or syncing our frontend code to our backend code. We encountered problems with almost every piece of new, unfamiliar technology we wanted to use, such as Python Flask, a framework we had intended to use to concatenate our Python backend and HTML frontend. The biggest mistake we made was trying to be too ambitious (which is by no means is a bad thing), but it did prevent us from building a seamless, start to finish product.
Accomplishments that I'm proud of
Our team is comprised of diverse and well-rounded individuals, who had never met prior to HackGT. We quickly adjusted to each other's differences and listened to each other's ideas. When people work together, there is no limit to what they can accomplish. We are extremely proud of making our project a collaborative effort, where everyone's skills were put to use and the pace and passion for our work was unwavering from member to member. One of the best parts of going to Hackathons is to meet brilliant people. Speaking for myself, I have met three inventive, driven, and passionate people, who I can imagine keeping in touch with for many years to come. Hopefully, I will see them at HackGT next year.
What I learned
We learned a lot this weekend, but there are two that particularly stand out. We learned about how the development process works from start to finish, and how to make a product seem attractive to your audience. We began to understand towards the end of this event that the quality of your finished product has a lot to do with how you start it. If the idea has a strong foundation and purpose, it will be much easier to bring to life. On the technical side, we learned how to source and parse data from an API, which is discussed in numerous places throughout this writeup. This is the technology that seems to be propelling most team's projects. If we had the knowledge about API's that we have now when we started, the results of our design would have been entirely different.
What's next for Veggie Bytes
The team member that created the concept behind our project would like to move forward with its development in a more formal setting. YELP and GrubHub have semi-private, more complete API's.