A production-ready deep research agent that accepts a natural language query, generates targeted sub-queries, searches 30+ live web sources via Exa, and synthesizes a structured markdown research report — all streaming in real time.
Built entirely using Claude Code — Anthropic's agentic coding tool.
Try it live → deep-research-agent-five.vercel.app
- Accepts a natural language research query
- Generates 6+ targeted sub-queries automatically
- Searches 30+ sources via Exa web search API
- Synthesizes findings into structured markdown
- Streams the response in real time to the UI
Query: "Who is the digital artist Lente Scura?"
Agent generated sub-queries:
- Biography and real identity of digital artist Lente Scura
- Lente Scura digital art style and creative philosophy
- Official art portfolio and social media presence
- NFT marketplace sales and digital art exhibitions
- Critical reception and reviews of artwork
- Collaborations and presence in the digital art community
Sources found: 30+ Output: Structured markdown research report with sections, citations, and linked sources — streamed live
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| UI | shadcn/ui + Tailwind CSS |
| AI Routing | OpenRouter API |
| Default Model | google/gemini-3-flash-preview |
| Web Search | Exa AI Search API |
| Built With | Claude Code |
| Deployed On | Vercel |
User Query
↓
Sub-Query Generator (OpenRouter LLM)
↓
Exa Web Search (30+ sources per query)
↓
Synthesis Agent (OpenRouter LLM)
↓
Streaming Markdown Response → UI
- Clone the repo:
git clone https://github.com/Paul-Orlando/deep-research-agent.git
cd deep-research-agent- Install dependencies:
npm install- Configure environment:
cp .env.example .env.localAdd your API keys to .env.local
- Run the development server:
npm run dev- Open
http://localhost:3000
| Variable | Required | Description |
|---|---|---|
OPENROUTER_API_KEY |
✅ | Get from openrouter.ai/keys |
EXA_API_KEY |
✅ | Get from dashboard.exa.ai |
OPENROUTER_MODEL |
Optional | Default: google/gemini-3-flash-preview |
NEXT_PUBLIC_APP_URL |
Optional | Default: http://localhost:3000 |
| Path | Description |
|---|---|
app/ |
Next.js App Router pages and API routes |
components/ |
React UI components |
lib/ |
OpenRouter and Exa utility functions |
hooks/ |
Custom React hooks |
AGENTS.md |
Claude Code agent configuration |
CLAUDE.md |
Claude Code project instructions |
.env.example |
Environment variable template |
This entire application was built using Claude Code — Anthropic's agentic coding tool — including the Next.js setup, OpenRouter integration, Exa search pipeline, streaming UI, and sub-query generation architecture.
Add your environment variables in the Vercel dashboard during deployment.
- Add source citation links inline in output
- Support multiple LLM model selection in UI
- Add query history and saved research
- Export to PDF or Notion
- One-click Vercel deployment with env setup guide
| Repo | Pattern | Framework |
|---|---|---|
| ai-agent-team-supervisor-pattern | Supervisor Pattern | Flowise AgentFlows V2/V3 |
| ai-research-assistant-rag | RAG + Python | Python + OpenAI API |
| ai-food-chatbot-agent | Agentic RAG | Flowise + Postgres |
| data-analysis-agent | Custom GPT | ChatGPT + Versioned Instructions |
Paul Orlando Creative Technologist | AI Agent Developer | Data Analytics 🌐 paulforlando.com 💼 LinkedIn 🐙 GitHub
MIT License