# monanta/multiagenthotel architecture

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

- Interactive diagram: https://gitdiagram.com/monanta/multiagenthotel
- Repository: https://github.com/monanta/multiagenthotel

## Overview

Grand Horizon is a hotel customer-service chat demo: a guest sends a message, the chat view passes it to a keyword-based orchestrator, and the selected specialist supplies a reply. High-risk complaints are instead marked for Front Office escalation, where staff can reply through the same view. The tree identifies reservation, housekeeping, and billing agents, but their implementations were not sampled; their routing links are supported by the orchestrator. The Express server also exposes an optional Gemini generation endpoint, but no connection from the chat UI to that endpoint is evidenced.

Main entry points: [`src/agents/orchestratorAgent.ts`](https://github.com/monanta/multiagenthotel/blob/main/src/agents/orchestratorAgent.ts) (Message orchestrator), [`src/components/SimpleAgentView.tsx`](https://github.com/monanta/multiagenthotel/blob/main/src/components/SimpleAgentView.tsx) (Guest chat and staff desk), [`src/App.tsx`](https://github.com/monanta/multiagenthotel/blob/main/src/App.tsx) (App shell), [`src/agents/conciergeAgent.ts`](https://github.com/monanta/multiagenthotel/blob/main/src/agents/conciergeAgent.ts) (Concierge agent)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Chat interface"]
  node_chat["Guest chat and staff desk"]
  node_app["App shell<br/>[App.tsx]"]
  node_header["Hotel header<br/>[Header.tsx]"]
  node_prompts["Quick prompts<br/>[mockHotelData.ts]"]
end

subgraph group_routing["Message routing"]
  node_contracts["Hotel message types<br/>[hotel.ts]"]
  node_orchestrator["Message orchestrator"]
end

subgraph group_agents["Service agents"]
  node_concierge["Concierge agent<br/>[conciergeAgent.ts]"]
  node_reservation["Reservation agent"]
  node_housekeeping["Housekeeping agent"]
  node_billing["Billing agent<br/>[billingAgent.ts]"]
end

subgraph group_server["Server API"]
  node_server["Express API server<br/>[server.ts]"]
  node_gemini(("Google Gemini API"))
end

node_guest(("Hotel guest"))
node_staff(("Front Office staff"))

node_guest -->|"sends message"| node_chat
node_chat -->|"routes message"| node_orchestrator
node_orchestrator -->|"returns result"| node_chat
node_orchestrator -->|"calls default"| node_concierge
node_concierge -->|"returns reply"| node_orchestrator
node_orchestrator -->|"calls on booking"| node_reservation
node_reservation -->|"returns reply"| node_orchestrator
node_orchestrator -->|"calls on service"| node_housekeeping
node_housekeeping -->|"returns reply"| node_orchestrator
node_orchestrator -->|"calls on billing"| node_billing
node_billing -->|"returns reply"| node_orchestrator
node_chat -->|"reads prompts"| node_prompts
node_app -->|"renders"| node_header
node_app -->|"renders"| node_chat
node_staff -->|"replies to tickets"| node_chat
node_server -.->|"generates content"| node_gemini

click node_chat "https://github.com/monanta/multiagenthotel/blob/main/src/components/SimpleAgentView.tsx"
click node_app "https://github.com/monanta/multiagenthotel/blob/main/src/App.tsx"
click node_header "https://github.com/monanta/multiagenthotel/blob/main/src/components/Header.tsx"
click node_prompts "https://github.com/monanta/multiagenthotel/blob/main/src/data/mockHotelData.ts"
click node_contracts "https://github.com/monanta/multiagenthotel/blob/main/src/types/hotel.ts"
click node_orchestrator "https://github.com/monanta/multiagenthotel/blob/main/src/agents/orchestratorAgent.ts"
click node_concierge "https://github.com/monanta/multiagenthotel/blob/main/src/agents/conciergeAgent.ts"
click node_reservation "https://github.com/monanta/multiagenthotel/blob/main/src/agents/reservationAgent.ts"
click node_housekeeping "https://github.com/monanta/multiagenthotel/blob/main/src/agents/housekeepingAgent.ts"
click node_billing "https://github.com/monanta/multiagenthotel/blob/main/src/agents/billingAgent.ts"
click node_server "https://github.com/monanta/multiagenthotel/blob/main/server.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_chat,node_app,node_header,node_prompts toneBlue
class node_contracts,node_orchestrator toneAmber
class node_concierge,node_reservation,node_housekeeping,node_billing toneMint
class node_server,node_gemini toneRose
class node_guest,node_staff toneIndigo
```

## Components

### Chat interface

- [Guest chat and staff desk](https://github.com/monanta/multiagenthotel/blob/main/src/components/SimpleAgentView.tsx): `src/components/SimpleAgentView.tsx`
- [App shell](https://github.com/monanta/multiagenthotel/blob/main/src/App.tsx): `src/App.tsx`
- [Hotel header](https://github.com/monanta/multiagenthotel/blob/main/src/components/Header.tsx): `src/components/Header.tsx`
- [Quick prompts](https://github.com/monanta/multiagenthotel/blob/main/src/data/mockHotelData.ts): `src/data/mockHotelData.ts`

### Message routing

- [Hotel message types](https://github.com/monanta/multiagenthotel/blob/main/src/types/hotel.ts): `src/types/hotel.ts`
- [Message orchestrator](https://github.com/monanta/multiagenthotel/blob/main/src/agents/orchestratorAgent.ts): `src/agents/orchestratorAgent.ts`

### Service agents

- [Concierge agent](https://github.com/monanta/multiagenthotel/blob/main/src/agents/conciergeAgent.ts): `src/agents/conciergeAgent.ts`
- [Reservation agent](https://github.com/monanta/multiagenthotel/blob/main/src/agents/reservationAgent.ts): `src/agents/reservationAgent.ts`
- [Housekeeping agent](https://github.com/monanta/multiagenthotel/blob/main/src/agents/housekeepingAgent.ts): `src/agents/housekeepingAgent.ts`
- [Billing agent](https://github.com/monanta/multiagenthotel/blob/main/src/agents/billingAgent.ts): `src/agents/billingAgent.ts`

### Server API

- [Express API server](https://github.com/monanta/multiagenthotel/blob/main/server.ts): `server.ts`
- **Google Gemini API**

### Other components

- **Hotel guest**
- **Front Office staff**

## Connections

- Hotel guest → Guest chat and staff desk: sends message
- Guest chat and staff desk → Message orchestrator: routes message
- Message orchestrator → Guest chat and staff desk: returns result
- Message orchestrator → Concierge agent: calls default
- Concierge agent → Message orchestrator: returns reply
- Message orchestrator → Reservation agent: calls on booking
- Reservation agent → Message orchestrator: returns reply
- Message orchestrator → Housekeeping agent: calls on service
- Housekeeping agent → Message orchestrator: returns reply
- Message orchestrator → Billing agent: calls on billing
- Billing agent → Message orchestrator: returns reply
- Guest chat and staff desk → Quick prompts: reads prompts
- App shell → Hotel header: renders
- App shell → Guest chat and staff desk: renders
- Front Office staff → Guest chat and staff desk: replies to tickets
- Express API server → Google Gemini API: generates content
