Inspiration
I just started university and I have come to realize that there isn't one place where I can store all my assignment deadlines and info. With so many courses and so many deadlines, it is incredibly easy to overlook just one assignment or quiz. During the first week of school, I tried to create a Google Calendar with all my assignments for the next month, but it was simply too tedious and I was losing out on precious time I could have been using to study. That inspired me to create an efficient and reliable solution to scheduling.
What it does
Chrono makes it easy for students to manage their assignments. It leverages various AI services to make this possible. Students simply upload schedules and then manage their assignments straight from the site. Alternatively, they can download the data to upload straight to Google Calendar.
How I built it
Firstly, when users upload screenshots of their schedules, the images are passed through Google Cloud's Vision AI to perform OCR (Optical Character Recognition). From there, the text is fed to OpenAI's GPT API to create CSV (Comma Separated Values) data. This CSV data is stored as a temporary file in local storage for the user to download. The user can then take this data and upload it to Google Calendar allowing them to seamlessly add all their course assignments into Google Calendar.
On the front-end, I made use of Taipy. Taipy allowed me to create a minimalistic and functional front-end very, very quickly which was beneficial to me as I worked alone. Not only that, but Taipy allowed me to use my strong foundation in Python alongside web dev concepts I have learned through using React and Next. Aside from rendering an actual site, Taipy also allowed me to create a tasks page where users can view, filter, and sort through their assignments in table form. Lastly, I was able to style the site with CSS which Taipy fortunately supported.
Challenges I ran into
The largest challenge I ran into was getting the generative AI to accurately take raw description data from OCR and turn it into CSV files. Though schedules are generally in a table form, there are still many nuances which meant I had to very precisely describe what I wanted from the GPT API. It helped to give the API context with correct examples so that it has something to work off of.
The second largest challenge I ran into was learning Taipy. That being said, this was only a challenge at the beginning. Taipy proved to be very user-friendly and the documentation was very easy to use. It was definitely worth learning to use the library because it allowed me to code everything in Python which I enjoy more than MERN and other similar stacks.
Accomplishments that I am proud of
I am really proud that I was able to produce this application, especially as a solo participant. Moreover, I learned to use three new technologies that I have never touched before (Taipy, OpenAI GPT, OCR with Vision AI).
What I learned
Through this experience, I learned the importance of setting realistic goals. I understood my own capabilities and what I could accomplish as a solo participant, so I had to make compromises when I had to. I had to learn to prioritize some design features over others.
From a technical standpoint, I learned how to perform OCR using the Cloud Vision AI but I also learned how to use Taipy, which I will definitely be using the future given its developer experience.
What's next for Chrono
There are a few more features I want to add to Chrono. One of them is the ability for users to directly edit the table they see on the Tasks page and then have those changes reflected in the downloadable CSV file. This would be helpful since the AI services are not gonna work 100% of the time. As such, users should have the ability to edit the data themselves. That being said, they could do this in Google Calendar too.
Another feature is enhanced customization of the CSV file using GPT. For examples, users can send in a chat, "please remind me 3 days before every quiz". Then, the GPT could adjust the CSV to add reminders 3 days before every quiz.
Lastly, it would be nice if each user's assignments were stored in a database so that they can delete, modify, and save their assignment data with more versatility.
Log in or sign up for Devpost to join the conversation.