# kimpearce888/supportos-plus architecture

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

- Interactive diagram: https://gitdiagram.com/kimpearce888/supportos-plus
- Repository: https://github.com/kimpearce888/supportos-plus

## Overview

This is a Rust desktop customer-support operations application: an egui app shell fronts support inbox and analytics workflows, while the core crate provides persistence, Help Scout connectivity, background sync, AI, reporting, and operational features. The tree and source index establish many capabilities, but the README is empty and sampled excerpts are partial; edges are limited to visible imports, calls, and documented relationships, with uncertain integrations left unverified.

Main entry points: [`crates/app-shell/src/app/mod.rs`](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/app/mod.rs) (App shell), [`crates/core/src/workers/mod.rs`](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/workers/mod.rs) (Background workers), [`crates/core/src/ai_pipeline/mod.rs`](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/ai_pipeline/mod.rs) (AI pipeline), [`crates/app-shell/src/design/mod.rs`](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/design/mod.rs) (Design system)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_app["App shell<br/>[mod.rs]"]
  node_inbox["Inbox workspace<br/>[inbox.rs]"]
  node_dashboard["Dashboard<br/>[dashboard.rs]"]
  node_sync_ui["Sync health UI<br/>[sync_health.rs]"]
  node_search_ui["Search UI<br/>[search.rs]"]
  node_icons["Icon rendering<br/>[icons.rs]"]
  node_design["Design system<br/>[mod.rs]"]
end

subgraph group_support["Support operations"]
  node_sync["Help Scout integration<br/>[mod.rs]"]
  node_chat_data["Conversation operations<br/>[chats.rs]"]
  node_webhooks["Webhook handling<br/>[webhook_handler.rs]"]
  node_webhook_health["Webhook health<br/>[webhook_health.rs]"]
  node_workers["Background workers<br/>[mod.rs]"]
  node_knowledge["Knowledge store<br/>[knowledge_store.rs]"]
end

subgraph group_intelligence["AI and insights"]
  node_ai["AI pipeline<br/>[mod.rs]"]
  node_quality["Quality analysis<br/>[mod.rs]"]
  node_reports["Reports API<br/>[reports_api.rs]"]
  node_catalog["Feature catalog<br/>[lib.rs]"]
end

subgraph group_platform["Core platform"]
  node_db[("SQLite database<br/>[db.rs]")]
  node_bootstrap["Application bootstrap<br/>[bootstrap.rs]"]
  node_settings["Settings and secrets<br/>[settings.rs]"]
  node_audit["Audit trail<br/>[audit.rs]"]
  node_business_hours["Business hours<br/>[business_hours.rs]"]
  node_digest["Digest generation<br/>[digest.rs]"]
  node_jobs["Job scheduling<br/>[jobs.rs]"]
  node_migrations["Database migrations<br/>[migrations.rs]"]
end

node_agent(("Support agent"))
node_helpdesk{{"Help Scout"}}

node_agent -->|"uses"| node_app
node_app -->|"routes to"| node_inbox
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_sync_ui
node_app -->|"routes to"| node_search_ui
node_inbox -->|"renders with"| node_design
node_dashboard -->|"renders with"| node_design
node_sync_ui -->|"renders with"| node_design
node_search_ui -->|"renders with"| node_design
node_search_ui -->|"queries"| node_db
node_icons -->|"used by"| node_app
node_workers -->|"dispatches"| node_sync
node_workers -->|"dispatches"| node_ai
node_workers -->|"dispatches"| node_webhooks
node_webhooks -->|"calls"| node_chat_data
node_webhook_health -->|"checks provider"| node_sync
node_webhook_health -.->|"manages hooks"| node_helpdesk
node_sync -.->|"syncs with"| node_helpdesk
node_settings -->|"reads and writes"| node_db
node_bootstrap -->|"registers migrations"| node_ai
node_bootstrap -.->|"runs migrations"| node_migrations
node_ai -->|"persists results"| node_db
node_ai -.->|"uses model service"| node_helpdesk
node_quality -->|"uses"| node_business_hours
node_workers -->|"uses"| node_jobs

