Inspiration

Despite being in a room with sometimes hundreds of other students, sitting through a dense lecture can be one of the most isolating feelings for college students. Even after graduation, everyone dreads having to sit through long meetings and later sift through scribbled notes to find a key piece of information that could have been sent in an email. GistHub aims to provide a platform that allows everyone to work together and pool their efforts to produce the best collection of information that everyone needs to know. Together with UM-GPT, everyone can get the “Gist” of what happened at a meeting and learn in the best way possible: together.

What it does

We built a full-stack application that facilitates scalable and insightful collaboration in any situation where notes are being taken. Users can register with their email, name, and password, and join any Group they have an access code for. Groups can represent any kind of organization, from a university course, to a company, or even a project team. Group owners can create Events that represent either upcoming, ongoing, or past gatherings that everyone would benefit from having notes about. For any given Event a User is invited to, they must first upload their own Note of high enough relevance to what’s been submitted so far. Only then will they be able to see an AI-generated “Gist” of everyone else’s notes, while also having full access to the original text from everyone. This helps ensure Notes are of high quality and only those who help make them better are able to see the benefits of collaborating with everyone else.

How we built it

GistHub is a three-tier application that features a frontend application, backend API, and persistent storage via a database. Our backend is powered by Python using the Flask framework. It features a RESTful design, integration with the University of Michigan ITS UM-GPT API, server-side session management, and robust data validation with Pydantic.

We persist storage via our MongoDB Atlas database hosted on Google Cloud. Our schema was designed to take advantage of Mongo’s document-style structure, and embeds several object types in accordance with frequently accessed patterns (for example, including full Note objects inside of their parent Event). Notes and Gist files are stored separately in Google Cloud Storage, with only their blob keys being stored in Mongo for later retrieval and pre-signing.

Lastly, our frontend application was developed with React and the Ant Design framework. It features three pages: a home page, groups page, and events page. Users are able to view markdown and text files in-site, as well as download for later use. We were able to deploy this application to Google Cloud App Engine and host at our .tech domain, and plan to host the full application soon.

Challenges we ran into

Honing our GPT prompt to appropriately merge notes and previous Gists without adding extra information and differentiating from erroneous input was difficult. However, we were ultimately able to develop a prompt that at the very least encouraged the model to strongly prefer its existing summary to strangely irrelevant new input. We also added our relevance feature to detect the likelihood that someone is submitting irrelevant information, and prevent them from contributing until their notes align more with the current trend.

We also encountered some difficulties with networking in terms of a production deployment of our application, specifically related to the backend. We claimed the domain gisthub.tech and were able to host our react app there via Google Cloud App Engine, but still needed to configure Google Cloud Run to allow our backend to communicate with the open internet and our database cluster. For now, the project runs locally, but does communicate with our real cluster managed by MongoDB Atlas.

Accomplishments that we're proud of

We’re proud that we were able to spin up a functional full-stack application in only 24 hours. While the AI aspect of our project was certainly the most novel and challenging aspect we took on, we were equally challenged by an unfamiliar tech stack using Google Cloud and MongoDB, and so being able to deliver an application using these tools was a great accomplishment. We’re also proud of our successful integration of UM-GPT and the often impressive Gist output, especially given the fact that we’re integrating and merging several distinct inputs.

What we learned

We learned the importance of thorough planning before taking on a large project and delegating tasks between team members effectively. In terms of technology, we both had the chance to work with a NoSQL database for the first time after primarily working with SQL in the past, and generally were able to further develop our web development skills.

What's next for GistHub

We hope to host our fully functional website at our domain soon, and think about limitations our current designs could cause should the app ever need to scale. There are some features, mainly frontend related, that we also hope to finish implementing, such as a calendar view for upcoming events and a more robust relevance score.

Share this project:

Updates