# nagasai60150/data-analytics-agent architecture

> Architecture diagram of the GitHub repository nagasai60150/data-analytics-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nagasai60150/data-analytics-agent
- Repository: https://github.com/nagasai60150/data-analytics-agent

## Overview

This repository implements a tabular-data analytics agent: a user supplies a CSV and question, the graph inspects the dataset, plans Python analysis, executes it, and turns the evidence into a natural-language answer. The graph’s four-stage order is explicit in build_graph.py; sampled prompts describe the planner’s E2B execution contract and evidence-grounded interpretation. Several node implementations and the executor are not sampled, so their internal calls and optional integrations are not detailed.

Main entry points: [`backend/scr/agent/node/analysis_planner_node.py`](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/analysis_planner_node.py) (Analysis planner), [`backend/scr/agent/node/result_interpreter_node.py`](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/result_interpreter_node.py) (Result interpreter), [`backend/scr/agent/node/data_inspector_node.py`](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/data_inspector_node.py) (Dataset inspector), [`backend/scr/agent/node/plan_executor_node.py`](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/plan_executor_node.py) (Plan executor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Analysis workflow"]
  node_graph["Workflow graph<br/>[build_graph.py]"]
  node_inspector["Dataset inspector"]
  node_planner["Analysis planner"]
  node_executor_node["Plan executor"]
  node_interpreter["Result interpreter"]
end

subgraph group_context["Evidence preparation"]
  node_dataset_context["Dataset context"]
  node_execution_context["Execution context"]
  node_normalizer["Result normalizer"]
end

subgraph group_models["Language models"]
  node_analysis_prompt["Analysis prompt<br/>[analysis_prompt.py]"]
  node_interpreter_prompt["Answer prompt"]
  node_llm["Chat model<br/>[llm.py]"]
end

subgraph group_execution["Code execution"]
  node_code_executor["Python executor<br/>[code_executor.py]"]
  node_e2b["E2B runtime"]
end

node_user(("User"))
node_csv["CSV dataset"]
node_answer["Answer"]

node_user -->|"submits question"| node_graph
node_csv -->|"provides dataset path"| node_graph
node_graph -->|"starts workflow"| node_inspector
node_inspector -->|"next stage"| node_planner
node_planner -->|"next stage"| node_executor_node
node_executor_node -->|"next stage"| node_interpreter
node_interpreter -->|"produces answer"| node_answer
node_planner -->|"delegates execution"| node_code_executor
node_executor_node -->|"executes code"| node_code_executor
node_code_executor -.->|"runs Python"| node_e2b
node_inspector -->|"formats metadata"| node_dataset_context
node_planner -->|"builds prompt"| node_analysis_prompt
node_analysis_prompt -->|"guides generation"| node_llm
node_interpreter -->|"formats evidence"| node_execution_context
node_execution_context -->|"uses normalized result"| node_normalizer
node_interpreter -->|"builds prompt"| node_interpreter_prompt
node_interpreter_prompt -->|"guides answer"| node_llm

click node_graph "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/graph/build_graph.py"
click node_inspector "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/data_inspector_node.py"
click node_planner "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/analysis_planner_node.py"
click node_executor_node "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/plan_executor_node.py"
click node_interpreter "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/result_interpreter_node.py"
click node_dataset_context "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/dataset_context_builder.py"
click node_execution_context "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/execution_context_builder.py"
click node_normalizer "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/result_normalizer.py"
click node_analysis_prompt "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/prompts/analysis_prompt.py"
click node_interpreter_prompt "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/prompts/result_interpreter_prompt.py"
click node_llm "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/service/llm.py"
click node_code_executor "https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/code_executor.py"

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_graph,node_inspector,node_planner,node_executor_node,node_interpreter,node_user toneBlue
class node_dataset_context,node_execution_context,node_normalizer toneAmber
class node_analysis_prompt,node_interpreter_prompt,node_llm toneMint
class node_code_executor,node_e2b toneRose
class node_csv,node_answer toneIndigo
```

## Components

### Analysis workflow

- [Workflow graph](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/graph/build_graph.py): `backend/scr/agent/graph/build_graph.py`
- [Dataset inspector](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/data_inspector_node.py): `backend/scr/agent/node/data_inspector_node.py`
- [Analysis planner](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/analysis_planner_node.py): `backend/scr/agent/node/analysis_planner_node.py`
- [Plan executor](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/plan_executor_node.py): `backend/scr/agent/node/plan_executor_node.py`
- [Result interpreter](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/node/result_interpreter_node.py): `backend/scr/agent/node/result_interpreter_node.py`

### Evidence preparation

- [Dataset context](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/dataset_context_builder.py): `backend/scr/agent/tools/dataset_context_builder.py`
- [Execution context](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/execution_context_builder.py): `backend/scr/agent/tools/execution_context_builder.py`
- [Result normalizer](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/result_normalizer.py): `backend/scr/agent/tools/result_normalizer.py`

### Language models

- [Analysis prompt](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/prompts/analysis_prompt.py): `backend/scr/agent/prompts/analysis_prompt.py`
- [Answer prompt](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/prompts/result_interpreter_prompt.py): `backend/scr/agent/prompts/result_interpreter_prompt.py`
- [Chat model](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/service/llm.py): `backend/scr/agent/service/llm.py`

### Code execution

- [Python executor](https://github.com/nagasai60150/data-analytics-agent/blob/main/backend/scr/agent/tools/code_executor.py): `backend/scr/agent/tools/code_executor.py`
- **E2B runtime**

### Other components

- **User**
- **CSV dataset**
- **Answer**

## Connections

- User → Workflow graph: submits question
- CSV dataset → Workflow graph: provides dataset path
- Workflow graph → Dataset inspector: starts workflow
- Dataset inspector → Analysis planner: next stage
- Analysis planner → Plan executor: next stage
- Plan executor → Result interpreter: next stage
- Result interpreter → Answer: produces answer
- Analysis planner → Python executor: delegates execution
- Plan executor → Python executor: executes code
- Python executor → E2B runtime: runs Python
- Dataset inspector → Dataset context: formats metadata
- Analysis planner → Analysis prompt: builds prompt
- Analysis prompt → Chat model: guides generation
- Result interpreter → Execution context: formats evidence
- Execution context → Result normalizer: uses normalized result
- Result interpreter → Answer prompt: builds prompt
- Answer prompt → Chat model: guides answer
