# bhavygandhi125273-sketch/resolveit-ai-incident-intelligence architecture

> Architecture diagram of the GitHub repository bhavygandhi125273-sketch/resolveit-ai-incident-intelligence, 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/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence
- Repository: https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence
- Video tour (about a minute): https://gitdiagram.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/video

## Overview

ResolveIT is an incident-reporting and IT-service workflow application, with employee and IT-admin access plus a Vapi-powered phone intake channel. Its main flow accepts a report, investigates it, selects a resolution, ticket, or escalation outcome, and records the incident for follow-up. The tree also shows incident dashboards, filtering, and IT actions. Source excerpts confirm API, service, decision, persistence, authentication, and phone-webhook behavior; several UI, workflow, voice, and integration implementations were not sampled, so their internal wiring is not expanded.

Main entry points: [`resolveit/src/features/incidents/service.ts`](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/service.ts) (Incident service), [`resolveit/src/server/incidents/workflow.ts`](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/incidents/workflow.ts) (Incident workflow), [`resolveit/src/app/api/incidents/route.ts`](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/incidents/route.ts) (Incident API), [`resolveit/src/app/api/vapi/webhook/route.ts`](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/vapi/webhook/route.ts) (Vapi webhook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["User access"]
  node_login_ui["Login form<br/>[LoginForm.tsx]"]
  node_login_api["Login endpoint<br/>[route.ts]"]
  node_sessions["Session auth<br/>[session.ts]"]
end

subgraph group_intake["Incident intake"]
  node_incident_ui["Incident reporting"]
  node_incident_api["Incident API<br/>[route.ts]"]
  node_incident_http["Incident HTTP handlers<br/>[http.ts]"]
  node_voice_ui["Voice report panel"]
  node_voice_webhook["Vapi webhook<br/>[route.ts]"]
  node_voice_handler["Phone intake handler<br/>[vapiWebhook.ts]"]
  node_vapi_provider["Vapi provider<br/>[vapi.ts]"]
end

subgraph group_workflow["Investigation workflow"]
  node_workflow["Incident workflow<br/>[workflow.ts]"]
  node_investigator["AI investigator"]
  node_decision_engine["Decision engine<br/>[engine.ts]"]
end

subgraph group_operations["IT operations"]
  node_incident_service["Incident service<br/>[service.ts]"]
  node_incident_detail["Incident detail<br/>[page.tsx]"]
  node_incident_admin_api["IT update API<br/>[route.ts]"]
end

subgraph group_storage["Persistence"]
  node_postgres_repo["Postgres repository"]
  node_db_pool["Database pool<br/>[pool.ts]"]
  node_postgres[("PostgreSQL")]
end

node_employee(("Employee"))
node_it_staff(("IT staff"))
node_vapi(("Vapi service"))
node_openai(("OpenAI"))

node_employee -->|"signs in"| node_login_ui
node_login_ui -->|"submits credentials"| node_login_api
node_login_api -->|"queries users"| node_db_pool
node_login_api -->|"creates session"| node_sessions
node_employee -->|"reports issue"| node_incident_ui
node_incident_ui -->|"submits report"| node_incident_api
node_incident_api -->|"requires session"| node_sessions
node_incident_api -->|"handles request"| node_incident_http
node_incident_api -->|"gets service"| node_incident_service
node_incident_api -->|"runs workflow"| node_workflow
node_incident_http -->|"creates or lists"| node_incident_service
node_workflow -->|"requests investigation"| node_investigator
node_investigator -.->|"investigates"| node_openai
node_workflow -->|"selects action"| node_decision_engine
node_workflow -->|"records outcome"| node_incident_service
node_incident_service -->|"uses repository"| node_postgres_repo
node_postgres_repo -->|"queries database"| node_db_pool
node_db_pool -->|"reads and writes"| node_postgres
node_it_staff -->|"reviews incidents"| node_incident_detail
node_incident_detail -->|"requests updates"| node_incident_admin_api
node_incident_admin_api -->|"requires admin"| node_sessions
node_incident_admin_api -->|"updates incident"| node_incident_service
node_employee -.->|"reports by voice"| node_voice_ui
node_vapi -->|"sends messages"| node_voice_webhook
node_voice_webhook -->|"dispatches message"| node_voice_handler
node_voice_webhook -->|"provides service"| node_incident_service
node_voice_webhook -->|"provides workflow"| node_workflow
node_voice_handler -->|"uses tool schema"| node_vapi_provider
node_voice_handler -->|"creates and updates"| node_incident_service
node_voice_handler -->|"runs workflow"| node_workflow

click node_login_ui "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/auth/LoginForm.tsx"
click node_login_api "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/auth/login/route.ts"
click node_sessions "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/auth/session.ts"
click node_incident_ui "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/components/IncidentReportingExperience.tsx"
click node_incident_api "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/incidents/route.ts"
click node_incident_http "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/http.ts"
click node_voice_ui "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/voice/components/VoiceReportPanel.tsx"
click node_voice_webhook "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/vapi/webhook/route.ts"
click node_voice_handler "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/phone/vapiWebhook.ts"
click node_vapi_provider "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/voice/providers/vapi.ts"
click node_workflow "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/incidents/workflow.ts"
click node_investigator "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/investigation/openAiInvestigator.ts"
click node_decision_engine "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/decisions/engine.ts"
click node_incident_service "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/service.ts"
click node_incident_detail "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/incidents/%5Bid%5D/page.tsx"
click node_incident_admin_api "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/incidents/%5Bid%5D/route.ts"
click node_postgres_repo "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/postgresRepository.ts"
click node_db_pool "https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/database/pool.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_login_ui,node_login_api,node_sessions toneBlue
class node_incident_ui,node_incident_api,node_incident_http,node_voice_ui,node_voice_webhook,node_voice_handler,node_vapi_provider toneAmber
class node_workflow,node_investigator,node_decision_engine,node_vapi toneMint
class node_incident_service,node_incident_detail,node_incident_admin_api toneRose
class node_postgres_repo,node_db_pool,node_postgres,node_employee,node_it_staff,node_openai toneIndigo
```

## Components

### User access

- [Login form](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/auth/LoginForm.tsx): `resolveit/src/features/auth/LoginForm.tsx`
- [Login endpoint](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/auth/login/route.ts): `resolveit/src/app/api/auth/login/route.ts`
- [Session auth](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/auth/session.ts): `resolveit/src/server/auth/session.ts`

### Incident intake

- [Incident reporting](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/components/IncidentReportingExperience.tsx): `resolveit/src/features/incidents/components/IncidentReportingExperience.tsx`
- [Incident API](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/incidents/route.ts): `resolveit/src/app/api/incidents/route.ts`
- [Incident HTTP handlers](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/http.ts): `resolveit/src/features/incidents/http.ts`
- [Voice report panel](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/voice/components/VoiceReportPanel.tsx): `resolveit/src/features/voice/components/VoiceReportPanel.tsx`
- [Vapi webhook](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/vapi/webhook/route.ts): `resolveit/src/app/api/vapi/webhook/route.ts`
- [Phone intake handler](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/phone/vapiWebhook.ts): `resolveit/src/server/phone/vapiWebhook.ts`
- [Vapi provider](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/voice/providers/vapi.ts): `resolveit/src/features/voice/providers/vapi.ts`

### Investigation workflow

- [Incident workflow](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/incidents/workflow.ts): `resolveit/src/server/incidents/workflow.ts`
- [AI investigator](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/investigation/openAiInvestigator.ts): `resolveit/src/server/investigation/openAiInvestigator.ts`
- [Decision engine](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/decisions/engine.ts): `resolveit/src/features/decisions/engine.ts`

### IT operations

- [Incident service](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/service.ts): `resolveit/src/features/incidents/service.ts`
- [Incident detail](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/incidents/%5Bid%5D/page.tsx): `resolveit/src/app/incidents/[id]/page.tsx`
- [IT update API](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/app/api/incidents/%5Bid%5D/route.ts): `resolveit/src/app/api/incidents/[id]/route.ts`

### Persistence

- [Postgres repository](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/features/incidents/postgresRepository.ts): `resolveit/src/features/incidents/postgresRepository.ts`
- [Database pool](https://github.com/bhavygandhi125273-sketch/resolveit-ai-incident-intelligence/blob/master/resolveit/src/server/database/pool.ts): `resolveit/src/server/database/pool.ts`
- **PostgreSQL**

### Other components

- **Employee**
- **IT staff**
- **Vapi service**
- **OpenAI**

## Connections

- Employee → Login form: signs in
- Login form → Login endpoint: submits credentials
- Login endpoint → Database pool: queries users
- Login endpoint → Session auth: creates session
- Employee → Incident reporting: reports issue
- Incident reporting → Incident API: submits report
- Incident API → Session auth: requires session
- Incident API → Incident HTTP handlers: handles request
- Incident API → Incident service: gets service
- Incident API → Incident workflow: runs workflow
- Incident HTTP handlers → Incident service: creates or lists
- Incident workflow → AI investigator: requests investigation
- AI investigator → OpenAI: investigates
- Incident workflow → Decision engine: selects action
- Incident workflow → Incident service: records outcome
- Incident service → Postgres repository: uses repository
- Postgres repository → Database pool: queries database
- Database pool → PostgreSQL: reads and writes
- IT staff → Incident detail: reviews incidents
- Incident detail → IT update API: requests updates
- IT update API → Session auth: requires admin
- IT update API → Incident service: updates incident
- Employee → Voice report panel: reports by voice
- Vapi service → Vapi webhook: sends messages
- Vapi webhook → Phone intake handler: dispatches message
- Vapi webhook → Incident service: provides service
- Vapi webhook → Incident workflow: provides workflow
- Phone intake handler → Vapi provider: uses tool schema
- Phone intake handler → Incident service: creates and updates
- Phone intake handler → Incident workflow: runs workflow
