LangGraph Research Assistant

Multi-Agent AI Research System · LangGraph + FastAPI + React · Railway + Vercel

About the Project

A fully deployed multi-agent research assistant built with LangGraph. The user enters a research topic, configures analyst settings, reviews AI-generated analyst personas, approves them, and then watches the graph execute a complete research workflow.

The system conducts parallel, search-backed analyst interviews and synthesises the results into a structured markdown research report. The architecture demonstrates nested graphs, human-in-the-loop checkpointing, fan-out / fan-in parallel execution, and real-time streaming of subgraph progress to the frontend.

LangGraph
LangChain
FastAPI
React
Docker
Railway
Vercel
DeepSeek
Nested
Graph Architecture
Outer orchestration + reusable interview subgraphs
Human
In-the-Loop
interrupt_before checkpoint with resume from SQLite
Send()
Parallel Execution
Fan-out N analyst interviews with LangGraph Send API

Graph Execution Flow

outer
create_analysts

Generate analyst personas with structured Pydantic output

outer
human_feedback

Pause for approval — user reviews or regenerates analysts

checkpoint
outer
conduct_interview × N

Fan-out via Send() — one subgraph per analyst in parallel

inner
ask_question

Analyst generates a question for the expert

inner
search_web + search_exa

Parallel Tavily + Exa retrieval to build answer context

inner
answer_question

Expert answers using retrieved context

inner
route_messages

Loop or stop based on turn count / sign-off

inner
write_section

Analyst writes a section memo from the full transcript

outer
write_report / intro / conclusion

Parallel synthesis nodes assemble the final report

outer
finalize_report

Single markdown report delivered to frontend

Key Features

Nested Graph Architecture

Outer orchestration graph manages the full pipeline while reusable interview subgraphs run one analyst workflow each — clean separation of concerns at every level.

Human-in-the-Loop Approval

LangGraph's interrupt_before pauses execution at the analyst review step. The user can approve or give feedback to regenerate personas before any expensive work begins.

Parallel Analyst Interviews

LangGraph's Send() API fans out one interview subgraph per analyst simultaneously. Each runs independently with its own state, reducing total research time significantly.

Dual Retrieval: Tavily + Exa

Each analyst interview uses both Tavily for broad keyword-based web search and Exa for semantic highlight retrieval — giving richer, more accurate source context.

SQLite Checkpointing

LangGraph state is persisted with SqliteSaver at every step. Sessions survive server restarts and page refreshes, and the graph resumes exactly where it paused.

Streamed Graph Progress

Backend streams LangGraph updates with stream_mode='updates' including nested subgraph events. The frontend shows live node activity down to search_web and write_section.

Full Tech Stack

LangGraph
Multi-agent graph orchestration
LangChain
LLM integration & tooling
FastAPI
Python REST backend
React + Vite
Frontend SPA
Docker
Containerised backend
Railway
Backend deployment
Vercel
Frontend deployment
DeepSeek
LLM via LangChain
Tavily
Web search API
Exa
Semantic search API
SQLite
Checkpoint persistence
Pydantic
Structured output & validation

Try it Live

Enter a research topic and watch a multi-agent graph build a full report in real time

© 2026 Tony Ye. All rights reserved.