Inspiration
The inspiration for RateMyCalendar came from our need as college students to better visualize our time. The challenge of balancing academic commitments with personal well-being pushed us to develop a personalized tool that can instantly recognize and give tips or advice . As students and also adults juggling multiple responsibilities, we often found ourselves wondering if there was a better way to manage our time. Regular calendars show us when we'll be busy, but make no mention whether or not these schedules are right for our goals and overall well-being.
We wanted to create something that can not only recognize patterns or trends, but also had the ability to help us understand those patterns, and what we could do to remedy them. Something that could say "Hey I've noticed you've been studying a lot, consider a study break!" or positive reinforcement in the form of "You've been killing it with consistency at the gym lately!" These kinds of observations typically come in the form of a personal figure in our lives, but here we were able to reproduce that environment utilizing AI!
What it does
RateMyCalendar, in a nutshell, imports your google calendar and from there, parses all the useful data from your schedule. This includes all your events, study sessions, work time, even time you spend hanging out! Our system processes this body of data, extracting patterns, key insights, and trends into a readable format for you, the user, to internalize and act upon.
The application breaks down your schedule into 3 main categories:
- Academic: classes, study sessions, guest speakers
- Exercise/Wellness: workouts, sports, meditation
- Personal/Social: hangouts with friends, hobbies, and any other leisure activities
How we built it
We built our entire web app using Javascript, and using frameworks such as React and Next.js, which gave us a lot of options to explore when using AWS, which was a crucial provider in our project. We used AWS Cognito in conjunction with Google OAuth and AWS IAM for login verification, authentication, and permission-control. We used AWS dynamoDB as our NoSQL-database as our storage server, and integrated this with AWS Bedrock, which is gave us access to a multitude of powerful AI-models at our disposal.
Challenges we ran into
Because it was our first time working with AWS, our largest challenge was setting everything up. From navigating the hefty AWS workshop console, to making sure all the dependencies we needed were installed and in the right version and place, we spent hours just on this part.
Because basically 80% of our project included back-end technologies, another challenge was just integrating all of these API's and endpoints together in a seamless manner. For instance, Amazon Cognito, which we used for login, did not provide an access token for us to be able to fetch Google Calendar information from Google's API. We didn't want users to have to click login twice, once for Cognito and another time to get their Google access token. It just ruined the flow for the user. It took hours, but we were able to find a workaround to this issue by pulling the embedded google access token out of the Cognito session. This allowed us to call the Google API directly without having users login a second time.
Accomplishments that we're proud of
Our largest accomplishment was our integration between AWS Bedrock, AWS DynamoDB, and the Google Calendar API. After extensive documentation lookups, and what seemed like endless hours pulling our hairs out, we were finally able to achieve a flow that seamlessly ingested events from a user's Google Calendar, store that data in DynamoDB, sorted by a userID and dates, and then also have the ability to fetch and run that data through our Bedrock models, where the brunt of the processing and 'thinking' was done. The results would finally be given back to us in a very specific response format that allowed us to display dynamic, personalized, real-time insights within our UI- Which was all done with the single click of a button.
What we learned
We learned that tasks that initially seem monumental (such as building a fully AWS-powered app with no prior experience), become so much more approachable, manageable, and even rewarding once you dive in, break it down to one-step-at-a-time, and celebrate milestones along the way, no matter how small them seem. We took 5 minute breaks after 'minors' wins, such as the successful implementation of a button, or being able to console.log() the correct userID, but these tiny celebrations kept our morale high, even through an all-nighter fueled by caffeine.
What's next for RateMyCalendar
For us, RateMyCalendar has potential to evolve from a prototype into an actual deployed, fully-fledged application. Over the course of 2-days we tackled calendar ingestion, dynamic visualization, and integration between 4 different cloud services- more than we ever imagined coming in. Next steps will include:
- An upgrade to our AI model, which would include building an inference profile so that we could take advantage of Claude 3.7 Sonnet, a super powerful reasoning agent
- Feature enhancements, which include the option to export, share, or download the personalized analysis from RateMyCalendar
- Additional user personalizations, such as weekly goals, or notifications and additional summaries
- And of course, bug fixes and tweaks to make the overall experience more smooth and seamless
Built With
- amazon-web-services
- google-oauth
- javascript
- next.js
- react
Log in or sign up for Devpost to join the conversation.