Inspiration

We built this app because we realized that in moments of anger, stress, disappointment, people can often react impulsively and regret it later on. In an ideal world, we would be able to "press pause", and think about our actions, have time to self reflect, and then act accordingly. Often time people act in a certain way and then realize that they were caught up in the moment, and that if they had the chance to talk to their past selves, they would advise them to remain calm.

Venty gives the user a chance to do such a thing, by allowing me to revisit my thoughts and concerns. The goal is to take a step back, examine emotions, and self-reflect. Over time, the chatbot learns thinking patterns and becomes a kind of "future you", gently guiding you to making more sound decisions.

What it does

  • prompts you to vent in the chat screen
  • computes a sentiment analysis score, finds context words/entities
  • clusters vents into threads so bot "remembers" past advice given and user's input on that topic
  • generates a response based on the score as well as similar "threads" with similar context and entities.
  • schedules follow ups that ask reflective questions based on sentiment score. Timing of notification changes based on score, for example, a more negative score would require a faster follow up whereas a more positive entry would warrant a followup later in the day. Follow ups occur in 1hr, 6hr, and 24hr intervals
  • offers mini quiz on preferred persona of bot (mother figure, friend, etc.) and preferred values at different emotion states.

How we built it

  • Frontend: Expo and React Native with Expo Router for file-based navigation and notifications for local reminders
  • Backend: FastAPI in Python, Gemini API for prompt engineering and summaries
  • Data: MongoDB Atlas, to store thread IDs, input, output, summary of user input, topic, context metadata, sentiment score

Challenges we ran into

  • We had lots of issues figuring out endpoints and getting code to work on our individual phones.
  • Expo doesn't offer push notifications in their development build, so we had to resort to local notifications for the purposes of our project
  • embedding similarities were too similar in the beginning so the user could complain about two separate issues and they would be classified as similar vents and given same thread IDs.

Accomplishments that we're proud of

  • We created an end-to-end reflective loop that takes in a vent, then creates a summary, then schedules a follow up/check in by looking back at the memory
  • We implemented customized personas as well as allowing user to input in what the value so that the bot not only learns from previous follow ups, but also takes into account who the user wants to be as a person.
  • Good UI
  • functioning app with frontend, backend, storage, and notifications
  • no git problems, no merge issues

What we learned

  • How important useRouter is in React Native
  • RAG, combing embeddings to add to memory
  • using expo notifications for timed + context-aware check ins

What's next for Venty

  • more testing, the most effective way to test the app is by using it for a couple of days and being very genuine and intentional with the messages the user is sending to the bot.
  • Adding more resources within the website for mental health purposes
  • adding visuals so the user can understand were a bulk of their issues come from, and how much progress they are making by using the app.
  • Model fine tuning

Built With

Share this project:

Updates