# kasamshaikh/agentic-customer-email-response architecture

> Architecture diagram of the GitHub repository kasamshaikh/agentic-customer-email-response, 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/kasamshaikh/agentic-customer-email-response
- Repository: https://github.com/kasamshaikh/agentic-customer-email-response

## Overview

Customer Mail Agent is a human-reviewed email triage and reply application. A customer submits an email through the console; the API stores it and invokes the reasoning pipeline, which classifies the request, retrieves FAQ passages, and drafts a reply. A reviewer can request revisions or approve and edit the final text; approval writes a sent-email artifact and audit record. Separate bootstrap code uploads the FAQ corpus and provisions its search index and optional hosted agent. Runtime wiring is based on sampled source; console interactions and broader capabilities are described in the README.

Main entry points: [`app/main.py`](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/main.py) (FastAPI endpoints), [`bootstrap/bootstrap.py`](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/bootstrap.py) (Knowledge bootstrap), [`app/agent_client.py`](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/agent_client.py) (Agent client), [`app/static/index.html`](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/static/index.html) (Web console)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Mail workflow"]
  node_console["Web console<br/>[index.html]"]
  node_api["FastAPI endpoints<br/>[main.py]"]
  node_request_models["Request models<br/>[models.py]"]
end

subgraph group_reasoning["Grounding and reasoning"]
  node_agent_client["Agent client<br/>[agent_client.py]"]
  node_search[("AI Search")]
  node_foundry["Foundry models"]
  node_hosted_agent["Hosted agent"]
end

subgraph group_records["Mail records"]
  node_storage_module["Blob access<br/>[storage.py]"]
  node_mail_containers[("Mail containers")]
end

subgraph group_knowledge["Knowledge setup"]
  node_bootstrap["Knowledge bootstrap<br/>[bootstrap.py]"]
  node_knowledge_files["FAQ corpus"]
  node_search_builder["Search index builder<br/>[search_index.py]"]
  node_agent_setup["Hosted agent setup<br/>[agent_setup.py]"]
  node_knowledge_blob[("Knowledge blob container")]
end

node_customer(("Customer"))
node_reviewer(("Human reviewer"))

node_customer -->|"submits email"| node_console
node_console -->|"calls endpoints"| node_api
node_api -->|"validates requests"| node_request_models
node_api -->|"stores and reads"| node_storage_module
node_api -->|"runs or redrafts"| node_agent_client
node_api -->|"returns results"| node_console
node_reviewer -->|"reviews and approves"| node_console
node_agent_client -->|"queries FAQ index"| node_search
node_agent_client -->|"requests draft"| node_foundry
node_agent_client -.->|"invokes optionally"| node_hosted_agent
node_hosted_agent -.->|"uses search tool"| node_search
node_storage_module -->|"reads and writes"| node_mail_containers
node_bootstrap -->|"loads FAQ files"| node_knowledge_files
node_bootstrap -->|"uploads corpus"| node_knowledge_blob
node_bootstrap -->|"builds index"| node_search_builder
node_search_builder -->|"indexes blob content"| node_knowledge_blob
node_search_builder -->|"creates and populates"| node_search
node_bootstrap -->|"creates optionally"| node_agent_setup
node_agent_setup -.->|"provisions agent"| node_hosted_agent
node_agent_setup -.->|"configures connection"| node_search

click node_console "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/static/index.html"
click node_api "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/main.py"
click node_request_models "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/models.py"
click node_agent_client "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/agent_client.py"
click node_storage_module "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/storage.py"
click node_bootstrap "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/bootstrap.py"
click node_knowledge_files "https://github.com/kasamshaikh/agentic-customer-email-response/tree/main/knowledge/snapshot"
click node_search_builder "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/search_index.py"
click node_agent_setup "https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/agent_setup.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_console,node_api,node_request_models,node_reviewer toneBlue
class node_agent_client,node_search,node_foundry,node_hosted_agent toneAmber
class node_storage_module,node_mail_containers toneMint
class node_bootstrap,node_knowledge_files,node_search_builder,node_agent_setup,node_knowledge_blob toneRose
class node_customer toneIndigo
```

## Components

### Mail workflow

- [Web console](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/static/index.html): `app/static/index.html`
- [FastAPI endpoints](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/main.py): `app/main.py`
- [Request models](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/models.py): `app/models.py`

### Grounding and reasoning

- [Agent client](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/agent_client.py): `app/agent_client.py`
- **AI Search**
- **Foundry models**
- **Hosted agent**

### Mail records

- [Blob access](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/app/storage.py): `app/storage.py`
- **Mail containers**

### Knowledge setup

- [Knowledge bootstrap](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/bootstrap.py): `bootstrap/bootstrap.py`
- [FAQ corpus](https://github.com/kasamshaikh/agentic-customer-email-response/tree/main/knowledge/snapshot): `knowledge/snapshot`
- [Search index builder](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/search_index.py): `bootstrap/search_index.py`
- [Hosted agent setup](https://github.com/kasamshaikh/agentic-customer-email-response/blob/main/bootstrap/agent_setup.py): `bootstrap/agent_setup.py`
- **Knowledge blob container**

### Other components

- **Customer**
- **Human reviewer**

## Connections

- Customer → Web console: submits email
- Web console → FastAPI endpoints: calls endpoints
- FastAPI endpoints → Request models: validates requests
- FastAPI endpoints → Blob access: stores and reads
- FastAPI endpoints → Agent client: runs or redrafts
- FastAPI endpoints → Web console: returns results
- Human reviewer → Web console: reviews and approves
- Agent client → AI Search: queries FAQ index
- Agent client → Foundry models: requests draft
- Agent client → Hosted agent: invokes optionally
- Hosted agent → AI Search: uses search tool
- Blob access → Mail containers: reads and writes
- Knowledge bootstrap → FAQ corpus: loads FAQ files
- Knowledge bootstrap → Knowledge blob container: uploads corpus
- Knowledge bootstrap → Search index builder: builds index
- Search index builder → Knowledge blob container: indexes blob content
- Search index builder → AI Search: creates and populates
- Knowledge bootstrap → Hosted agent setup: creates optionally
- Hosted agent setup → Hosted agent: provisions agent
- Hosted agent setup → AI Search: configures connection
