Our school has a website for getting what is on the dining hall menu, but it is slow, clunky, and generally a pain to use. What if you could just ask?

What it does

The Alexa skill scrapes information about what the dining hall is serving, and filters the food according to when it is being served (breakfast, lunch, or dinner), where it is being served, and if the food is vegan, vegetarian, or doesn't contain any ingredients that the user can specify.

How I built it

I used an Amazon lambda function running with Node.js that automatically triggers when the skill is used.

Challenges I ran into

The school's website for getting the dining hall information runs extremely slowly. To accommodate this, since the food served on a particular day doesn't change once it is posted, the program only fetches meal information once a day. Because lambda does not have persistent storage, and because the data is very infrequently updated, but accessed all at once, the information is stored in an S3 bucket.

Additionally, some foods are named different things but mean the same thing. I added the functionality to accept lists of synonyms that the program will search. For example, searching for "soup" will also search for "bisque".

Accomplishments that I'm proud of and What I learned

(combining these two sections)

Prior to this, I had only written simple skills that are variations of the templates and didn't use any features such as slots. I also had never the AWS SDK to interact with S3 buckets. I think that I understand skill development (and AWS in general) much better now.

What's next for DinDin

On the roadmap is the ability for students to mark specific foods as their favorites and simply ask if any of their favorites are available.

I plan to also add a process for submitting additional synonyms of foods.

Built With

Share this project: