Inspiration
One of the most important parts of reading research papers is understanding how they connect to other research. Most people have experienced studying a topic or looking for evidence to support something they're writing, only to find themselves wanting to explore related studies. However, finding those connections can be very inefficient, and the relationships between papers aren't always easy to visualize.
We wanted to change that and make researchers' lives easier.
Our idea was to combine interactive citation networks with natural language processing, allowing users to explore academic research visually while understanding how different papers build upon and contribute to one another.
What it does
UTrace is an interactive research exploration platform that transforms academic papers into visual citation networks.
Users can search for a scientific paper, open its citation graph, and explore the research connected to it. Each paper appears as a node, with directed connections representing citation relationships. Users can expand individual nodes to discover additional references and citing papers, gradually building a network around their research interests.
What makes UTrace different is its integration of machine learning. When users select a citation relationship, UTrace attempts to retrieve the actual passage in which one paper references another. Our trained NLP model then classifies the citation's purpose into three categories:
- Background: The cited research provides context or foundational knowledge.
- Method: The citing paper uses a technique, methodology, or approach from the referenced work.
- Result: The citation discusses or compares research findings.
When verified citation passages aren't available, Trace communicates that limitation instead of making something up.
Users can also interact with the graph through a custom physics system, rearrange nodes, and save their research networks for future exploration.
How we built it
We developed UTrace as a full-stack web application, combining software engineering frameworks with machine learning and academic data APIs.
For the frontend, we used Next.js, React, TypeScript, Tailwind CSS, and React Flow. We implemented a custom graph physics engine to create fluid node interactions, allowing users to drag papers around while connected nodes respond naturally.
Our backend uses Python and FastAPI to manage paper searches, citation retrieval, graph expansion, and machine learning inference.
We integrated two major academic data sources:
- OpenAlex: Provides real academic paper metadata, citation relationships, and, when available, structured full-text documents.
- Semantic Scholar: Provides scholarly metadata and citation-context information when accessible.
For the machine learning component, we trained a TF-IDF and Logistic Regression classifier using the SciCite dataset, which contains academic citation passages labeled according to their intent. Our model achieved approximately 83.5% accuracy on the official SciCite test set.
One of the most technically challenging components was connecting the citation graph to actual supporting evidence. We developed a retrieval pipeline that can extract passages from structured academic documents, match bibliography entries to verified research papers, and classify those passages using our model.
Challenges we ran into
Our biggest challenge was not creating the citation graph or training the classifier. It was finding the actual text that explained a citation.
Although academic databases contain millions of citation relationships, they don't necessarily provide the sentences in which those citations occur. Semantic Scholar sometimes lacked citation contexts or imposed API rate limits, while OpenAlex structured full text was not available for every paper.
We had to build additional retrieval mechanisms to overcome these limitations.
One particularly challenging problem involved academic bibliographies that lacked standardized identifiers. We developed deterministic matching techniques using paper titles, authors, publication years, and verified citation relationships to recover additional passages without sacrificing accuracy.
We also encountered inconsistent document formatting, identifier normalization issues, and performance bottlenecks caused by multiple API requests.
On the frontend, building natural-feeling graph interactions was another challenge. We wanted nodes to feel connected without making the graph too rigid or difficult to navigate.
Finally, integrating multiple developers' work into a single application required careful coordination, testing, and resolving conflicts across the frontend and backend.
Accomplishments that we're proud of
We're especially proud that Trace combines several technically different systems into a single interactive experience.
- Building a working academic citation graph with depth.
- Developing a custom elastic graph physics engine rather than relying entirely on default layout behavior.
- Training and evaluating our own citation-intent classifier instead of relying on a general-purpose AI model.
- Achieving approximately 83.5% test accuracy on SciCite.
- Implementing a system that retrieves and verifies genuine citation passages before classifying them.
- Building an interface that joins paper discovery, graph exploration, and NLP classification.
What we learned
This project taught us that building a machine learning application involves much more than training an accurate model.
Our classifier performed well on its test dataset, but applying it to real-world research required solving a completely different problem.
We learned how to work with imperfect external APIs, normalize inconsistent academic identifiers, parse structured documents, implement caching and rate-limit handling, and verify information across multiple independent sources.
We also gained experience with graph algorithms, physics simulations, asynchronous applications, full-stack integration, and collaborative software development.
Perhaps our biggest takeaway was the importance of knowing when a system doesn't have enough information to make a prediction.
What's next for Trace
Our long-term vision is to make Trace a research companion that helps students, academics, and researchers go about scientific literature more efficiently.
Our next priorities include:
- Improving citation coverage: Integrating additional legitimate open-access full-text sources to retrieve supporting passages for more research papers.
- Improve graph intelligence: Using citation classifications to visually distinguish different types of research relationships.
- Improving research workflows: Expanding saved research collections and making it easier to organize and revisit discoveries.
- Developing smarter exploration tools: Helping users identify influential papers, common methodologies, and relationships between different areas of research.
Built With
- fastapi
- httpx
- huggingface
- javascript
- joblib
- motion
- next.js
- node.js
- numpy
- openalexapi
- pandas
- pydantic
- pytest
- python
- react
- reactflow
- scicite
- scikit-learn
- semanticscholarapi
- tailwindcss
- typescript
- uvicorn
- vercel
- vitest