Inspiration

The problem that inspired us to make this website is a simple but time costly one, we found that we were at odds at occasions as what to make for a meal. In a world with many options - and many affordable choices out there, we wanted to make a tool that would create a frictionless experience to get food on your plate with as least hesitancy as possible. Our team wanted to aim high, so a challenging program to solve this problem was perfect for us.

What it does

Ca.Co. is the perfect app when it comes to finding amazing recipes that you could make, based on the ingredients you already have at home! Once the user has signed into their account, they are directed to the pantry tab. In the pantry tab, the user can select all the ingredients which they have at home, this acts as their "fridge". After selecting all their ingredients, they can confirm and the program will match said ingredients with dishes found in our database. It will then recommend the top 12 most relevant dishes. It's great for those unsure of what they want to prepare.

How we built it

  1. Started off using Python (most notably the modules recipescraper and openpyxl) to scrape hundreds of allrecipes.com links for relevant information and stored it in an excel worksheet
  2. Using Python again, we built an ingredient-to-dish matcher which scans the excel worksheet for dishes containing certain ingredients and returns the twelve best-matching recipes to be displayed.
  3. JavaScript, CSS and HTML were used to design and integrate features from the back end into a log in page and a main pantry page.

Challenges we ran into

  • Scraping data for dishes was difficult as bugs in our scraper caused data to duplicate / fail to appear on Excel (required a new scraper to be designed with thorough examination)
  • Finding a method in which the program could sort and pick the twelve best dishes according to the ingredients picked (used match rates while lowering the standard which the data would be stored)
  • Connecting user input from the front-end (in JavaScript) and transferring that data so the back-end Python scripts could sort through it (JavaScript-Python communication)
  • Creating a user interface around back-end data as opposed to the other way around (input had to match data)
  • Our biggest issue was that we could not get JavaScript to communicate with Python. We could not make any progress on the program if data could not reach the algorithm, so nothing come back in return.

Accomplishments that we're proud of

  • Building a working algorithm that accurately matches the ingredients to the proper dishes
  • Attempting such a challenging project and reaching this far. We were punching way above our weight on this project yet we managed to get some nice pieces

What we learned

  • Gained coding experience through the different sections which we had to code
  • Ambition is important, but don't over-extend
  • Preparation for certain foreseeable issues can be beneficial
  • Don't spend too much time on certain issues if there are alternate solutions

Next steps for Captain Cook

  • Expanding the list of ingredients which the user can filter
  • Expanding the total amount of possible dishes that the program can recommend
  • Improving the matching algorithm by weighting certain ingredients (e.g. chicken is more important than salt)
  • Adding a "favorites" section where the user can view previously liked dishes
Share this project:

Updates