Skip to content

Repository files navigation

PaperPulse

An intelligent research assistant platform powered by Google Gemini, Sentence Transformers, and live arXiv data.

Build Status


Overview

PaperPulse is a full-stack AI research platform that accelerates academic and professional literature workflows. Upload research papers, extract structured intelligence, conduct semantic question answering across multiple documents, discover related studies via real-time vector recommendations and live arXiv queries, and generate publication-ready literature surveys and citations β€” all within a unified, authenticated interface.

Live Demo: paperpulse.vercel.app Β |Β  Backend API: Hosted on Render


Features

Module Description
πŸ€– Research Assistant Context-aware RAG Q&A synthesized across all uploaded documents with citation attribution
πŸ’‘ Recommendation Engine 4 search modes (Topic, Abstract, PDF Upload, Domain Browse) using Sentence Transformer cosine similarity + live arXiv API
πŸ“š Literature Survey Generator Automated multi-paper surveys categorized by objectives, methodologies, findings and themes
βš–οΈ Paper Comparison Side-by-side AI breakdown of models, architectures, datasets, and performance tradeoffs
πŸ” Research Gap Analysis Automated discovery of unexplored problem spaces and future research directions
πŸ“ˆ Trend Analysis Keyword frequency shifts, emerging topics, and research trajectory projections
πŸ“ Citation Generator APA 7, MLA 9, Chicago, Harvard, IEEE, and BibTeX β€” formatted instantly
πŸ“‚ My Papers Library Unified manager for uploaded PDFs and saved arXiv recommendations with live search
πŸ“€ Export Export full sessions, notes, and surveys to Markdown, PDF, and DOCX
πŸ” Authentication Firebase Google Sign-in with guest-mode fallback
πŸŒ™ Themes Animated dark / light theme toggle, persisted across sessions

Tech Stack

Frontend                   Backend                   AI & Data
────────────────────        ────────────────────       ──────────────────────────
React 18 + Vite 5          FastAPI (Python 3.11)      Google Gemini 3.5 Flash
Context API (Auth,          Uvicorn ASGI server        Sentence Transformers
  Theme, Toast)             Pydantic v2                  (all-MiniLM-L6-v2)
Firebase Auth               python-dotenv              TF-IDF hashing fallback
jsPDF / DOCX export        In-memory VectorStore       Live arXiv Atom/XML API
FontAwesome Icons           Cosine similarity          Browser DOMParser (client)
LocalStorage persistence    CORS-enabled

Getting Started

Prerequisites


1. Clone the Repository

git clone https://github.com/guruprasanth02/PaperPulse.git
cd PaperPulse

2. Configure Environment Variables

Copy the example file and fill in your values:

cp .env.example .env
# Gemini API Key
VITE_GEMINI_API_KEY=your_gemini_api_key
GEMINI_API_KEY=your_gemini_api_key

# Firebase (Web App config)
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.firebasestorage.app
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id

# Optional: Override backend URL in production
# VITE_API_URL=https://your-backend.onrender.com

In development, VITE_API_URL defaults to http://localhost:8000. In production builds, it automatically falls back to /api on the same domain.


3. Run the Frontend

npm install
npm run dev
# β†’ http://localhost:3000

4. Run the Backend

cd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 8000
# β†’ http://localhost:8000/docs  (interactive API docs)

Project Structure

