Inspiration

I was inspired to create this personalized affirmation app because sometimes I feel like I’m not good enough, and looking at my achievements helps me stay motivated.

What it does

Our application searches the user's email and calendar history, for documents it can use to uplift the user. It proves the self-deprecating users wrong and affirms people of their self worth.

How we built it

Backend and AI Integration: Using Flask as the backend framework, we connected the frontend with AI functionalities. We integrated LangChain and Google Gemini API to enable a Retrieval-Augmented Generation (RAG) model that processes context and provides personalized responses. Google Calendar API and Gmail API were used to gather user-specific context, such as past events and emails.

Data Processing and Retrieval: We used LangChain’s text splitting capabilities to handle large amounts of data, splitting the context into manageable chunks. Chroma and Google Generative AI embeddings allowed us to efficiently store and retrieve relevant information from this context, ensuring quick and relevant responses.

Frontend: The frontend was built using HTML, CSS, and JavaScript, providing a smooth, responsive interface where users can interact with the chatbot in real-time. Flask handled all communication between the frontend and backend, ensuring the user’s requests were processed and responded to efficiently.

Challenges we ran into

Frontend-Backend Integration: Since it was our first time connecting the frontend (HTML, CSS, and JavaScript) with the backend using Flask, we faced difficulties in properly implementing the communication between the two. Getting the data flow and requests to work smoothly took time and troubleshooting.

Code Structure Issues: As we kept adding new features and functionalities, we realized that our initial code structure wasn’t scalable. This caused confusion and delays, as we had to reorganize and refactor large portions of the codebase to ensure everything functioned correctly.

RAG Model Challenges: Our Retrieval-Augmented Generation (RAG) setup wasn’t working initially. The LLM responses were not properly using the context from the Calendar and Gmail APIs. We had to dive deep into debugging, ensuring that the context was passed correctly to the model for relevant, personalized outputs.

CORS Issues in Flask: Setting up cross-origin resource sharing (CORS) was a significant challenge for us. Since Flask was handling backend requests, we needed to enable CORS to ensure the frontend could communicate with the backend without issues, which took extra time to configure properly.

Accomplishments that we're proud of

We are happy that we could integrate the back-end and front-end while using different frameworks in this project. Even though some of our members were new to the technology, the final product worked. Despite being fairly new to the Gemini 1.5 API, our team successfully implemented it in our project to get the responses.

What we learned

Working on this project exposed us to different technologies, and the workshops throughout the event gave us key insights into the latest technologies being used in the industry. Working in a time-crunch environment taught us to stay focused and continue pushing despite receiving errors and bugs. Overall, we learned the importance of teamwork and planning required to succeed in a project.

What's next for UpliftMe

Share this project:

Updates