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

My Accounts, My Lines, My Renewals: Three Personal Dashboards for Every Underwriter

The pipeline view shows the queue. The 360 shows one account. Neither answers "what's on my plate?" InsightUW adds three personal dashboards that do.


The Problem

The workbench is submission-centric. Insured-360 is account-deep. Neither gives a UW the clean "here's what I own" answer. The questions a UW asks every morning — What accounts are mine? Which lines do I carry on Acme Corp? What renewals am I behind on? Which ones did I win last quarter? — require joining tables across three subsystems, which most workstations leave to the UW's head.

The InsightUW Approach

Three focused dashboards, each answering one question:

graph LR subgraph Accts["/uw/my-accounts"] A["Insured.assigned uw = me<br/>Cards ranked by urgency<br/>SLA × renewal window × BOR<br/>× missing info"] end subgraph Lines["/uw/my-lines/:insured"] L["Policies I underwrite<br/>+ my in-flight subs<br/>on This account<br/>Rollup by LOB / Product"] end subgraph Renewals["/uw/my-renewals + /uw/prior-renewals"] R["Upcoming: expiring policy<br/>Join renewal submission<br/>9 action buckets"] P["Prior: won/lost history<br/>retention % · rate Δ<br/>loss-reason patterns"] end A --> L A --> R R --> P

My Accounts — Urgency-Ranked Cards

Each card represents an insured the UW owns (Insured.assigned_uw = uw_name). The card rolls up:

  • Active policies + premium in force
  • Open submissions + in-flight premium
  • Next renewal date + days-to-expiry (color-coded)
  • Retention flags (account warning, rate inadequacy, bor pending)
  • BOR contested, SLA breach count, critical missing info, top 3 notifications

The composite urgency score drives four bands:

Band Score Meaning
Needs attention ≥ 120 SLA breach or contested BOR or missing-info critical
Renewing soon 60–119 Renewal in the next 30 days
Active 20–59 Normal workload
Watchlist < 20 Low urgency, UW-flagged

Bulk reassign is role-gated to manager / senior_uw.

My Lines on an Account

Sometimes Sarah owns the D&O on Acme Corp but Jennifer owns the Cyber line. Both of them care about the account but neither owns everything. /uw/my-lines/:insured filters both policies and in-flight submissions to just the UW's lines on that one account, plus a co-underwriter banner so Sarah knows Jennifer is there too.

My Renewals — Upcoming

The workbench tells you "renewals are in your queue." /uw/my-renewals tells you what to do with each one. It joins Policy (expiring, assigned to you) with Submission Queue (the renewal submission, if one exists) via the new prior policy id FK, and tags each row with one of 9 action buckets:

Bucket Trigger UX cue
Overdue expired, not bound/declined red row
No submission no renewal sub created yet yellow row + "Generate" bulk action
Awaiting broker sub exists, not started grey
In progress stage = in_progress blue
Awaiting quote internal quote pending light blue
Quoted quote out primary
Negotiating stage = negotiating primary
Won bound green
Lost declined dark

Sort by urgency, bucket, expiry, premium, rate change, or win probability. Inline edit win% / proposed / stage via the existing win-probability endpoint. Multi-select "no submission" rows and hit Generate renewal submissions to create them in bulk.

Prior Renewals — The Retention Mirror

/uw/prior-renewals turns the UW's historical outcomes into a retention view. KPI strip: count, retention %, won, lost, avg rate change on wins, premium won. Three breakdown cards — by LOB, by broker, by loss reason — plus a 12-month retention sparkline. Click a row to open the submission.

Role-Gated Manager View

All three dashboards accept a viewer query param. If the caller's role is manager or senior uw, they can switch the "Viewing" dropdown to any UW's dashboard — same UI, same URLs, no extra page. Forbidden for regular UWs, enforced server-side.

Under the Hood

  • Insured.assigned_uw is the single source of truth for account ownership. A one-shot POST /uw_accounts/backfill-ownership derives it from the latest assigned submission / active policy.
  • Submission Queue.prior_policy_id — new FK that makes policy → renewal-submission joins cheap. Backfill endpoint migrates from the old properties JSON.
  • N+1 avoided — the my-accounts list runs 4 bulk queries regardless of card count.
  • 9 action buckets are derived on the server from stage + status + days-to-expiry; the UI is presentational.

What This Means for Underwriters

  1. Start the day on "my plate," not "the team's plate."
  2. Multi-UW accounts are first-class — lines-on-account respects co-underwriters.
  3. Renewal lifecycle is one experience — upcoming and prior linked by the same policy FK.
  4. Managers share the page — same URL, viewer query param.

What's Next

Back to top: Pipeline Management overview — or pick any module at insightuw.com.


Want personal dashboards your UWs will actually open every morning? 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