Name of project TODOBot

A secure project management tool with chatbot interface. This is our baby chatbot, born straight out of the terminal. How can TODOBot help you work today?

Inspiration

We initially piloted another project relating to productivity/project management, but we had to scale down our implementation after considering the time constraints and human resources available. However, we didn’t scrap the idea entirely and decided to concentrate on some of the competition specifics while tackling the idea of a project management tool. Since Twilio was offering free trial credit, Patrick decided to play with Twilio’s two-factor authentication tools and successfully got it online. We definitely wanted to utilize this early success in our project. Lily was interested in Twilio Autopilot, and she began experimenting in the Twilio Console to prototype a chatbot. After a while, she realized that Twilio’s interface was limited, so she decided to emulate and expand upon the system design of “actions” and training using Python and the nltk library. James took up the backend functionality of the TODO list to give the chatbot a purpose, and thus TODOBot was born.

What it does

In a nutshell: The user exchanges messages with Twilio Autopilot-inspired TODOBot, who will generate a TODO list based on the user’s specifications. TODOBot additionally features Twilio two-factor authentication.

Functionalities of the TODO list include:

  • Add : add a task
  • Add subtask : add a subtask under task number
  • Remove : remove task by number
  • Search by name : Search tasks by name, return the task number
  • Search by date : Search tasks by date
  • Get until : Gets tasks until a certain date
  • Stats : get number of tasks in list
  • List : get print out of tasks

How we built it

Frontend/Chatbot:

  • Python
  • We built our application using Python for frontend and authentication and Java as the backend database. -We used Python to control the 2-factor authentication using Twilio and SHA256 hashed passwords for increased security.
  • Chatbot_conversation() runs as driver
  • User input cleanup using nltk stemming and lemmatization
  • Robust natural language processing with regex inspired by the Twilio Autopilot system
  • Uses Outwriter class to log decisions as commands to a txt file for TODO List to execute

Backend/TODO List:

  • Java
  • Acts as the backend database for our application
  • The user does not interact with this directly, the chatbot converts messages from the user into parseable commands - that the Java database can understand.
  • The database system is lightweight and the contents of the todo list are stored into a json file.
  • Can create, delete, and list tasks via the terminal either manually or (through our app) automatically.

Security:

  • Python/Twilio -init.py drives the entire program
  • User account and login system
  • Sms two-factor authentication system powered with twilio
  • SHA256 password and two-factor code encryption
  • User specific secure TODO List

Challenges we ran into

We ran into a few different challenges along the way. Our first problem was brainstorming, which took us several hours to determine a purpose for our chatbot. We knew we wanted to code a chatbot, but we didn’t know what the chatbot would do.

Technical challenges varied depending on each team member. For frontend via the chatbot, getting started was quite intimidating. Lily searched for resources such as source code online for Twilio Autopilot, and through that research she found the Python library “nltk” which included a chat, pairs, and reflections module that was similar to Twilio Autopilot.

Accomplishments that we're proud of

  • We made a fully functional account creation and login system complete with two-factor sms authentication for extra security and end-to-end encryption for sensitive data.
  • We coded an original chatbot that includes NLP tokening and regex to make the user experience as natural as possible, handling both strings and datetime in any order of input.
  • We coded a TODO list that adds tasks and subtasks and keeps track across saves through a JSON file.

What we learned

Lily:

I’ve already been interested in natural language processing, and I was surprised that nltk offered such a broad range of tools to use while implementing the chatbot. I learned a lot about the nltk documentation while examining the API in order to override some of the functions in there. I also practiced a lot of regex syntax, which I wasn’t very familiar with. Coded within 24 hours, I was definitely proud of the chatbot, which takes a more user-centered approach to input. You don’t have to give TODOBot any formal list of commands in any order. All you need to do is talk regularly as you would human to human. I would love to explore more on how NLP is used in web engine searching, chat filters, AI, and more.

Patrick

I have always been interested in cybersecurity, and in this project I learned a lot about technical security methods by making our application’s account and login system. I learned a lot about encryption and how to securely store sensitive user data. I also learned about how two-factor authentication systems work, and successfully set one up for our application. By working on the security part of our project, I gained a much deeper understanding of how online security works, and how it is implemented.

James

I was interested in creating a very lightweight database system using object-oriented Java programming. I learned about command decision trees and tokenization of input commands/json files in order to parse them correctly. Through my teammates I learned about 2-factor authentication using Python and the basis of how chatbots, which was very interesting. Because of my work in this project, I have become more interested and experienced in backend development and I’m excited to learn more about backend technologies like SQL and MongoDB.

What's next for TODOBot

  • Graphical component: we could deploy TODOBot as a web or mobile application
  • Expand functionality of TODO list with sorting, smart filtering
  • Chatbot-powered alert and calendar system
  • Audio integration (speech-to-text)
Share this project:

Updates