# ayushguleria2005/customer-support-pipeline architecture

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

- Interactive diagram: https://gitdiagram.com/ayushguleria2005/customer-support-pipeline
- Repository: https://github.com/ayushguleria2005/customer-support-pipeline

## Overview

This repository is primarily an AI customer-support orchestrator. A query enters through the HTTP API or terminal client, is classified and routed, then retrieves policy and session-memory context; the pipeline validates context, optionally chains live support tools, and generates a response or escalates to human support. The server also persists chat history and successful turns for follow-up retrieval, and supports approval-and-resume for gated actions. The README documents these capabilities; implementation details for some nodes and tool dispatch are not included in the sampled source, so uncertain internal links are omitted.

Main entry points: [`support-orchestrator/src/runPipeline.ts`](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/runPipeline.ts) (Pipeline runner), [`support-orchestrator/src/server.ts`](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/server.ts) (HTTP API), [`support-orchestrator/src/tools/registry.ts`](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/registry.ts) (Tool registry), [`support-orchestrator/src/cli/index.ts`](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/cli/index.ts) (Terminal client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and sessions"]
  node_server["HTTP API<br/>[server.ts]"]
  node_terminal["Terminal client<br/>[index.ts]"]
end

subgraph group_orchestration["Support orchestration"]
  node_pipeline["Pipeline runner<br/>[runPipeline.ts]"]
  node_classifier["Query classifier<br/>[classifier.ts]"]
  node_router["Confidence router<br/>[router.ts]"]
  node_validator["Context validator"]
  node_generation["Response generation<br/>[generation.ts]"]
  node_response["Response formatter<br/>[response.ts]"]
  node_escalation["Escalation handler<br/>[escalation.ts]"]
end

subgraph group_knowledge["Knowledge and memory"]
  node_retrieval["Context retrieval<br/>[retrieval.ts]"]
  node_embed["Embedding helper<br/>[embed.ts]"]
  node_docs["Policy documents<br/>[docs.ts]"]
end

subgraph group_actions["Support actions"]
  node_tool_decision["Tool decision<br/>[toolDecide.ts]"]
  node_tool_call["Tool executor<br/>[toolCall.ts]"]
  node_registry["Tool registry<br/>[registry.ts]"]
  node_customer_tool["Customer lookup"]
  node_order_details["Order details<br/>[getOrderDetails.ts]"]
  node_order_status["Order status<br/>[getOrderStatus.ts]"]
  node_refund["Refund action<br/>[initiateRefund.ts]"]
end

subgraph group_persistence["State and services"]
  node_qdrant[("Qdrant collections<br/>[qdrant.ts]")]
  node_redis[("Redis client<br/>[redis.ts]")]
end

node_user(("Customer"))
node_groq{{"Groq LLM"}}
node_human(("Human support"))

node_user -->|"submits query"| node_server
node_user -->|"submits query"| node_terminal
node_server -->|"runs query"| node_pipeline
node_terminal -->|"runs query"| node_pipeline
node_server -->|"reads/writes history"| node_redis
node_terminal -->|"reads/writes history"| node_redis
node_pipeline -->|"classifies"| node_classifier
node_classifier -->|"requests inference"| node_groq
node_pipeline -->|"checks confidence"| node_router
node_pipeline -->|"escalates"| node_escalation
node_pipeline -->|"retrieves context"| node_retrieval
node_retrieval -->|"embeds query"| node_embed
node_retrieval -->|"searches collections"| node_qdrant
node_docs -.->|"indexed into"| node_qdrant
node_pipeline -->|"validates context"| node_validator
node_validator -->|"requests evaluation"| node_groq
node_pipeline -->|"decides tools"| node_tool_decision
node_tool_decision -->|"requests inference"| node_groq
node_pipeline -->|"executes tools"| node_tool_call
node_tool_call -->|"dispatches via"| node_registry
node_pipeline -->|"generates answer"| node_generation
node_generation -->|"requests generation"| node_groq
node_pipeline -->|"formats result"| node_response
node_escalation -->|"routes for support"| node_human
node_registry -->|"dispatches lookup"| node_customer_tool
node_registry -->|"dispatches lookup"| node_order_details
node_registry -->|"dispatches lookup"| node_order_status
node_registry -->|"dispatches action"| node_refund
node_server -->|"stores successful turns"| node_qdrant
node_server -->|"embeds saved turns"| node_embed
node_server -->|"resumes approval"| node_pipeline
node_server -->|"stores approval workflow"| node_redis
node_response -->|"returns answer"| node_user

click node_server "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/server.ts"
click node_terminal "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/cli/index.ts"
click node_pipeline "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/runPipeline.ts"
click node_classifier "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/classifier.ts"
click node_router "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/router.ts"
click node_retrieval "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/retrieval.ts"
click node_embed "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/embed.ts"
click node_validator "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/retrievalValidator.ts"
click node_generation "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/generation.ts"
click node_response "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/response.ts"
click node_escalation "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/escalation.ts"
click node_tool_decision "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/toolDecide.ts"
click node_tool_call "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/toolCall.ts"
click node_registry "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/registry.ts"
click node_customer_tool "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/customer/getCustomerDetails.ts"
click node_order_details "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/orders/getOrderDetails.ts"
click node_order_status "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/orders/getOrderStatus.ts"
click node_refund "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/refunds/initiateRefund.ts"
click node_docs "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/data/docs.ts"
click node_qdrant "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/qdrant.ts"
click node_redis "https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/config/redis.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_server,node_terminal toneBlue
class node_pipeline,node_classifier,node_router,node_validator,node_generation,node_response,node_escalation toneAmber
class node_retrieval,node_embed,node_docs toneMint
class node_tool_decision,node_tool_call,node_registry,node_customer_tool,node_order_details,node_order_status,node_refund toneRose
class node_qdrant,node_redis,node_user,node_groq,node_human toneIndigo
```

## Components

### Entry and sessions

- [HTTP API](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/server.ts): `support-orchestrator/src/server.ts`
- [Terminal client](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/cli/index.ts): `support-orchestrator/src/cli/index.ts`

### Support orchestration

- [Pipeline runner](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/runPipeline.ts): `support-orchestrator/src/runPipeline.ts`
- [Query classifier](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/classifier.ts): `support-orchestrator/src/nodes/classifier.ts`
- [Confidence router](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/router.ts): `support-orchestrator/src/router.ts`
- [Context validator](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/retrievalValidator.ts): `support-orchestrator/src/nodes/retrievalValidator.ts`
- [Response generation](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/generation.ts): `support-orchestrator/src/nodes/generation.ts`
- [Response formatter](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/response.ts): `support-orchestrator/src/nodes/response.ts`
- [Escalation handler](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/escalation.ts): `support-orchestrator/src/nodes/escalation.ts`

### Knowledge and memory

- [Context retrieval](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/retrieval.ts): `support-orchestrator/src/nodes/retrieval.ts`
- [Embedding helper](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/embed.ts): `support-orchestrator/src/embed.ts`
- [Policy documents](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/data/docs.ts): `support-orchestrator/src/data/docs.ts`

### Support actions

- [Tool decision](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/toolDecide.ts): `support-orchestrator/src/nodes/toolDecide.ts`
- [Tool executor](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/nodes/toolCall.ts): `support-orchestrator/src/nodes/toolCall.ts`
- [Tool registry](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/registry.ts): `support-orchestrator/src/tools/registry.ts`
- [Customer lookup](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/customer/getCustomerDetails.ts): `support-orchestrator/src/tools/customer/getCustomerDetails.ts`
- [Order details](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/orders/getOrderDetails.ts): `support-orchestrator/src/tools/orders/getOrderDetails.ts`
- [Order status](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/orders/getOrderStatus.ts): `support-orchestrator/src/tools/orders/getOrderStatus.ts`
- [Refund action](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/tools/refunds/initiateRefund.ts): `support-orchestrator/src/tools/refunds/initiateRefund.ts`

### State and services

- [Qdrant collections](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/qdrant.ts): `support-orchestrator/src/qdrant.ts`
- [Redis client](https://github.com/ayushguleria2005/customer-support-pipeline/blob/main/support-orchestrator/src/config/redis.ts): `support-orchestrator/src/config/redis.ts`

### Other components

- **Customer**
- **Groq LLM**
- **Human support**

## Connections

- Customer → HTTP API: submits query
- Customer → Terminal client: submits query
- HTTP API → Pipeline runner: runs query
- Terminal client → Pipeline runner: runs query
- HTTP API → Redis client: reads/writes history
- Terminal client → Redis client: reads/writes history
- Pipeline runner → Query classifier: classifies
- Query classifier → Groq LLM: requests inference
- Pipeline runner → Confidence router: checks confidence
- Pipeline runner → Escalation handler: escalates
- Pipeline runner → Context retrieval: retrieves context
- Context retrieval → Embedding helper: embeds query
- Context retrieval → Qdrant collections: searches collections
- Policy documents → Qdrant collections: indexed into
- Pipeline runner → Context validator: validates context
- Context validator → Groq LLM: requests evaluation
- Pipeline runner → Tool decision: decides tools
- Tool decision → Groq LLM: requests inference
- Pipeline runner → Tool executor: executes tools
- Tool executor → Tool registry: dispatches via
- Pipeline runner → Response generation: generates answer
- Response generation → Groq LLM: requests generation
- Pipeline runner → Response formatter: formats result
- Escalation handler → Human support: routes for support
- Tool registry → Customer lookup: dispatches lookup
- Tool registry → Order details: dispatches lookup
- Tool registry → Order status: dispatches lookup
- Tool registry → Refund action: dispatches action
- HTTP API → Qdrant collections: stores successful turns
- HTTP API → Embedding helper: embeds saved turns
- HTTP API → Pipeline runner: resumes approval
- HTTP API → Redis client: stores approval workflow
- Response formatter → Customer: returns answer
