PaperScout

AI Research Assistant | Feb 2026 - Present

Cloudflare Workers Durable Objects Workers AI React
← Back to Portfolio

Overview

PaperScout is an AI-powered research assistant for discovering and organizing academic papers from arXiv. Built on Cloudflare Workers with Durable Objects and Workers AI, it provides each user with an isolated agent instance backed by full SQLite persistence.

Ask PaperScout to find papers on a topic, get AI-generated summaries using Llama 3.3 70B, save papers to your personal library with custom tags, and query your collection later.

Key Features

arXiv Search

Query arXiv with date filters and result limits, returning relevant academic papers in real time.

AI Summaries

Structured summaries (TL;DR, Key Contributions, Limitations) generated by Llama 3.3 70B with abstract-only disclaimers.

Persistent Library

Save papers to a personal library with SQLite backing. Data survives page refreshes and browser sessions.

Custom Tagging

Organize saved papers with custom tags and query your library by topic later.

Streaming Responses

Real-time response streaming for a snappy UX, with up to 10 agentic reasoning steps.

User Isolation

Each user gets their own Durable Object instance with no shared state and full SQLite persistence.

Technical Highlights

Durable Objects + SQLite

Each user gets an isolated Durable Object instance with embedded SQLite for persistent storage of papers, summaries, and tags. State syncs to the frontend for real-time UI updates.

Tool-based Agent Architecture

PaperScout exposes AI tools (searchArxiv, summarizePaper, savePaper, listSavedPapers, removeSavedPaper) using the ai-sdk tool() API, with confirmation prompts for destructive operations.

Workers AI Integration

Uses Llama 3.3 70B Instruct via Cloudflare Workers AI with streamText() for real-time streaming. No external API keys needed — runs entirely on Cloudflare's infrastructure.

Graceful Fallbacks

Storage utilities automatically fall back from localStorage to sessionStorage to memory. React error boundaries catch rendering errors with recovery options.

What I Learned

Links