Inspiration
We met a wonderful lady on the Cal Train and she gave us some product ideas revolving around trees. She suggested developing something to replicate the subtle sounds they make — possibly to immerse the user in a different environment and help them feel at peace. Considering the state of mind we were in (it was a Friday night and we were stressing over what we wanted to build), the product seemed almost tailor-designed for us. After some further thought, we realized that our problem (combined with some trees) could be our product!
What it does
We designed a product that makes ideating and visualizing topics easier than ever before. Imagine you wanted to see how – say math – all comes together. Sure, you could go down 200 wikipedia pages to get a gist of how everything comes together or talk to GPT for an hour but that’s if you know where to look/what to ask. Otherwise, this can get overwhelming very, very fast. We’ve solved this issue by developing a tool which takes an input of any word, topic, or idea, and outputs a tree which branches out to other topics.
How we built it
We used gensim – a word embedded model – which finds connected words by comparing vectors which quantify how similar the contexts they appear in are. In addition to this, we also used linguistic filtering in the form of lemmatizers and classification to reduce misspellings and varying forms of the same word (ie: college, colleges, etc). This was especially crucial because the datasets we pulled from weren’t filtered very well.
Challenges we ran into
It was difficult to tune our algorithm to balance the weight of the previous node and the word the user entered to the next node. For example, if our algorithm put too much emphasis on the previous node, the outputs would branch out too quickly and the tree as a whole wouldn’t make much sense (at least to us humans)! Additionally, we ran into a lot of issues with figuring how async works with Flask and .json files. We spent a little too long figuring out we needed to run “pip install “Flask[async]” and that json.dump(...) was a synchronous operation.
Accomplishments that we're proud of
We’re very proud of the front-end we developed! The tree… well… actually looks like a tree! Additionally, the freecam + zooms takes the interactiveness to the next level and makes everything that much more fun to mess around with.
More than all that though, I’m proud that we worked together this well. It’s been a very long time since I’ve had this much fun in a group project – we genuinely felt like a team. We stressed together, debugged together, laughed together, and triumphed together. And considering we all are first-timers here at Cal Hacks, I’m super happy with how everything turned out.
What we learned
Vibe coding is not it (if you aren’t careful). We probably spent more time fixing up code that AI developed than it would’ve taken to code a mostly equivalent algorithm ourselves. We also all collectively learned a lot about Git and how to build from scratch on a strict timeframe (more specifically, how to work in parallel in terms of algorithmic improvements/front-end development).
What's next for The Word Tree
We might look into applying The Word Tree to more specific datasets for better data on niche topics. After generating the tree itself, it would be cool to have more interactive elements (ie: definitions/external resources after clicking on a topic, numeric similarity displayed when hovering on the branches, or other things of that nature). Although the main thing we want to do is deploy our website in the next couple days for the world to use our product!
Built With
- css
- flask
- gensim
- html
- javascript
- lexvec-database
- python

Log in or sign up for Devpost to join the conversation.