An intelligent, full-stack AI Research Agent that autonomously searches academic papers, generates AI summaries using IBM Granite, and enables semantic Q&A across multiple papers using MongoDB Atlas Vector Search.
Researchers and students waste hours manually searching, reading, and synthesizing academic papers. ResearchAI solves this by automating the entire research discovery pipeline using Agentic AI.
- π Smart Paper Search β Search 200M+ academic papers via Semantic Scholar API
- π€ AI Summarization β Complex papers summarized in simple language using IBM Granite
- π¬ Semantic Q&A β Ask questions across multiple papers using MongoDB Atlas Vector Search
- π Save Papers β Bookmark and persist important papers across sessions
- β‘ Real-time Updates β Live agent status streaming via Socket.io
- ποΈ Redis Caching β 60% faster repeat searches with intelligent caching
User Query
β
React Frontend (Vite)
β
Node.js + Express Backend
β
βββββββββββββββββββββββββββββββββββββββ
β Agent Pipeline β
β β
β Search Agent β Semantic Scholar β
β Summarize Agent β IBM Granite β
β Embedding Agent β Vector Store β
β Storage Agent β MongoDB Atlas β
βββββββββββββββββββββββββββββββββββββββ
β
Real-time Response via Socket.io
| Technology | Purpose |
|---|---|
| React.js + Vite | UI Framework |
| Tailwind CSS | Styling |
| Socket.io Client | Real-time updates |
| Axios | HTTP requests |
| Lucide React | Icons |
| Technology | Purpose |
|---|---|
| Node.js + Express | Server & API |
| Socket.io | Real-time streaming |
| Redis | Response caching |
| Winston | Production logging |
| Joi | Request validation |
| Helmet | Security headers |
| Technology | Purpose |
|---|---|
| IBM Granite (ibm/granite-4-h-small) | Paper summarization & Q&A |
| IBM Watsonx.ai | LLM API & governance |
| MongoDB Atlas | Paper storage |
| MongoDB Vector Search | Semantic similarity search |
| Semantic Scholar API | Academic paper database |
ResearchAI/
βββ frontend/
β βββ src/
β β βββ components/
β β β βββ SearchBar.jsx
β β β βββ PaperCard.jsx
β β β βββ StatusBar.jsx
β β β βββ AskBar.jsx
β β β βββ Sidebar.jsx
β β βββ pages/
β β β βββ Home.jsx
β β βββ services/
β β β βββ api.js
β β βββ App.jsx
β β βββ main.jsx
β βββ package.json
β
βββ backend/
βββ src/
β βββ config/
β β βββ db.js
β β βββ redis.js
β β βββ env.js
β βββ controllers/
β β βββ search.controller.js
β β βββ ask.controller.js
β β βββ saved.controller.js
β βββ services/
β β βββ arxiv.service.js
β β βββ granite.service.js
β β βββ vector.service.js
β βββ models/
β β βββ Paper.model.js
β β βββ SavedPaper.model.js
β βββ middleware/
β β βββ error.middleware.js
β β βββ rateLimit.middleware.js
β β βββ validate.middleware.js
β βββ routes/
β β βββ search.routes.js
β β βββ ask.routes.js
β β βββ saved.routes.js
β βββ socket/
β β βββ socket.handler.js
β βββ utils/
β βββ logger.js
β βββ asyncHandler.js
β βββ ApiResponse.js
β βββ ApiError.js
βββ server.js
βββ package.json
Node.js >= 18
MongoDB Atlas account (free)
IBM Cloud account (free)
Redis (optional β app works without it)
git clone https://github.com/yourusername/research-agent.git
cd research-agentcd backend
npm installCreate .env file:
NODE_ENV=development
PORT=5000
MONGODB_URI=your_mongodb_atlas_uri
REDIS_URL=redis://localhost:6379
IBM_API_KEY=your_ibm_api_key
IBM_PROJECT_ID=your_watsonx_project_id
IBM_GRANITE_URL=https://us-south.ml.cloud.ibm.com
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:5173npm run devcd frontend
npm installCreate .env file:
VITE_API_URL=http://localhost:5000npm run devhttp://localhost:5173
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/search | Search papers by topic |
| POST | /api/ask | Ask question across papers |
| GET | /api/saved | Get all saved papers |
| POST | /api/saved | Save a paper |
| DELETE | /api/saved/:arxivId | Remove saved paper |
| GET | /health | Health check |
| Variable | Description |
|---|---|
| MONGODB_URI | MongoDB Atlas connection string |
| IBM_API_KEY | IBM Cloud API key |
| IBM_PROJECT_ID | Watsonx.ai project ID |
| IBM_GRANITE_URL | IBM Granite endpoint URL |
| REDIS_URL | Redis connection URL |
| JWT_SECRET | JWT signing secret |
| CLIENT_URL | Frontend URL for CORS |
- Helmet.js β HTTP security headers
- Rate limiting β 10 searches/min per IP
- MongoDB sanitization β prevents injection attacks
- Input validation β Joi schema validation
- Environment variables β no secrets in code
- Error handling β stack traces hidden in production
This project was built as part of the IBM SkillsBuild University Engagements β AICTE 2026 internship program.
Problem Statement: No. 1 β Research Agent
IBM Technologies Used:
- IBM Watsonx.ai β Model deployment and API access
- IBM Granite (ibm/granite-4-h-small) β LLM for summarization
- IBM Cloud Lite β Free tier infrastructure
Palak Verma B.Tech CSE β CSJM University, Kanpur (2024-2028)



