I have two cousins in grade school. They are both extremely curious individuals, yet they often express disinterest with the curriculum at school. This inspired us to brainstorm a way to combine the fun of learning with the intellectual resources of the classroom.
What it does
The Alexa skill lets students ask for fun facts in the following way, "Alexa, ask Learn Up for a fact". They can also filter facts by subject: "Alexa, ask Learn Up for a Science fact", "Alexa, ask Learn Up for an English fact" or even by school: "Alexa ask Learn Up for a Math fact from Walnut Grove Elementary". The facts are submitted by teachers across the nation through a submission form at www.learn-up.org. To prevent inappropriate content, teachers must submit a code, which they can get from their school's superintendent. There are already over 100 thousand schools in our system, but if a school is not present, school administrators can sign up by simply sending a request from an official school email address to email@example.com.
How I built it
There are two components to this project: the web application and the Alexa skill. The web application is created with react/redux and serves as the primary interface for teachers. It is hosted on Heroku. The Alexa skill was originally built and deployed on stdlib for ease of development, but once the main functionality was created, I transferred the project to Lambda.
Challenges I ran into
Originally, I wanted to have an intent for getting facts from a particular city/state or just state. I found that having two slots adjacent to one another posed an inherent issue: does "West Virginia" mean the city "West" in "Virginia" or does it just mean "Virginia". I resolved this with some design thinking - would a student care to access facts from a particular state? Is it particularly helpful to let students ask for facts in a city? After some user testing with children, I determined that it was far more useful to be able to ask for facts from a school, and it turned out to be a much more manageable technical challenge, which brings me to my next one: recognizing unusual school name structures. I toyed around with a couple of different approaches here - first was to index school name in my database and create a score based on text similarity, but this turned out to be far more costly and less accurate than simply querying for subsets of a request (for example, is "Walnut Grove elementary" a subset of "Walnut Grove elementary school"). Down the line, this will be improved by being able to set a user's home school (or schools).
Accomplishments that I'm proud of
I am proud of the idea - if this can make even one student find joy in learning, it will have been a success. And I personally believe that this has potential to cause a whole lot of students to think about academics more optimistically. On a technical note, I am proud of having submitted my first Alexa skill for public use! I had developed a number of sandbox skills for friends and family prior to this competition, but I had never pushed one to production.
What I learned
After having completed this project, I now feel confident in building an Alexa skill from start to finish, so specifically, I have learned about the ASK and the Alexa skill building workflow. I have also learned about the scope of challenges in the realm of natural language understanding. Converting text to semantics is not an easy task, and I have a newfound appreciation for the Alexa engineering and research teams. Additionally, and perhaps most importantly, I have learned that when developing something, it is vital to think about the end user. The user testing phase of development can make or break a project.
What's next for Learn Up
Add intents for geographies; add account linking for students, so that they can ask for facts from "my school"; enhance web application so that teachers can manipulate previously submitted facts and share with particular student cohorts, set their subject of expertise, school, etc; add more subjects; partner with schools and students to increase base of facts; create incentive program for teachers to add facts; create web application for creating incentive games within classrooms, just to name a few!
If you have any questions, comments, or suggestions, please feel free to reach out! Email is firstname.lastname@example.org
Thank you for reading :)