Back-end Programmer on Databases

Using the Twilio API and SQLite (at HackingEDU Oct. 2015)

Best Twilio API at HackingEDU 2015
Global Commit: Social Good Award at HackingEDU 2015

A SMS-based application using the Twilio API that allows users with limited or no internet access to learn a variety of topics by just texting simple commands to a number. Using SQLite, new topics can be easily added and stored for SMS-based practice later. I worked to make tables within databases using the SQLite library to keep track of questions/answers for each subject and the personal accounts for each subscribed user. I worked on,, and which are all described more below. It was my first time programming in Python, but now I feel very familiar with the language.

Image Gallery


We were inspired by the idea of enabling people without internet to learn through toll free messaging. Smartphones and laptop aren't easily available to those struggling in developing countries, so for those who wish to learn, it is a struggle for them to get online resources that are so widely available to the first world. For example, according to Pew Research, in Indonesia, only 15% of people own smartphones however 78% own a mobile phone that has sms capabilites. By providing a toll free number that can provide resources to practice basic knowledge (such as math), it will help those struggle in need to get the education to bring them out of poverty.

What it does

The user can subscribe to the database to receive the definition of word of the day daily from which they can guess the word and they can text 'learn math' or 'learn spanish' for easy to hard math and Spanish questions depending of their point count. Points are earned from responding with correct answer and level increases every 10 correctly answered questions.

How we built it

Team Twilio~ Hui Shi Li and Nguyet Duong. Huishi primarily worked with SQLite to create a database recognized subscribed users. She also works with the Wordnik API to retrieve the word of the day, and its definition. She is the primary lead to access the subscriber's database (subscribers.db). Nguyet worked on the input SMSs, and sending out the appropriate SMSs by parsing the input into tokens. Nguyet also set up and manages the server for live interactions.

Team Database~ Joyce Scalettar and Sarah Borland worked with SQLite to create tables to keep track of questions/answers for each subject level and accounts. To do this they created 2 main programs, database. py and Text2Learn db is created in (described more below), referenced in (described more below), and contains tables for each difficulty level for each subject. Account db is created, referenced and maintained within

Team Website~ Rosalba Rodriguez worked with HTML/CSS onto of Bootstrap to build the team's informational website. She customized the page to best fit the product.

Challenges we ran into

Some issues we ran into were, although we got the layout of the code generally correct initially, issues were syntax errors that came from no foreknowledge of python and the SQLite library.

In addition to this, setting up the server was definitely difficult and we had to do a lot of research to see how we can host the server in such a way that Twilio can still access it. Using Twilio's API was also slightly difficult, as they have many different forms of ways to send message. It caused a lot of confusion among the team members because we did not realize the variation in ways we can receive and send SMSs.

Accomplishments that we're proud of Using the SQLite library to create a database by reading in a text file with questions and answers for several topic with different levels of difficulty and output a table for easy difficulty topic within each topic in the Text2Learn database. Text file can have as many tables as you'd like and any number of questions/answers per table. Creating a program that contains several methods bridge between the Twilio server and our two SQLite databases. Functions include subscribe (adds user into in account db), unsubscribe (removes user from account db), send question (sends random question from topic and user's difficulty level in Text2Learn db), receive problem (checks if answer is correct compared to Text2Learn db and gives points if correct), and check points (sends user their current point totals in account db) Getting the server up was definitely difficult, and we ran into a lot of trouble and merge conflicts along the way. But in the end, we learned how to use Flask in order to create a server such that we can generate code to send to devices all around the world. There were definitely a lot of bugs, and it was hard to debug in real time application but we made it!