• contact@verticalserve.com
Home / Engineering / Post 81
Engineering Blog · Post #81

The Team Operating System: Roles, Groups, SLAs, Workload, and OOO in One Place

Team management is usually a spreadsheet. InsightUW makes it a live system — one where assignments, authority, out-of-office coverage, group consultations, and individual production metrics are all first-class objects instead of tribal knowledge.


The Problem

The hard parts of running an underwriting team are not in any one screen:

  • Who owns what — and does that mapping respect authority, LOB specialization, and current workload?
  • What happens when a UW is OOO — does their queue freeze, redistribute, or simply stop being looked at?
  • Who does the specialist work — CBP, actuarial, CAT modeling, risk management, reinsurance, compliance, claims — and how do they receive it without email tennis?
  • How is a manager supposed to see the shape of the team — without reading every submission themselves?
  • How does a UW prove their numbers — production, retention, hit ratio, by-LOB — without rebuilding a spreadsheet every quarter?

A team management module that only handles "add user, assign role" does not answer any of these questions.

The InsightUW Approach

Team management is an operating system, not a screen. Every question above has a dedicated primitive — and they compose.

graph TB subgraph Identity["Identity"] R["Roles<br/>admin/manager/<br/>senior uw/underwriter/<br/>cbp/qc"] T["Teams<br/>LOB-mapped<br/>SLA-governed"] G["Groups<br/>CBP, actuarial, CAT,<br/>risk, reinsurance,<br/>compliance, claims"] end subgraph Assignment["Assignment"] Fifo["Fifo round-robin<br/>workload + authority + LOB"] OOO["Account transfer<br/>on OOO / reorg"] ACT["Actor Service<br/>impersonation + audit"] end subgraph Visibility["Visibility"] MGR["Manager dashboard<br/>workload · SLA · pipeline"] Prod["Production metrics<br/>per-UW YoY + group by"] Port["Portfolio goals<br/>team target vs actual"] end Identity --> Assignment Assignment --> Visibility

Roles Are Enforced, Not Suggested

A UW with $10M authority cannot quote a $15M risk — the state machine refuses. A Underwriting Assistant does not see the "quote" button. A manager can reassign, a UW cannot. The role matrix is evaluated server-side on every mutation via caller can edit, which returns true only for manager / senior uw on sensitive operations.

This prevents the most common operational bug in insurance software: the "everyone sees everything" interface that relies on policy rather than enforcement.

Teams Map to LOBs, Not the Other Way Around

A team is a set of people plus a set of LOB codes plus an SLA policy. Submissions route to the team whose LOB set contains the submission's LOB — so a Hospital Professional Liability submission goes to the Healthcare team, not to whoever happens to be free. Cross-LOB assignment is a conscious override by a manager, not an accident.

Groups Are Parallel to Teams

Teams carry the primary assignment. Groups carry the consultative one:

Group Why a UW invokes it
CBP Centralized business processing / intake
Actuarial Loss-pick, rate adequacy, experience analysis
CAT Modeling Hurricane / earthquake / wildfire scenarios
Risk Management Territory restrictions, accumulation
Reinsurance Treaty fit, facultative placement
Compliance Sanctions re-verification, regulatory sign-off
Claims Pattern opinions on prior losses

A single Group + Group Member pair, seeded from menu-workflow.ts, gives each group its own queue at /uw/groups/{code}/queue. The 9-state machine from the legal review engine is reused — same state names, same SLAs, same round-trip counter — so a "CAT Modeling Review" is operationally identical to a "Legal Review," just with a different assignee pool.

Out-of-Office Coverage Is First-Class

When a UW goes out, their accounts don't freeze. The Account Transfer endpoint (/uw_accounts/transfer) moves a set of insureds from one UW to another, optionally time-bounded, with a full audit row per insured. Pair that with the assigned uw column on Insured — the single source of truth for account ownership — and the OOO UW's queue is instantly on the covering UW's dashboard without any submission re-routing.

Manager Dashboard Is a Dashboard, Not a List

Managers see workload distribution, SLA on-track/at-risk/breached counts, pipeline by status, and production by UW — computed live, not exported nightly. One click reassigns a submission from an overloaded UW to an idle one. The dashboard is server-rendered via /dashboard/manager?team_id=X and streams updates over the same SSE channel the workbench uses, so it stays current without refresh.

Production Metrics Are Per-UW and Dimensioned

"How did Jennifer do this quarter?" has a real answer:

The same report supports group_by=team, group_by=broker, group_by=lob, and group_by=segment — one endpoint, one query shape, stored in Production Metrics and refreshed daily. Retention is queryable against prior renewals via the same policy → renewal-submission FK that the personal dashboards use.

Portfolio Goals Tie It All Together

A team target ($X GWP, Y retention, Z hit ratio) lives in Portfolio Goal and is compared to live production. The manager sees a single progress bar: actual vs. goal, by LOB, by UW, by quarter. When a UW is trending behind, production metrics surface why — not just that.

The Coherent Shell

All of the above lives in a single app:

  • ActorService — the current user, their groups, impersonation state (manager viewing-as UW).
  • Sidebar menu-workflow.ts — one menu, role-aware, group-aware.
  • URL-synced filters — share a dashboard link, the link opens the same view.
  • Global search (Cmd-K) — land on any team member, group, or submission in one keystroke.

Under the Hood

  • Team, Team Member — team + LOB codes + SLA config + assignment policy.
  • Group, Group Member — consultative groups; role per member (lead / member); default assignee.
  • Insured.assigned_uw + account manager — primary and secondary ownership.
  • Account Transfer — audit row per account move; supports time-bounded OOO coverage.
  • Production Metrics — daily-refreshed per-UW rollup, dimensioned by LOB / broker / segment.
  • Portfolio Goal — team target + actuals; surfaces in manager dashboard.
  • Role gate — caller can edit on every mutation.
  • SSE-based live updates — workload, SLA, pipeline counts push, not poll.

What This Means for the Team

  1. Role + team + group are enforced — ownership, authority, and consultation are not honor-system.
  2. OOO is a button, not a firedrill — transfer an account for two weeks and it's recorded.
  3. Groups work alongside teams — specialist queues don't hijack the primary pipeline.
  4. Managers see the shape in real time — workload, SLA, production, all one page.
  5. UWs have numbers they can point to — production, retention, and hit ratio are computed, not assembled.

Capability Deep-Dives


Want team operations that are a system, not a spreadsheet? Request a demo.

See InsightUW run on your data

A 45-minute working session with a real broker email and your LOBs.

Request a demo