Research projects are challenges every student has to handle. However research is a long, difficult, time-intensive process, and tools made to help students organize research often hinder them instead, creating difficult-to-navigate mazes of notes and annotations. As students, we've had firsthand experience with some of these (truly terrible) research "tools", so we wanted to build a research tool that truly worked together with the user. Our solution, Synopsis, harnesses NLP and AI advances to both simplify and accelerate the process of taking notes and gathering information, while also streamlining access to those notes and information during the paper-writing process.
What it does
Synopsis cybernetically enhances your research experience. It integrates with open-source citation services to seamlessly integrate sources into a bibliography. It harnesses NLP to make it easy to filter text for important people, locations or dates, and to provide summaries and flag important points within sources. It provides an intuitive search to access stored notes and annotations. And when you go to actually write your paper, it uses fuzzy matching to pull up relevant notes as you type, streamlining the paper-writing process by providing instant access to information.
In other words, it's a research tool designed to not feel like a research tool. Using Synopsis should come as naturally as typing straight into an essay document - just put in the sources, and watch as your research project comes together.
How we built it
We used a Vue/Nuxt JAMstack frontend, built with the Vuetify frontend framework and using Fuse for fuzzy search. On the backend, we built a Flask-based REST API with Marshmallow for serialization and SQLAlchemy for an ORM, powered by SpaCy for natural language processing. Additionally, Synopsis interfaces with the open source Bibify citation service to provide autocitation features.
Challenges we ran into
We ran into some issues when experimenting with our NLP summarizer and auto-annotation API. Our original approach, which used a transformer-based BART network, was far too slow to provide a satisfactory user experience.
Accomplishments that we're proud of
We're proud of the advancements we made in learning to use NLP. When we first came together as a team, none of us had any significant prior experience with NLP; we had to learn all the different terminology around NLP, and how to put algorithms together that could annotate documents and analyze sources.
What we learned
We gained a lot of experience using the SpaCy NLP toolkit. Additionally, we also gained experience using Flask to build a full REST API with authentication, and learned to use Marshmallow for simple ORM<->JSON de/serialization. Similarly, we learned to use Vuetify (a UI framework none of us had much experience with).
What's next for Synopsis
We believe Synopsis could become an indisposable tool for students at our school and across the country. We plan to open-source the tool (after some refinement), and open it to the public as a powerful, free research aid for every student.