Skip to content

AI Agents & Asset Schedule Intelligence

Send Workbench provides two categories of AI capability: Agent Gateway AI Agents, which are Python-based agents embedded in the Workbench UI, and Asset Schedule AI, which automates the processing and column classification of uploaded asset schedule files.


Agent Gateway — embedded AI agents

What it is

The Agent Gateway (agent-gateway) acts as a secure proxy between the Workbench frontend and Python-based AI agents running in AWS ECS. Agents are embedded in Workbench as panels or drawers, allowing underwriters to interact with AI without leaving the platform.

The initial use case is a Streamlit-based agent that a user can converse with to get risk insights, summarise submission content, or query related risks.

Workbench UI → Agent Gateway (Vert.x, port 4940) → ECS (Python / Streamlit agent)
              Risk data from Underwriting Service

Enabling agents

Agents are enabled via the AI_AGENTS feature switch in be_config.json (S3 business config). Because featureSwitches is a JSON-encoded string, the switch is toggled inside the embedded JSON:

"featureSwitches": "{\"AI_AGENTS\": true}"

Agent configuration

Each deployed agent must be registered with the Agent Gateway. Environment-specific details (ECS URLs, secrets) typically live in the environment profile (DynamoDB data.json), while non-secret routing/role metadata may live alongside the rest of the business config in S3. The exact shape varies by platform version — confirm with your delivery lead. Illustrative structure:

{
  "agentConfig": {
    "agents": [
      {
        "agentId": "submission-assistant",
        "label": "Submission Assistant",
        "ecsUrl": "https://submission-agent.internal.example.com",
        "allowedRoles": ["UNDERWRITER", "UNDERWRITING_ASSISTANT"],
        "businessClassTypeCodes": ["PB", "CM"]
      }
    ]
  }
}
Field Description
agentId Unique identifier for this agent
label Display name shown in the Workbench UI
ecsUrl Internal URL of the running ECS agent container
allowedRoles Roles that can access this agent panel
businessClassTypeCodes Business classes for which this agent appears

Note

Registering or updating agents involves editing config files in the repository (S3 business config under config/, or the environment profile in dynamodb/{env}/data.json) and raising the appropriate request in the Send Partner Portal to deploy. Use Client Build & Deploy for business config changes to Dev, and Deploy DynamoDB Changes for environment profile updates (DynamoDB changes require a service restart, handled by the portal). Coordinate with your delivery lead.

Authentication

The Agent Gateway authenticates users via AWS Cognito through the Application Load Balancer (ALB). User identity is passed to the Python agent via HTTP headers, enabling the agent to make role-aware responses. Agent code can access risk data via the gateway's risk resource endpoints — agents do not connect directly to Workbench services.

WebSocket communication

Streamlit agents use WebSocket for real-time bidirectional communication. The Agent Gateway bridges this WebSocket connection between the Workbench browser client and the Streamlit app, handling SSL termination and request logging transparently.

Accessing risk data from an agent

The gateway exposes endpoints that Python agents can call to retrieve risk information:

Endpoint Description
GET /agent-gateway/risk/{riskId} Retrieve full risk record
GET /agent-gateway/risk/{riskId}/documents List documents attached to the risk

This allows agents to reference submission content, prior risk history, or bound policy data in their responses.

Running agents locally

To run agents in local development:

  1. Ensure the Agent Gateway service is running (port 4940)
  2. Add the agent's config entry in your local environment profile (see above)
  3. Run the Python agent locally using Docker or PyCharm:
    docker build -t submission-agent .
    docker run -p 8501:8501 submission-agent
    
  4. Set ecsUrl in your local config to http://localhost:8501

Asset Schedule AI

What it is

The Asset Schedule AI module automates the processing of uploaded asset schedule spreadsheets — a common and labour-intensive task for Property and Engineering lines.

When an underwriter uploads an asset schedule (e.g. a client's spreadsheet of insured properties), the AI model classifies each column to understand what it contains (e.g. location, TIV, occupancy, currency), then maps the data into the Workbench asset data model automatically.

How it works

File Upload (via File Management Service) → Validation Service → Asset Schedule AI
                                                              Column Classification Model
                                                              Mapped Asset Records on Risk

The column classification model uses a fine-tuned deep NLP classifier (AWD LSTM) trained on insurance domain vocabulary. It predicts a label for each column header and its associated data.

Supported column labels

The model recognises the following column types:

Label Description
TIV Total Insured Value
ORG Organisation / company name
ADD_LINE_1 Address line 1
POSTCODE Postal code
COUNTRY Country
CITY City
COORDINATE Lat/Lon coordinate
LAT / LON Latitude / Longitude separately
CURRENCY Currency code
OCCUPANCY Building occupancy type
BUILDINGS Buildings sum insured
CONTENT Contents sum insured
STOCK Stock sum insured
MACHINERY Machinery sum insured
BI Business Interruption
START / END Coverage start / end dates
RISK Risk or location reference
UNIT Unit number

Enabling Asset Schedule AI

Asset Schedule AI is available when the AI_AGENTS feature switch is enabled and the column classification model container is running. In a production environment the model runs in ECS; locally it runs via Docker on port 5042.

Note

The column classification model is currently a platform-managed component. You do not configure the model itself — only the field mappings that translate classified columns into the Workbench data model.

Column mapping configuration

Once columns are classified, a mapping layer translates the predicted label to the corresponding Workbench asset field. These mappings are in the core config:

config/core/schedule-column-mapping/

Client-specific overrides can be placed in:

config/{client}/schedule-column-mapping/

A mapping entry looks like:

{
  "columnLabel": "TIV",
  "workbenchField": "totalInsuredValue",
  "dataType": "DECIMAL",
  "required": false
}

File upload and validation

Asset schedule files are uploaded via the File Management Service (port 4990) and validated by the Validation Service (port 4991) before classification. The validation step checks for:

  • Required columns present
  • Data type consistency within columns
  • Value range checks (e.g. TIV not negative)
  • Maximum row count limits

Validation errors are surfaced in the Workbench UI before the AI classification step runs.


See also