# neel-turbo/multi-agent-langraph-rag-finance-app architecture

> Architecture diagram of the GitHub repository neel-turbo/multi-agent-langraph-rag-finance-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/neel-turbo/multi-agent-langraph-rag-finance-app
- Repository: https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app

## Overview

Finance Agents is an educational finance assistant combining a React chat and portfolio UI with a LangGraph supervisor, specialist tools, live market data, and PDF-grounded answers. The main workflow is user question → planning → specialist research → review/follow-up → synthesized response; separate UI requests serve market snapshots and Zerodha holdings. The README documents the six-agent and conversation-memory capabilities, but their full wiring is not visible in the excerpts, so only documented relationships are shown. Ingestion and provider links reflect sampled source and README evidence.

Main entry points: [`src/server/graph/supervisorGraph.ts`](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts) (Six specialists), [`src/server/api/server.ts`](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/api/server.ts) (Market API), [`src/server/rag/ingest.ts`](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/ingest.ts) (PDF ingestion), [`src/server/tools/ragTool.ts`](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/ragTool.ts) (RAG search tool)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_app["App and screens<br/>[App.tsx]"]
  node_chat["Chat interface<br/>[ChatScreen.tsx]"]
  node_portfolio_ui["Portfolio view"]
  node_market_ui["Market displays<br/>[MarketMarquee.tsx]"]
  node_graph_hook["Chat connection<br/>[langgraph.ts]"]
  node_market_hook["Market snapshot hook"]
  node_portfolio_hook["Portfolio data hooks<br/>[usePortfolio.ts]"]
end

subgraph group_orchestration["Agent orchestration"]
  node_supervisor["Supervisor graph<br/>[supervisorGraph.ts]"]
  node_planner["Plan tasks<br/>[supervisorGraph.ts]"]
  node_specialists["Six specialists<br/>[supervisorGraph.ts]"]
  node_review["Review findings<br/>[supervisorGraph.ts]"]
  node_synthesis["Synthesize answer<br/>[supervisorGraph.ts]"]
  node_models["Model selection<br/>[models.ts]"]
end

subgraph group_knowledge["Knowledge and research"]
  node_tools_market["Market tools<br/>[marketTools.ts]"]
  node_tools_calc["Finance calculators<br/>[calcTools.ts]"]
  node_tools_search["News and web search<br/>[searchTools.ts]"]
  node_rag_tool["RAG search tool<br/>[ragTool.ts]"]
  node_ingestion["PDF ingestion<br/>[ingest.ts]"]
  node_embedder["Local embeddings<br/>[embedder.ts]"]
  node_chunker["Document chunking<br/>[chunk.ts]"]
  node_chroma[("Chroma knowledge index")]
end

subgraph group_market["Market and portfolio data"]
  node_api["Market API<br/>[server.ts]"]
  node_market_service["Snapshot service<br/>[service.ts]"]
  node_watchlists["Market watchlists<br/>[watchlists.ts]"]
  node_market_providers["Quote providers<br/>[types.ts]"]
  node_kite["Kite portfolio adapter<br/>[kite.ts]"]
end

