Inspiration
Many people use existing software to organize their notes into visual structures, helping them understand the contents and how topics relate. The goal here is to flip that procedure: instead of manually building the structure, we propose using generative AI to create a dynamic pool of content and topical relationships for the user to explore and expand upon.
When exploring new topics, figuring out what to learn can often be harder than mastering the material itself. By automatically producing curriculums that are both flexible, personalized, visual, and representative of the learning path, we aim to revolutionize the learning process.
What it does
Heapify takes as input either a sentence, phrase, word, or acronym describing the high level topic the user wants to learn about. From here we have Gemini automatically generate a structured list of important subtopics required in order to gain an understanding of the high-level topic. These subtopics are modelled and visualized using PyVis and NetworkX in order to give the user a visual idea of how the topics relate and flow. As the user wants to learn about the individual topics/subtopics they can click to expand any of the graph nodes which then leads to a comprehensive lesson from Gemini. However to make this system truly expansive, with every new node being explored: the lesson will continuously reveal connections to more foundational topics, helping users always find a suitable entry point for their skill level. If the user has difficulty understanding a concept covered within a lesson or doesn't understand the meaning behind a word or a phrase, they can also branch that subtopic into its own lesson, therefore preventing any dead-ends in the learning process.
How we built it
The web-app was developed primarily using Streamlit for multi-device functionality and easy deployment/hosting. Under the hood there's a local node.js module that serves as a communication layer for the various interface API's. Content completions and curriculum generations are all provided by Gemini's model: "gemini-2.0-flash" queried by the python google-genai package.
Challenges we ran into
The communication flow within our various front-end components and their connections to the underlying back-end proved to be challenging when setting up. By virtue of using PyVis to generate the loadable graph HTMLs for our demonstration, in order to make the visualizations interactable we needed to inject runnable code into the pre-generated files before displaying them. This along with our local node modules allowed for a fairly novel approach to enabling communication across iframe boundaries without needing to bypass major security features.
Accomplishments that we're proud of
Once the project stabilized, we were proud to have created a very useful yet also lightweight tool for learning. This is a product we both wanted to see in the world and we're happy to see that by pushing ourselves to create it under the constrained timeline of this event, we were able to bring this product into fruition.
On top of this we were also impressed to find that the emergent connections in the graph visualization often proved to be very insightful in learning the intrinsically deeper subtopics required to master a high level topic.
What we learned
On the machine learning front: Through our extensive experimentation and prompt design for Gemini we discovered the importance of guardrails in LLM outputs, lots of consideration needs to be taken in order to keep formats consistent due to the nature of LLM's being trained on large internet-scale data with lots of noise. It was also nice to see how far Gemini has improved in this specific field as well, last year imposing constraints on model outputs was significantly more difficult than it is now, thanks to the ingenuity of Google DeepMind.
What's next for Heapify
With a software this good, not making it easily accessible would be an injustice to the world. For that reason among many others, the biggest next step for Heapify would be to streamline both the cloud or local hosting options in order to meet the needs for all users. Additionally incorporating more knowledge sources backed by data into the lesson generation would be beneficial for removing inductive and epistemic biases in the models. From there some interesting directions would be to investigate inter-topical connections for high-level categories, or even representing the knowledge in formats that are even more conducive to forming memory maps.
Now that the product is ready, it's time to enjoy using it :)
Built With
- gemini
- google-genai
- networkx
- node.js
- python
- pyvis
- react.js
- streamlit
- typescript
Log in or sign up for Devpost to join the conversation.