PaperPulse/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ChatContainer.jsx         # Research assistant with RAG & citation tracing
β”‚   β”‚   β”œβ”€β”€ RecommendationPage.jsx    # Vector-based recommendation with 4 search modes
β”‚   β”‚   β”œβ”€β”€ DocBrowser.jsx            # Paper library β€” upload, save, and search
β”‚   β”‚   β”œβ”€β”€ LiteratureSurveyPage.jsx  # Automated literature survey generation
β”‚   β”‚   β”œβ”€β”€ ComparePapersPage.jsx     # Side-by-side paper comparison
β”‚   β”‚   β”œβ”€β”€ ResearchGapPage.jsx       # Research gap discovery
β”‚   β”‚   β”œβ”€β”€ TrendAnalysisPage.jsx     # Trend and keyword trajectory analysis
β”‚   β”‚   β”œβ”€β”€ CitationGeneratorPage.jsx # Multi-style citation formatter
β”‚   β”‚   β”œβ”€β”€ ExportPanel.jsx           # PDF / Word / Markdown export
β”‚   β”‚   β”œβ”€β”€ UploadZone.jsx            # Parallel multi-file PDF ingestion
β”‚   β”‚   β”œβ”€β”€ SummaryPanel.jsx          # AI-driven document summarization
β”‚   β”‚   └── SettingsPage.jsx          # User preferences
β”‚   β”œβ”€β”€ context/                      # AuthContext, ThemeContext, ToastContext
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── useSessionPersistence.js  # localStorage session sync with debounce
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ gemini.js                 # Gemini API client β€” model cascade + fallbacks
β”‚   β”‚   └── recommendation.js        # Recommendation API + arXiv client-side fallback
β”‚   └── firebase.js                   # Firebase initialization
β”‚
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ main.py                       # FastAPI app β€” /research, /suggest_questions, /feedback
β”‚   β”œβ”€β”€ recommendation/
β”‚   β”‚   β”œβ”€β”€ recommender.py            # RecommendationEngine with vector indexing
β”‚   β”‚   β”œβ”€β”€ vector_store.py           # In-memory cosine similarity store
β”‚   β”‚   β”œβ”€β”€ embeddings.py             # SentenceTransformer + TF-IDF fallback
β”‚   β”‚   β”œβ”€β”€ arxiv_fetcher.py          # Live arXiv Atom/XML query and parser
β”‚   β”‚   β”œβ”€β”€ routes.py                 # FastAPI router β€” /recommend, /save-paper
β”‚   β”‚   └── models.py                 # Pydantic request/response schemas
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ api/
β”‚   └── index.py                      # Vercel serverless function entry point
β”‚
β”œβ”€β”€ Dockerfile                        # Multi-stage production container
β”œβ”€β”€ docker-compose.yml                # One-command local container setup
β”œβ”€β”€ vercel.json                       # Vercel frontend + serverless routing config
β”œβ”€β”€ vite.config.js                    # Vite build config with manual chunk splitting
└── .env.example                      # Environment variable template

Deployment

PaperPulse supports three deployment strategies. See DEPLOYMENT.md for the full step-by-step guide.

Strategy 1 (Recommended): Vercel + Render

Deploy the React frontend on Vercel's global CDN and the FastAPI backend on Render's dedicated container β€” eliminating serverless cold-start limitations for long AI inference tasks.

User Browser
  β”œβ”€β”€ Static assets  ──►  Vercel (Edge CDN, global)
  └── /api requests  ──►  Render (FastAPI, 24/7 container)
  1. Deploy the backend on Render β†’ copy the service URL.
  2. On Vercel, set VITE_API_URL to your Render URL and add all Firebase + Gemini keys.
  3. Add your Vercel domain to Firebase Console β†’ Authentication β†’ Authorized Domains.

Strategy 2: All-in-One on Vercel

Serves both the SPA and the Python FastAPI serverless function from a single Vercel project β€” pre-configured with vercel.json and api/requirements.txt.

Strategy 3: Docker Container (Any VPS or Render)

docker compose up -d --build
# App available at http://localhost:8000

API Reference

Method Endpoint Description
GET /health Health check
POST /research RAG research Q&A
POST /suggest_questions AI-generated follow-up questions
POST /recommend Vector-based paper recommendations
POST /search-topic Live arXiv + vector topic search
POST /save-paper Toggle save/unsave a paper
GET /saved-papers Retrieve saved papers
POST /feedback Log user feedback on AI answers

Interactive API docs available at http://localhost:8000/docs when running locally.


Contributing

Contributions, issues, and feature requests are welcome.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -m 'feat: add your feature'
  4. Push to the branch: git push origin feature/your-feature-name
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for details.


Built with React, FastAPI, Google Gemini, and arXiv open data.

About

PaperPulse is a full-stack AI research platform that accelerates academic and professional literature workflows. Upload research papers, extract structured intelligence, conduct semantic question answering across multiple documents, discover related studies via real-time vector recommendations and live arXiv queries, and generate publication-ready

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages