When we use the search function on Piazza, we usually find it hard to spot posts truly relevant to our question. And since the existing search engine on Piazza only supports sorting by time, students who want to review an important post they saw weeks ago have to go over the tedious process of scrolling down and checking contents. Therefore, to enable students, instructors and tutors have enjoyable learning and instructing experience, we decided to build a better search engine that can semantically understand you!

What it does

Biazza, as a Google Chrome extension, will be awakened whenever you enter any character into the search bar of Piazza. As you are typing into the search bar, it will start to search for the possible results and update search results dynamically. Besides, due to Biazza's semantical understanding function, it can still lead you to the related posts even when the keywords you entered are not included in the post.

How I built it

We use python to build the search algorithm and the backend. Then we use javascript to build the frontend of the chrome extension. The relevancy grading part of the searching algorithm is based on our own derivation of the integration of TF-IDF algorithm and sentence vectorization using word embedding models.

Challenges I ran into

Seamlessly integrating the search panel into Piazza's frontend is definitely challenging. Piazza doesn't expose any public API so we had to reverse engineer Piazza's site structure to acquire necessary information and present our search results. In the backend we directly call Piazza's hidden API to gather relevant posts for searching. On the frontend we used lots of JavaScript hacks to integrate with Piazza with zero access to its runtime internals.

Accomplishments that I'm proud of

We are only a team of two and before this hackathon neither of us knew anything about NLP or browser extensions. So I am so proud that both of us learned a ton of fresh knowledge and skills in 36 hours and eventually finished this project.

What I learned

Not only did we learn programming skills like how to use Python to program backend and how to hack other websites' code, but also did we learn soft skills like time management, effective exploration of knowledge, and most importantly how to utilize all the possible ways to solve problems.

What's next for Biazza

This time due to the limitation of our hardware and time, we couldn't construct a large enough dataset just for piazza/academic purpose. In the future we want to integrate users' data into the word relevancy model so that the engine itself can keep learning and customize the experience for each individual user.

Share this project: