Dashboard
204 active files across 2 coordinators · Thu Aug 14, 2026
Dashboard layout
Tom's layout
Org default
Admins publish
Reset to org default
Design variant — edit mode with the widget gallery drawer open
Drop here · 4 columns
Widget gallery
Deadlines
Deadline risk buckets
Past deadline, ≤ 7 days, 8–14 days
On dashboard
Days-to-45 heatmap
ID-window pressure by coordinator
180-day runway
Files by days left to close
Closing the 45-Day Window
Files whose identification period is still running and whose 45-day date lands within 14 days
On dashboard
Book & Intake
Book Mix by Structure
Open files across delayed · reverse · improvement · simultaneous
On dashboard
Intake volume trend
Weekly files received via CRM API
On dashboard
Unassigned Intake
Intake files with no coordinator assigned yet, office-wide
On dashboard
Money
Funds Held
Exchange funds recorded in qualified escrow
On dashboard
Funds held by escrow bank
Balances split across escrow partners
Team
Workload by coordinator
Active files vs. load ceiling
On dashboard
E-sign queue depth
Outstanding envelopes by waiting party
On dashboard
At Risk by Coordinator
Which coordinators are carrying lapsed or near-term statutory dates, office-wide
On dashboard
Pinned Reports
Closing this month
Saved view · Reports › Custom Views
Funds held > $1M
Saved view · Reports › Custom Views
Dashboards cap at 12 widgets · 10 in use on this layout
Design variant — widget editor dialog · both tabs shown
Add widget
Build a metric
Pin a saved report view
Widget name
Metric
one per widget
Files entering 45-day window
Active files
Awaiting signature
Funds held
Disbursements by stage
Intake volume
Filters
rows must match all filters
Type=Delayed
Status=45-Day ID
Coordinator=All
45th DaywithinNext 14 days
Chart type
Preview
23 files match · live
45-day pressure — next 14 days
1260
0–4d5–9d10–14d
Updates as you change the metric and filters
Add widget
Build a metric
Pin a saved report view
Deadlines this month
Pinned
Closing this month
Open files by coordinator
Funds held > $1M
Design variant — how a pinned saved-report view renders as a widget
Design variants — empty dashboard · loading skeleton
Add your first widget
Start from the gallery, or pin one of your saved report views from Reports › Custom Views.
Start from a template
Offered on first run, from the empty canvas, and any time from the widget gallery
Org default
Exchange Coordinator
Day-to-day file work · set by your organization
QI Officer
Countersignature, approvals, fiduciary control
Compliance & BSA
Identity & AML, screening dispositions, statutory clocks
Office Manager
Team load, intake, queue composition
Leadership
The office at a glance · book, completions, funds
Escrow & Operations
Money movement, reconciliation, 180-day exposure
A template is a starting point, not a binding. Applying one copies its widgets into your own
layout, which you then own and can edit freely — it never links back, so a later change to the template does
not rewrite your dashboard. Org owners and admins can set their own layout as the org default for a role;
everyone in the org then sees it first in this list, and nobody's dashboard changes until they choose it.
Drag and drop, beyond the dashboard
One pattern everywhere a coordinator orders things — same handle, same feedback, same keyboard path
The pattern
Deadlines at risk
Awaiting my approval
Document chases
Never mouse-only. Focus the handle, then
Space to lift, ↑↓ to move, Space to drop,
Esc to cancel. Each move is announced (“Awaiting my approval, position 3 of 8”).
Our users skew 40–80; a drag-only affordance would exclude some of them outright.
Dashboard widgets
Reposition and resize on the 12-column grid.
Shipping here
My Queue — group order
Reorder and hide action groups; reorder saved views. Handles are already drawn in the queue sidebar.
Highest value after the dashboard
Book of business — columns
Drag column headers to reorder; a column tray to show and hide. The coordinator's table, not ours.
Pairs with saved views
Workspace summary rail
Reorder the rail blocks — key dates, funds, team, next action, portal — so the fact you check first sits highest.
Per-user, applies to every file
Report builder — columns
Drag chosen columns into output order instead of picking from a fixed list.
Direct incumbent-vendor complaint
Workflow action catalog
Pin and order the actions a coordinator runs most — send reminder, request document — so their top three are always first.
Small change, daily payoff
Never draggable
Anything whose order carries legal meaning: the four lifecycle stages, the audit log, deadline sequence,
the four-eyes approval chain, and document-to-leg binding. If a user could reorder it into a different
compliance story, it is not a preference.
Hard rule
Layouts persist per user in the database — Tom's layout follows him to any device; nothing lives in the browser.
The shared org-default layout can only be published by org admins; coordinators see the toggle disabled with the
lock explained.
"Overdue" counts next actions past their internal due date. Statutory 45/180-day clocks cannot be extended and
are never shown as "overdue" — a lapsed statutory deadline surfaces as a compliance event, not a dashboard bucket.
Dataviz restraint: axes always start at zero, exchange-type colors reuse the console's badge hues (blue,
indigo, purple), and red/amber appear only for genuine deadline urgency. Pinned report widgets execute the
saved definition server-side —
the same query that powers Reports › Custom Views, with every export audit-logged.
Build contract — dashboard builder
1 · Tokens, never hex. Every colour resolves from
docs/mockups/tokens.css. The [PROPOSED] tokens this surface needs
(--console-rail-*, --admin-*, --hub-id-*,
--hub-escrow-*, --hub-purchase-*, --scrim, the
good/warn/bad triad) go into packages/web-app/src/index.css under
:root and .dark before this is coded. A filled button takes
--admin-on or --good-on, never a literal white — the accent fill
lightens in dark and white on it measures 2.9:1.2 · Layouts are rows in Supabase, one per user per scope. Widget set, order, span and the selected layout persist server-side under the tenant's RLS policies, so a coordinator's dashboard follows them to any device. Nothing about a layout lives in localStorage. The org-default layout is publishable by org admins only; for everyone else the control renders disabled with the reason named, not hidden.
3 · Every widget reads through the caller's permissions. A widget is a saved query, and adding one can never widen scope — if a coordinator cannot open a file, no tile, bucket, heat cell or pinned report may count it. Pinned report widgets execute the saved definition server-side: the same query that powers Reports › Custom Views, audit-logged on every run and export.
4 · Statutory clocks are never a user-editable number. The Deadline Risk buckets count internal next actions past their due date. The 45- and 180-day dates are computed from the relinquished closing and cannot be extended from this surface — an adjustment requires an approved four-eyes override carrying a legal basis, which happens on the exchange file, not on a dashboard. A lapsed statutory deadline surfaces as a compliance event and never renders in a satisfied or green state.
5 · Colour carries meaning, and only one meaning each. Exchange-type hues (
--hub-id, --admin, --hub-purchase) are wayfinding and
match the type badges everywhere else in the console. Red and amber are reserved for genuine
deadline urgency. Status is never conveyed by colour alone — every bucket, legend row and
heat cell carries a label and a number.6 · Drag is never the only path. Reordering and resizing work from the keyboard: focus the handle, Space to lift, arrows to move, Space to drop, Esc to cancel, with each move announced. The audience skews 40–80; a drag-only affordance excludes some of them outright.
prefers-reduced-motion
removes the lift and skeleton animation.7 · Axes start at zero and the empty state teaches. No truncated baselines, no invented precision. A dashboard with no widgets explains what a widget is and offers the role templates rather than showing a blank grid.
Light and dark are both designed here. All counts, amounts, names and dates are synthetic demo data.