subgraph group_integrations["External services"]
  node_documents["PDF files"]
  node_llm["LLM providers"]
  node_tavily["Tavily search"]
  node_market_data["Market data services"]
  node_zerodha["Zerodha Kite"]
  node_langgraph_server["LangGraph server"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"shows chat"| node_chat
node_app -->|"shows portfolio"| node_portfolio_ui
node_chat -->|"submits chat"| node_graph_hook
node_graph_hook -->|"streams requests"| node_langgraph_server
node_langgraph_server -->|"runs graph"| node_supervisor
node_supervisor -->|"plans"| node_planner
node_planner -->|"invokes planner"| node_models
node_planner -->|"dispatches tasks"| node_specialists
node_specialists -->|"returns findings"| node_review
node_review -->|"dispatches follow-ups"| node_specialists
node_review -->|"approves findings"| node_synthesis
node_synthesis -->|"invokes model"| node_models
node_models -.->|"calls model"| node_llm
node_specialists -->|"uses tools"| node_tools_market
node_specialists -->|"uses tools"| node_tools_calc
node_specialists -->|"uses tool"| node_rag_tool
node_specialists -->|"uses tools"| node_tools_search
node_rag_tool -->|"embeds query"| node_embedder
node_rag_tool -->|"searches passages"| node_chroma
node_rag_tool -.->|"falls back"| node_tools_search
node_tools_search -.->|"searches web"| node_tavily
node_ingestion -->|"parses PDFs"| node_documents
node_ingestion -->|"chunks text"| node_chunker
node_ingestion -->|"embeds passages"| node_embedder
node_ingestion -->|"writes chunks"| node_chroma
node_specialists -->|"loads holdings"| node_kite
node_tools_market -->|"gets snapshots"| node_market_service
node_market_service -->|"reads symbols"| node_watchlists
node_market_service -->|"requests quotes"| node_market_providers
node_market_providers -->|"fetches prices"| node_market_data
node_chat -->|"shows market data"| node_market_hook
node_market_ui -->|"reads snapshot"| node_market_hook
node_market_hook -->|"requests snapshot"| node_api
node_portfolio_ui -->|"loads holdings"| node_portfolio_hook
node_portfolio_hook -->|"requests data"| node_api
node_api -->|"gets snapshot"| node_market_service
node_api -->|"gets holdings"| node_kite
node_api -->|"gets price history"| node_market_providers
node_kite -.->|"fetches holdings"| node_zerodha
node_market_providers -->|"gets history"| node_market_data

click node_app "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/App.tsx"
click node_chat "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/ChatScreen.tsx"
click node_portfolio_ui "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/PortfolioScreen.tsx"
click node_market_ui "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/MarketMarquee.tsx"
click node_graph_hook "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/langgraph.ts"
click node_market_hook "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/useMarketSnapshot.ts"
click node_portfolio_hook "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/usePortfolio.ts"
click node_supervisor "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts"
click node_planner "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts"
click node_specialists "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts"
click node_review "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts"
click node_synthesis "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts"
click node_models "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/models.ts"
click node_tools_market "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/marketTools.ts"
click node_tools_calc "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/calcTools.ts"
click node_tools_search "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/searchTools.ts"
click node_rag_tool "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/ragTool.ts"
click node_ingestion "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/ingest.ts"
click node_embedder "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/embedder.ts"
click node_chunker "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/chunk.ts"
click node_api "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/api/server.ts"
click node_market_service "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/service.ts"
click node_watchlists "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/watchlists.ts"
click node_market_providers "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/providers/types.ts"
click node_kite "https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/portfolio/kite.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_chat,node_portfolio_ui,node_market_ui,node_graph_hook,node_market_hook,node_portfolio_hook,node_user toneBlue
class node_supervisor,node_planner,node_specialists,node_review,node_synthesis,node_models toneAmber
class node_tools_market,node_tools_calc,node_tools_search,node_rag_tool,node_ingestion,node_embedder,node_chunker,node_chroma toneMint
class node_api,node_market_service,node_watchlists,node_market_providers,node_kite toneRose
class node_documents,node_llm,node_tavily,node_market_data,node_zerodha,node_langgraph_server toneIndigo
```

## Components

### User experience

- [App and screens](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/App.tsx): `src/App.tsx`
- [Chat interface](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/ChatScreen.tsx): `src/components/ChatScreen.tsx`
- [Portfolio view](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/PortfolioScreen.tsx): `src/components/PortfolioScreen.tsx`
- [Market displays](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/components/MarketMarquee.tsx): `src/components/MarketMarquee.tsx`
- [Chat connection](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/langgraph.ts): `src/hooks/langgraph.ts`
- [Market snapshot hook](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/useMarketSnapshot.ts): `src/hooks/useMarketSnapshot.ts`
- [Portfolio data hooks](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/hooks/usePortfolio.ts): `src/hooks/usePortfolio.ts`

### Agent orchestration

- [Supervisor graph](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts): `src/server/graph/supervisorGraph.ts`
- [Plan tasks](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts): `src/server/graph/supervisorGraph.ts`
- [Six specialists](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts): `src/server/graph/supervisorGraph.ts`
- [Review findings](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts): `src/server/graph/supervisorGraph.ts`
- [Synthesize answer](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/supervisorGraph.ts): `src/server/graph/supervisorGraph.ts`
- [Model selection](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/graph/models.ts): `src/server/graph/models.ts`

### Knowledge and research

- [Market tools](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/marketTools.ts): `src/server/tools/marketTools.ts`
- [Finance calculators](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/calcTools.ts): `src/server/tools/calcTools.ts`
- [News and web search](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/searchTools.ts): `src/server/tools/searchTools.ts`
- [RAG search tool](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/tools/ragTool.ts): `src/server/tools/ragTool.ts`
- [PDF ingestion](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/ingest.ts): `src/server/rag/ingest.ts`
- [Local embeddings](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/embedder.ts): `src/server/rag/embedder.ts`
- [Document chunking](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/rag/chunk.ts): `src/server/rag/chunk.ts`
- **Chroma knowledge index**

### Market and portfolio data

- [Market API](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/api/server.ts): `src/server/api/server.ts`
- [Snapshot service](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/service.ts): `src/server/market/service.ts`
- [Market watchlists](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/watchlists.ts): `src/server/market/watchlists.ts`
- [Quote providers](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/market/providers/types.ts): `src/server/market/providers/types.ts`
- [Kite portfolio adapter](https://github.com/neel-turbo/multi-agent-langraph-rag-finance-app/blob/main/src/server/portfolio/kite.ts): `src/server/portfolio/kite.ts`

### External services

- **PDF files**
- **LLM providers**
- **Tavily search**
- **Market data services**
- **Zerodha Kite**
- **LangGraph server**

### Other components

- **User**

## Connections

- User → App and screens: uses
- App and screens → Chat interface: shows chat
- App and screens → Portfolio view: shows portfolio
- Chat interface → Chat connection: submits chat
- Chat connection → LangGraph server: streams requests
- LangGraph server → Supervisor graph: runs graph
- Supervisor graph → Plan tasks: plans
- Plan tasks → Model selection: invokes planner
- Plan tasks → Six specialists: dispatches tasks
- Six specialists → Review findings: returns findings
- Review findings → Six specialists: dispatches follow-ups
- Review findings → Synthesize answer: approves findings
- Synthesize answer → Model selection: invokes model
- Model selection → LLM providers: calls model
- Six specialists → Market tools: uses tools
- Six specialists → Finance calculators: uses tools
- Six specialists → RAG search tool: uses tool
- Six specialists → News and web search: uses tools
- RAG search tool → Local embeddings: embeds query
- RAG search tool → Chroma knowledge index: searches passages
- RAG search tool → News and web search: falls back
- News and web search → Tavily search: searches web
- PDF ingestion → PDF files: parses PDFs
- PDF ingestion → Document chunking: chunks text
- PDF ingestion → Local embeddings: embeds passages
- PDF ingestion → Chroma knowledge index: writes chunks
- Six specialists → Kite portfolio adapter: loads holdings
- Market tools → Snapshot service: gets snapshots
- Snapshot service → Market watchlists: reads symbols
- Snapshot service → Quote providers: requests quotes
- Quote providers → Market data services: fetches prices
- Chat interface → Market snapshot hook: shows market data
- Market displays → Market snapshot hook: reads snapshot
- Market snapshot hook → Market API: requests snapshot
- Portfolio view → Portfolio data hooks: loads holdings
- Portfolio data hooks → Market API: requests data
- Market API → Snapshot service: gets snapshot
- Market API → Kite portfolio adapter: gets holdings
- Market API → Quote providers: gets price history
- Kite portfolio adapter → Zerodha Kite: fetches holdings
- Quote providers → Market data services: gets history