click node_app "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/app/mod.rs"
click node_inbox "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/inbox.rs"
click node_dashboard "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/dashboard.rs"
click node_sync_ui "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/sync_health.rs"
click node_search_ui "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/search.rs"
click node_icons "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/icons.rs"
click node_design "https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/design/mod.rs"
click node_sync "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/helpscout_real/mod.rs"
click node_chat_data "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/chats.rs"
click node_webhooks "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/webhook_handler.rs"
click node_webhook_health "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/webhook_health.rs"
click node_workers "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/workers/mod.rs"
click node_ai "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/ai_pipeline/mod.rs"
click node_quality "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/quality/mod.rs"
click node_reports "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/reports_api.rs"
click node_catalog "https://github.com/kimpearce888/supportos-plus/blob/main/crates/catalog/src/lib.rs"
click node_db "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/db.rs"
click node_bootstrap "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/bootstrap.rs"
click node_settings "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/settings.rs"
click node_audit "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/audit.rs"
click node_business_hours "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/business_hours.rs"
click node_digest "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/digest.rs"
click node_jobs "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/jobs.rs"
click node_knowledge "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/knowledge_store.rs"
click node_migrations "https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/migrations.rs"

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_inbox,node_dashboard,node_sync_ui,node_search_ui,node_icons,node_design toneBlue
class node_sync,node_chat_data,node_webhooks,node_webhook_health,node_workers,node_knowledge toneAmber
class node_ai,node_quality,node_reports,node_catalog toneMint
class node_db,node_bootstrap,node_settings,node_audit,node_business_hours,node_digest,node_jobs,node_migrations toneRose
class node_agent,node_helpdesk toneIndigo
```

## Components

### Desktop interface

- [App shell](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/app/mod.rs): `crates/app-shell/src/app/mod.rs`
- [Inbox workspace](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/inbox.rs): `crates/app-shell/src/pages/inbox.rs`
- [Dashboard](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/dashboard.rs): `crates/app-shell/src/pages/dashboard.rs`
- [Sync health UI](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/sync_health.rs): `crates/app-shell/src/pages/sync_health.rs`
- [Search UI](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/pages/search.rs): `crates/app-shell/src/pages/search.rs`
- [Icon rendering](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/icons.rs): `crates/app-shell/src/icons.rs`
- [Design system](https://github.com/kimpearce888/supportos-plus/blob/main/crates/app-shell/src/design/mod.rs): `crates/app-shell/src/design/mod.rs`

### Support operations

- [Help Scout integration](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/helpscout_real/mod.rs): `crates/core/src/helpscout_real/mod.rs`
- [Conversation operations](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/chats.rs): `crates/core/src/chats.rs`
- [Webhook handling](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/webhook_handler.rs): `crates/core/src/webhook_handler.rs`
- [Webhook health](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/webhook_health.rs): `crates/core/src/webhook_health.rs`
- [Background workers](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/workers/mod.rs): `crates/core/src/workers/mod.rs`
- [Knowledge store](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/knowledge_store.rs): `crates/core/src/knowledge_store.rs`

### AI and insights

- [AI pipeline](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/ai_pipeline/mod.rs): `crates/core/src/ai_pipeline/mod.rs`
- [Quality analysis](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/quality/mod.rs): `crates/core/src/quality/mod.rs`
- [Reports API](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/reports_api.rs): `crates/core/src/reports_api.rs`
- [Feature catalog](https://github.com/kimpearce888/supportos-plus/blob/main/crates/catalog/src/lib.rs): `crates/catalog/src/lib.rs`

### Core platform

- [SQLite database](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/db.rs): `crates/core/src/db.rs`
- [Application bootstrap](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/bootstrap.rs): `crates/core/src/bootstrap.rs`
- [Settings and secrets](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/settings.rs): `crates/core/src/settings.rs`
- [Audit trail](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/audit.rs): `crates/core/src/audit.rs`
- [Business hours](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/business_hours.rs): `crates/core/src/business_hours.rs`
- [Digest generation](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/digest.rs): `crates/core/src/digest.rs`
- [Job scheduling](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/jobs.rs): `crates/core/src/jobs.rs`
- [Database migrations](https://github.com/kimpearce888/supportos-plus/blob/main/crates/core/src/migrations.rs): `crates/core/src/migrations.rs`

### Other components

- **Support agent**
- **Help Scout**

## Connections

- Support agent → App shell: uses
- App shell → Inbox workspace: routes to (evidence: `crates/app-shell/src/app/mod.rs`)
- App shell → Dashboard: routes to (evidence: `crates/app-shell/src/app/mod.rs`)
- App shell → Sync health UI: routes to (evidence: `crates/app-shell/src/app/mod.rs`)
- App shell → Search UI: routes to (evidence: `crates/app-shell/src/app/mod.rs`)
- Inbox workspace → Design system: renders with (evidence: `crates/app-shell/src/pages/inbox.rs`)
- Dashboard → Design system: renders with (evidence: `crates/app-shell/src/pages/dashboard.rs`)
- Sync health UI → Design system: renders with (evidence: `crates/app-shell/src/pages/sync_health.rs`)
- Search UI → Design system: renders with (evidence: `crates/app-shell/src/pages/search.rs`)
- Search UI → SQLite database: queries (evidence: `crates/app-shell/src/pages/search.rs`)
- Icon rendering → App shell: used by (evidence: `crates/app-shell/src/icons.rs`)
- Background workers → Help Scout integration: dispatches (evidence: `crates/core/src/workers/mod.rs`)
- Background workers → AI pipeline: dispatches (evidence: `crates/core/src/workers/mod.rs`)
- Background workers → Webhook handling: dispatches (evidence: `crates/core/src/workers/mod.rs`)
- Webhook handling → Conversation operations: calls (evidence: `crates/core/src/webhook_handler.rs`)
- Webhook health → Help Scout integration: checks provider (evidence: `crates/core/src/webhook_health.rs`)
- Webhook health → Help Scout: manages hooks
- Help Scout integration → Help Scout: syncs with
- Settings and secrets → SQLite database: reads and writes (evidence: `crates/core/src/settings.rs`)
- Application bootstrap → AI pipeline: registers migrations (evidence: `crates/core/src/bootstrap.rs`)
- Application bootstrap → Database migrations: runs migrations (evidence: `crates/core/src/bootstrap.rs`)
- AI pipeline → SQLite database: persists results (evidence: `crates/core/src/ai_pipeline/mod.rs`)
- AI pipeline → Help Scout: uses model service
- Quality analysis → Business hours: uses (evidence: `crates/core/src/quality/mod.rs`)
- Background workers → Job scheduling: uses (evidence: `crates/core/src/workers/mod.rs`)
