About us
Cardea messaging is an AI assistive messaging system meant to help its users with daily tasks. The system is heavily focused on reminders, with different functions being able to set basic reminders, reminders that occur on certain days, reminders that repeat every n number of days, and reminders for an individual's birthday. Additionally, the program can also access current and forecasted weather statistics of an individual’s zip code, and it includes a built-in chatbot AI for any questions. As a bonus, the program has a built-in Ascii art function, where users can make some of their favorite cartoons and animals say custom phrases, which they can copy and send to friends. The system first verifies the user’s number with the official Cardea number. Once verified, the user can text this phone number commands, in which the number will do whatever the user requests. The official documentation for these commands can be found here
Creation Process
Cardea Messaging runs entirely off of an Odroid N2+. Cardea uses Twilio Messaging Services to process the messages. These messages are then run through local programs, which return the desired output, and then Twilio is used again to reply to the user. Scheduled messages such as daily reminders or birthday reminders are created using Twilio’s scheduling features. Every night, the program finds upcoming reminders in the database, created with SQLite, and schedules messages to be sent at the user’s allotted time. Overall, the only two expenses are the cost of messages with Twilio and the cost of OpenAI’s API. More detail is provided below about creating the six primary functions (check the table of contents).
Creators
The two creators of Cardea Messaging are Jacob Foltz and Joseph Roupe. Jacob Foltz focused more on the actual program, while Joseph Roupe focused more on the website, although both contributed to each side. Both have won national-level competitions in robotics as the lead programmers, finishing 2nd in the 2022 National Beta Convention and 4th in the 2023 National Beta Convention. Jacob Foltz is currently, as of Jan 2024, a freshman at The University of Tennessee at Knoxville, majoring in Computer Science with a minor in machine learning. Joseph Roupe, as of Jan 2024, is currently employed with Stanley Black & Decker, programming as a hobby.
Chatbot AI
The chatbot AI can reply to general questions or requests, such as suggesting good action movies or quickly answering a math problem, but it can also respond to questions about the syntax of different commands within Cardea. However, its answer to syntax questions might not always be the most reliable. It is simply a product of OpenAI’s API with a few training paragraphs. The training paragraphs go into explicit details about Cardea's traits, so hopefully the AI can better assist with any questions about Cardea's documentation. We currently use the gpt-3.5-turbo model, and the program defaults to the chatbot, so when the user texts, assuming they do not have a start associated with a different function, the chatbot AI responds.
Daily Reminders
Daily reminders can be used to set reminders for certain days of the week, every n number of days, or just a weather notification every morning. These reminders can all be viewed at once and deleted at any time. Every night, at midnight CST, the program searches for any reminders within one to twenty-five hours of the current time. All times are translated to UTC, and then Twilio’s scheduling feature sends out the message. Reminders for every n days are created using three crucial pieces of info, n, the last time the reminder was sent, and the next time the reminder needs to be sent. When the next reminder is within one to 25 hours, the reminder is scheduled, and the next reminder replaces the last time reminder, and the next reminder becomes what it was plus n number of days. All hour info, such as the scheduled time and timezone are pulled from a separate function which pulls from an individual’s preferences table, instead of a table full of reminders. For reminders set on weekdays, the program checks if their set time on their set day is within one to twenty-five hours and if so, the program schedules the reminder to be sent. Only 15 daily reminders can be created per user, which does not include scheduling daily weather updates.
Weather
Weather functions can give you current or predicted weather status for the rest of the day. Weather data is gathered through the python-weather library, which is a completely free resource. Weather functions can be triggered by starting texts with “-w”. Weather can give future or current info on any of the following statistics: ['temp', 'kind', 'descrip', 'humidity', 'ultraviolet', 'pressure', 'visibility', 'wind', 'rain']. It should be noted that weather is based entirely on five-digit zip codes, so your zip code has to be set before you can access any weather data.
Ascii art
The Ascii art function can generate a list of different animals and characters and make them say customizable phrases. Ascii art is all created through the library cowsay. While some other ASCII art creations are from different sources, cowsay processes and adds the words to each one. Here are some examples of ASCII art creations:
It should be noted that some characters might not fit onto certain messages on some phones. To trigger ASCII art functions, texts need to start with -c, and along with the chatbot, these functions are the only completely static functions that do not rely on information from the database.
Basic Reminders
The reminder function can simply schedule reminders, which will text you your chosen reminder at your chosen time. Basic reminders rely on Twilio’s scheduling feature and are not inserted into the database. They can be scheduled from one hour to seven days before the current time. To set a basic reminder, the timezone must have been set first. To trigger reminders, texts need to start with -r.
Recording Birthdays
The birthday function allows users to set birthdays, which they will receive a reminder of the person's birthday on their birthday. Users can also view all birthdays within a specific month and the following week. All birthdays can also be deleted. Recording birthdays once again uses Twilio’s scheduling feature, except names and dates are stored in the database. Names must be less than 200 characters, and only 50 birthdays can be recorded. Only the month and date are recorded, and the reminder setup works similarly to daily reminders, as every night the program searches for birthday reminders within one to twenty-five hours and sends them out. All birthdays are stored with their month’s number, as well as a monthly number, which indicates their chronological order within the month. This monthly number helps organize the “-b view” function and makes its results more readable. To trigger birthday reminders, texts need to start with -b.