A web-based research assistant that helps users explore and analyze academic papers. The application features a modern web interface with a tab-based research system and supports multiple AI models for paper analysis.
There are a few options:
- Single-paper Summarization: Summarize a paper, pull out key topics for analysis and allow for open-ended questions of that paper.
- Explore: As open-ended questions against a corpus of papers crawled into our vector store (see backend/apptasks/)
- Deep Research: A OpenAI/Google deep research-style searching of the web for pages related to a given paper. Can use either text-based browsing or a web agent like browser-use.
- smolagents for the agents
- QDrant as a Vector DB
- LiteLLM for interacting with AI providers
- Railway for deployments
- FastAPI and Next.JS
- Interactive research interface with multiple tabs
- Paper exploration and deep research capabilities
- Support for multiple AI models
- Persistent storage of research sessions
- Real-time paper analysis
- Python 3.13+
- Node.js 18+
- uv for Python dependency management
- Various API keys for AI services
- Clone the repository
- Navigate to the backend directory
- Set up the environment with uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate- Install dependencies:
uv pip install -e .-
Copy
.env.exampleto.envand configure the keys. -
Start the backend server:
fastapi dev main.py- Navigate to the frontend directory
- Install dependencies:
npm install- Start the development server:
npm run devThe frontend is built with:
- Next.js 15.2.0
- React 19
- TailwindCSS
- TypeScript
Backend:
- Install dev dependencies:
uv pip install -e ".[dev]" - Format code:
black . - Lint:
ruff check - Type checking:
mypy - Run tests:
pytest
Frontend:
- Development server:
npm run dev - Build:
npm run build - Start production server:
npm run start - Lint:
npm run lint - Format code:
npm run format
The project uses three main GitHub Actions workflows which run on PRs:
- Python Static Analysis: Runs
black(formatting),ruff(lint) andmypy(type checking) against all python code. - Frontend Linting: Runs
eslintagainst all code infrontend. - Python Tests: Runs
pytestsuite inbackend/app/tests.
The application automatically deploys to Railway when changes are merged to the main branch.
