Noureddine RAMDI / Open Deep Research: A Next.js 16 agentic AI assistant for iterative web research

Created Tue, 05 May 2026 16:46:42 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

Nutlope/open-deep-research

Open Deep Research tackles a common pain point for researchers: how to automate the entire workflow from a research question to a comprehensive, sourced report. It stands out by using a large language model (LLM) not just to process input and output, but to control an iterative loop that plans queries, performs web searches, summarizes results, and decides whether more research is needed — all orchestrated in a modern full-stack TypeScript environment.

What Open Deep Research does and how it’s built

The core of Open Deep Research is a Next.js 16 application built in TypeScript that automates research workflows using Together.ai’s LLMs. A user inputs a research question, and the LLM generates a detailed research plan and search queries. These queries are then executed iteratively with Exa, a tool designed for automated web scraping.

The system collects the search results, summarizes them using the LLM, and evaluates if additional research is necessary. This loop continues until the LLM determines sufficient coverage has been achieved. The final output is a comprehensive, sourced report accompanied by a generated cover image.

Architecturally, it leverages several modern services and frameworks:

  • Next.js 16 with App Router: Provides the frontend UI and backend API routes, deployed serverlessly on Vercel.
  • Together.ai LLM: Drives the core reasoning and orchestration logic, including query planning and summarization.
  • Exa: Handles iterative web scraping/search based on generated queries.
  • Clerk: Manages user authentication.
  • Drizzle ORM with Neon: Offers a serverless Postgres backend for persistence.
  • Upstash QStash with Redis: Orchestrates the workflow queue, enabling reliable background processing and retry mechanisms.
  • S3-compatible storage: Stores generated cover images.

This stack demonstrates a clean separation of concerns: the frontend UI, the LLM orchestration logic, persistent storage, external tool integrations, and workflow orchestration are modular and extensible.

Why the iterative agentic research loop is the project’s strength

The signature feature is the agentic pattern where the LLM doesn’t just generate answers but controls a multi-step research process with conditional logic. The LLM plans a research strategy and formulates search queries, then Exa executes these searches.

After each iteration, the LLM summarizes findings and decides whether further research iterations are required. This feedback loop is a practical example of an AI agent using tool integration combined with self-evaluation to improve results.

Under the hood, Upstash QStash and Redis manage the asynchronous workflow and retries, which is crucial in production to handle transient failures or long-running jobs gracefully.

The use of Next.js 16’s App Router architecture aligns well with this multi-step flow, enabling clean API route definitions and serverless execution on Vercel. The combination of Drizzle ORM and Neon provides a lightweight yet robust persistence layer that fits the serverless deployment model.

Tradeoffs include the complexity of orchestrating multiple external services and the potential latency introduced by iterative LLM calls and web scraping steps. The LLM’s decision logic depends heavily on effective prompt design and can be sensitive to noisy or incomplete search results.

The codebase is surprisingly clean for a project integrating diverse components. The modular approach allows swapping or upgrading individual services (e.g., replacing Exa with another scraper or the LLM provider) without massive rewrites.

Explore the project

The repository is organized around a Next.js 16 app structure, with the new App Router for routing and API endpoints. The main logic centers on the orchestration of the research loop, integrating Together.ai’s LLM calls, Exa scraper invocations, and Upstash QStash queue management.

Authentication flows are handled through Clerk, and database interactions are managed via Drizzle ORM with Neon as the PostgreSQL serverless backend.

Images for reports are stored in an S3-compatible bucket, and you’ll find the relevant config and client code in the storage-related directories.

The README provides a high-level overview of the architecture and key concepts like agentic research loops and workflow orchestration.

Since no installation or quickstart commands were provided, the best way to get started is to clone the repo, read through the README, and explore the app directory for Next.js routes and API handlers. Pay particular attention to how the iterative research loop is implemented and how Upstash QStash integrates into the flow.

Verdict

Open Deep Research is a solid example of applying modern agentic AI patterns to a real-world problem: automating research workflows end-to-end. It’s relevant for developers interested in AI-assisted research tools, multi-step LLM orchestrations, and building serverless full-stack apps with Next.js 16.

The project’s use of Upstash QStash for workflow orchestration and Exa for scraping shows practical integrations that are production-feasible but come with complexity and potential latency tradeoffs.

While not a turnkey product out of the box, it’s a useful reference for anyone looking to build or extend AI-driven research assistants, especially if you want to understand how to combine LLM planning, iterative tool use, and conditional logic in a scalable app architecture.

Be aware that the iterative nature means runtime can be long depending on query complexity and web scraping speed, and the approach depends on the quality of the LLM and prompt engineering. Still, the modular design makes it a good foundation for experimentation or production adaptation.


→ GitHub Repo: Nutlope/open-deep-research ⭐ 401 · TypeScript