# jatinmourya24932/satquery_ai architecture

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

- Interactive diagram: https://gitdiagram.com/jatinmourya24932/satquery_ai
- Repository: https://github.com/jatinmourya24932/satquery_ai

## Overview

SatQuery AI is a Streamlit assistant for querying satellite imagery. Users provide one or two images and a natural-language question; the app hands the request to an orchestrator that validates inputs, classifies the task, runs a specialist analysis, combines results, and presents evidence, confidence, metrics, and an execution trace. Its documented specialist branches include VQA, captioning, region grounding, bi-temporal change detection, and optical–SAR analysis. The excerpts show the orchestration and output paths, but not all fusion or UI wiring; those uncertain links are omitted.

Main entry points: [`src/agent/orchestrator.py`](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/agent/orchestrator.py) (Analysis orchestrator), [`app.py`](https://github.com/jatinmourya24932/satquery_ai/blob/main/app.py) (Streamlit app), [`src/ui/components.py`](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/ui/components.py) (Output components), [`src/analysis/single_image.py`](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/single_image.py) (Single-image analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_app["Streamlit app<br/>[app.py]"]
  node_ui_components["Output components<br/>[components.py]"]
end

subgraph group_orchestration["Orchestration"]
  node_orchestrator["Analysis orchestrator<br/>[orchestrator.py]"]
  node_validation["Input validation<br/>[validation.py]"]
  node_classifier["Task classifier<br/>[task_classifier.py]"]
end

subgraph group_analysis["Specialist analysis"]
  node_single_analysis["Single-image analysis<br/>[single_image.py]"]
  node_change_detection["Change detection"]
  node_optical_sar["Optical–SAR analysis<br/>[optical_sar.py]"]
  node_fusion["Result fusion<br/>[fusion.py]"]
end

subgraph group_models["Model runtime"]
  node_vlm["RS vision-language model<br/>[vlm_wrapper.py]"]
end

subgraph group_outputs["Evidence and reports"]
  node_visualization["Evidence visualization<br/>[visualization.py]"]
  node_geotiff_utils["GeoTIFF utilities<br/>[geotiff_utils.py]"]
  node_reports["Report generation"]
end

node_user(("Image analyst"))

node_user -->|"submits images and query"| node_app
node_app -->|"requests analysis"| node_orchestrator
node_orchestrator -->|"validates inputs"| node_validation
node_orchestrator -->|"classifies task"| node_classifier
node_orchestrator -->|"runs single-image task"| node_single_analysis
node_orchestrator -->|"runs temporal analysis"| node_change_detection
node_orchestrator -->|"runs cross-modal analysis"| node_optical_sar
node_single_analysis -->|"requests model analysis"| node_vlm
node_orchestrator -->|"fuses results"| node_fusion
node_orchestrator -->|"prepares evidence"| node_visualization
node_orchestrator -->|"returns analysis result"| node_app
node_app -->|"renders output"| node_ui_components
node_ui_components -->|"generates downloads"| node_reports
node_reports -->|"exports GeoTIFF"| node_geotiff_utils

click node_app "https://github.com/jatinmourya24932/satquery_ai/blob/main/app.py"
click node_ui_components "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/ui/components.py"
click node_orchestrator "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/agent/orchestrator.py"
click node_validation "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/validation.py"
click node_classifier "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/agent/task_classifier.py"
click node_single_analysis "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/single_image.py"
click node_change_detection "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/change_detection.py"
click node_optical_sar "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/optical_sar.py"
click node_fusion "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/fusion.py"
click node_vlm "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/models/vlm_wrapper.py"
click node_visualization "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/visualization.py"
click node_geotiff_utils "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/geotiff_utils.py"
click node_reports "https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/report_generation.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_app,node_ui_components toneBlue
class node_orchestrator,node_validation,node_classifier toneAmber
class node_single_analysis,node_change_detection,node_optical_sar,node_fusion toneMint
class node_vlm toneRose
class node_visualization,node_geotiff_utils,node_reports,node_user toneIndigo
```

## Components

### User interface

- [Streamlit app](https://github.com/jatinmourya24932/satquery_ai/blob/main/app.py): `app.py`
- [Output components](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/ui/components.py): `src/ui/components.py`

### Orchestration

- [Analysis orchestrator](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/agent/orchestrator.py): `src/agent/orchestrator.py`
- [Input validation](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/validation.py): `src/utils/validation.py`
- [Task classifier](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/agent/task_classifier.py): `src/agent/task_classifier.py`

### Specialist analysis

- [Single-image analysis](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/single_image.py): `src/analysis/single_image.py`
- [Change detection](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/change_detection.py): `src/analysis/change_detection.py`
- [Optical–SAR analysis](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/optical_sar.py): `src/analysis/optical_sar.py`
- [Result fusion](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/analysis/fusion.py): `src/analysis/fusion.py`

### Model runtime

- [RS vision-language model](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/models/vlm_wrapper.py): `src/models/vlm_wrapper.py`

### Evidence and reports

- [Evidence visualization](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/visualization.py): `src/utils/visualization.py`
- [GeoTIFF utilities](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/geotiff_utils.py): `src/utils/geotiff_utils.py`
- [Report generation](https://github.com/jatinmourya24932/satquery_ai/blob/main/src/utils/report_generation.py): `src/utils/report_generation.py`

### Other components

- **Image analyst**

## Connections

- Image analyst → Streamlit app: submits images and query
- Streamlit app → Analysis orchestrator: requests analysis
- Analysis orchestrator → Input validation: validates inputs
- Analysis orchestrator → Task classifier: classifies task
- Analysis orchestrator → Single-image analysis: runs single-image task
- Analysis orchestrator → Change detection: runs temporal analysis
- Analysis orchestrator → Optical–SAR analysis: runs cross-modal analysis
- Single-image analysis → RS vision-language model: requests model analysis
- Analysis orchestrator → Result fusion: fuses results
- Analysis orchestrator → Evidence visualization: prepares evidence
- Analysis orchestrator → Streamlit app: returns analysis result
- Streamlit app → Output components: renders output
- Output components → Report generation: generates downloads
- Report generation → GeoTIFF utilities: exports GeoTIFF
