How it works
The architecture, in plain English.
Two surfaces. One pipeline. ServiceNow holds the case record and the audit trail. SharePoint holds the documents. Azure runs the AI. Your tenant, your data, your governance.
ServiceNow Workspace Your Microsoft tenant
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ │ │ │
│ Case record (any table) │ │ SharePoint Online │
│ ┌───────────────────────┐ │ │ └─ documents (Graph) │
│ │ Lore iframe │ │ │ │
│ │ - Timeline │◄─┼──── SignalR ───┤ Azure Functions │
│ │ - Ask the case │ │ │ └─ Gather AI │
│ │ - Claim Summary │ │ │ ├─ /classify-enrich │
│ │ - EVAM cards │ │ │ ├─ /classify-email │
│ └───────────────────────┘ │ │ ├─ /share-create │
│ ▲ │ │ └─ /share-revoke │
│ │ │ │ │ │
│ Scoped REST (x_verge_*) │ │ ▼ │
│ ┌───────────────────────┐ │ │ Microsoft Foundry │
│ │ x_verge_gather_* │◄─┼─── REST/PATCH─┤ └─ Anthropic Claude │
│ │ - documents │ │ │ ├─ Sonnet (PDFs) │
│ │ - tags │ │ │ └─ Haiku (emails) │
│ │ - share events │ │ │ │
│ │ - audit │ │ │ │
│ └───────────────────────┘ │ │ │
│ │ │ │
└─────────────────────────────┘ └─────────────────────────────┘
Polymorphic table reference
Lore™ isn't tied to sn_customerservice_case.
The backing tables (x_verge_gather_document,
x_verge_gather_tag) reference the parent
polymorphically by table name + sys_id. Move to a different host table by changing one config line.
Single-file iframe
Vite's single-file plugin compiles the React app to one HTML file. Drop it on any ServiceNow UI Macro. No CDN dependencies, no asset fetches at runtime, no bundle splitting to operate.
Zero document storage in SN
Bytes go to SharePoint via Graph. ServiceNow holds the metadata row with the SharePoint URL and Graph item ID. Storage costs and SN attachment limits stop being the bottleneck.
Per-user real-time
Gather AI™ publishes SignalR events scoped by userId. Only the user who uploaded the file sees the “enrichment complete” toast and the row update. High-volume teams don’t drown each other in cross-noise.
Tiered models
Sonnet for vision-heavy PDF classification. Haiku for synchronous email tagging. Microsoft Foundry first, direct Anthropic API as fallback. Cost estimates returned in every response.
Audit-grade sharing
Every share goes through tag policy + BAA + role-access checks. Every grant, deny, BAA-block, and policy-block writes an event row. Revoke is a Graph DELETE plus an audit row.