22 KiB
Dealspace UI/UX Specification
Version: 0.1 — 2026-02-28
Status: Pre-implementation. Companion to SPEC.md.
1. Design Philosophy
Workers see their inbox. Deal managers see the deal.
The UI surface is role-determined. Same platform, completely different experience:
- Worker (seller_member, buyer_member): Task inbox only
- Admin (ib_admin, seller_admin, buyer_admin): Full deal context
- IB member: Workstream-scoped deal view
No hamburger menus. No collapsible sidebars. No "power user mode." The interface adapts to the role — users don't configure their way to productivity.
2. Information Architecture
2.1 Screen Inventory
| Screen | Who Sees It | Purpose |
|---|---|---|
| Task Inbox | Everyone | Personal work queue — what needs attention |
| Request Detail | Everyone | Thread view, status, routing chain |
| Deal Overview | IB admin, seller_admin | Full picture: workstreams, completion %, activity |
| Workstream View | IB member, admins | Requests/answers in one workstream |
| Data Room | buyer_admin, buyer_member | Published answers, document browser |
| Request Submission | buyer_admin, buyer_member | Submit new requests |
| Team Management | All admins | Invite, roles, permissions |
| Project Settings | ib_admin | Workstreams, themes, notifications |
2.2 Navigation Model
┌─────────────────────────────────────────────────────────────┐
│ [Project ▾] [Inbox (3)] [Avatar ▾] │
├─────────────────────────────────────────────────────────────┤
│ Finance │ Legal │ IT │ HR │ Operations │ [Data Room] │ ← workstream tabs (admin/IB only)
├─────────────────────────────────────────────────────────────┤
│ │
│ CONTENT AREA │
│ │
└─────────────────────────────────────────────────────────────┘
Workers (seller_member, buyer_member):
- No project selector (they see one project's tasks)
- No workstream tabs (their inbox spans all assigned workstreams)
- Just: header + inbox
Admins/IB:
- Project selector (one-line dropdown, not a sidebar)
- Workstream tabs (always visible when in a project)
- Full navigation
2.3 URL Structure
/inbox # Personal task inbox (all projects)
/p/:projectID # Deal overview (admin) or inbox (worker)
/p/:projectID/ws/:workstream # Workstream view
/p/:projectID/r/:requestID # Request detail
/p/:projectID/dataroom # Data room (buyers)
/p/:projectID/dataroom/submit # Submit request (buyers)
/p/:projectID/team # Team management
/p/:projectID/settings # Project settings (ib_admin only)
3. Role-Based Views
3.1 IB Admin
Default view: Deal Overview
- Completion % per workstream (donut charts)
- Recent activity feed
- Pending vetting queue
- Buyer requests needing attention
Full access to:
- All workstream tabs
- All requests/answers
- Team management for all parties
- Project settings
- Audit log
3.2 IB Member
Default view: Workstream View (for assigned workstreams)
- Request lists in their workstreams
- Vetting queue for answers submitted to them
- Can publish to data room
No access to:
- Other workstreams
- Project-level settings
- Other parties' internal routing
3.3 Seller Admin
Default view: Team inbox (all requests assigned to seller org)
- Group by: Workstream | Assignee | Due Date
- Delegation controls
- Completion tracking
Access:
- All requests directed to seller
- Seller team management
- No buyer visibility
- No data room
3.4 Seller Member (e.g., accountant)
Default view: Personal Task Inbox
- ONLY tasks assigned to them
- Clear due dates
- Simple: task → upload → done
No access to:
- Other team members' tasks
- Deal-level metrics
- Buyer anything
- Data room
3.5 Buyer Admin
Default view: Data Room
- Published answers organized by workstream
- "Request Info" button
- Team's pending requests
Access:
- Data room (published only)
- Submit requests
- Buyer team management
- No seller visibility
- No pre-dataroom content
3.6 Buyer Member
Default view: Personal Task Inbox (their requests)
- Status of requests they submitted
- Data room read access
No access to:
- Submit new requests (unless granted)
- Team management
- Other members' requests
4. The Task Inbox (Core View)
The most important screen. This is where work happens.
4.1 Layout
┌─────────────────────────────────────────────────────────────┐
│ MY TASKS [View ▾] │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔴 FIN-042 Audited financials FY2024 Due: Mar 15 │ │
│ │ Project Alpha • Finance • From: J. Smith (IB) │ │
│ │ "Please provide audited statements for..." │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🟡 LEG-018 Board meeting minutes 2025 Due: Mar 20 │ │
│ │ Project Alpha • Legal • From: M. Chen (CFO) │ │
│ │ "Board approval documentation needed" │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ⚪ IT-007 Network architecture diagram Due: Mar 22 │ │
│ │ Project Beta • IT • From: L. Park (IB) │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
4.2 Task Card Elements
| Element | Purpose |
|---|---|
| Priority indicator | 🔴 High, 🟡 Normal, ⚪ Low (color-coded dot) |
| Reference | FIN-042 — workstream prefix + number |
| Title | Primary description |
| Due date | Absolute date, turns red when overdue |
| Project | Which deal (shows only if multi-project) |
| Workstream | Finance, Legal, etc. |
| From | Who routed it to you |
| Preview | First line of request body (truncated) |
4.3 View Options
- All — everything assigned to you
- Overdue — past due date
- Due Today — due within 24h
- Waiting — tasks you forwarded, pending return
4.4 Batch Actions
Select multiple → Mark done, Forward, Change priority
4.5 Empty State
┌─────────────────────────────────────────────────────────────┐
│ │
│ ✓ You're all caught up │
│ │
│ No tasks need your attention right now. │
│ │
└─────────────────────────────────────────────────────────────┘
5. Request Detail View
The thread behind every task.
5.1 Layout
┌─────────────────────────────────────────────────────────────┐
│ ← Back to Inbox │
├─────────────────────────────────────────────────────────────┤
│ FIN-042 Audited financials FY2024 🔴 │
│ Project Alpha • Finance • Due: March 15, 2026 │
├─────────────────────────────────────────────────────────────┤
│ ROUTING │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Acme Capital (Buyer) → IB Analyst → CFO → ★ YOU │ │
│ │ │ │ │
│ │ [Mark Done] │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ THREAD │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ J. Smith (IB) — Feb 25, 10:30am │ │
│ │ Please provide audited financial statements for FY2024. │
│ │ We need P&L, balance sheet, and cash flow. │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ M. Chen (CFO) — Feb 26, 2:15pm │ │
│ │ @accountant Can you pull these from the ERP? │ │
│ │ Attaching last year's format for reference. │ │
│ │ 📎 fy2023-financials-format.xlsx │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ YOUR RESPONSE │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Write a message... │ │
│ │ │ │
│ │ [📎] [Send] │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
5.2 Routing Chain Visibility
| Role | Sees |
|---|---|
| Worker | Just: "From: CFO" and "Returns to: CFO when done" |
| Seller admin | Full internal chain within seller org |
| IB admin | Complete chain including external origin |
Workers don't need to see the full buyer→IB→CFO→accountant chain. They see their immediate context: who gave it to them, who it goes back to.
5.3 Actions by Role
| Role | Available Actions |
|---|---|
| Worker | Reply, Upload, Mark Done |
| Seller admin | Above + Forward, Reassign, Change Due Date |
| IB member | Above + Approve, Reject, Publish |
| IB admin | Full control |
5.4 Status Transitions
Worker marks done
→ Task moves to return_to person's inbox
→ Worker sees "Sent to CFO for review" confirmation
CFO approves
→ Task moves to IB analyst's inbox
→ Status: "Pending vetting"
IB approves
→ Answer published to data room
→ All linked buyers notified
→ Status: "Published"
6. Data Room View (Buyer-Facing)
6.1 Layout
┌─────────────────────────────────────────────────────────────┐
│ DATA ROOM [Request Info] │
├─────────────────────────────────────────────────────────────┤
│ Finance │ Legal │ IT │ HR │ Operations │
├─────────────────────────────────────────────────────────────┤
│ FINANCE │
│ ├── Financial Statements │
│ │ ├── 📄 Audited Financials FY2024.pdf 2.3 MB │ │
│ │ ├── 📄 Audited Financials FY2023.pdf 2.1 MB │ │
│ │ └── 📄 Management Accounts Q1 2025.xlsx 845 KB │ │
│ ├── Tax Documents │
│ │ ├── 📄 Corporate Tax Returns 2024.pdf 1.8 MB │ │
│ │ └── 📄 Tax Compliance Cert.pdf 234 KB │ │
│ └── Revenue Analysis │
│ └── 📄 Revenue Breakdown by Segment.xlsx 1.2 MB │ │
└─────────────────────────────────────────────────────────────┘
6.2 Features
- Workstream tabs — filter documents by category
- Folder structure — mirrors request list organization
- Quick actions — Download, Preview (in-browser with watermark)
- Search — full-text search across all published documents
- Request Info — submit a new request for information
6.3 Document Preview
In-browser preview with dynamic watermark:
John Smith · Acme Capital · Feb 28, 2026 10:30 AM · CONFIDENTIAL
Watermark rendered at serve time. No "clean" version ever served.
7. Navigation Components
7.1 Project Selector
<select class="project-select">
<option>Project Alpha — TargetCo Acquisition</option>
<option>Project Beta — MergeCo Deal</option>
</select>
- One line. Always visible. Never a sidebar.
- Workers (single project): selector hidden
- Multi-project users: dropdown in header
7.2 Workstream Tabs
<nav class="workstream-tabs">
<a href="#" class="active">Finance</a>
<a href="#">Legal</a>
<a href="#">IT</a>
<a href="#">HR</a>
<a href="#">Operations</a>
</nav>
- Horizontal tabs below header
- Active state: underline + bold
- Badge shows pending count per workstream
7.3 Global Header
<header class="global-header">
<div class="logo">Dealspace</div>
<select class="project-select">...</select>
<nav class="global-nav">
<a href="/inbox" class="inbox-link">
Inbox <span class="badge">3</span>
</a>
<div class="user-menu">
<img src="avatar.jpg" class="avatar" />
<span class="user-name">J. Smith</span>
</div>
</nav>
</header>
8. Status Indicators
8.1 Priority
| Priority | Indicator | CSS Class |
|---|---|---|
| High | 🔴 Red dot | .priority-high |
| Normal | 🟡 Amber dot | .priority-normal |
| Low | ⚪ Gray dot | .priority-low |
8.2 Due Date States
| State | Styling |
|---|---|
| Future | Normal text, muted color |
| Due Today | Bold, warning color |
| Overdue | Bold, error color, badge |
8.3 Request Status
| Status | Badge | Color |
|---|---|---|
| Open | OPEN | Gray |
| Assigned | ASSIGNED | Blue |
| Answered | ANSWERED | Amber |
| Vetted | VETTED | Purple |
| Published | PUBLISHED | Green |
| Closed | CLOSED | Gray muted |
8.4 Workstream Badges
Show count of items needing attention:
<a href="#">Finance <span class="badge">5</span></a>
Badge colors:
- Red: overdue items
- Amber: due today
- Gray: pending but not urgent
9. Theme System
9.1 Core Principle
Zero hardcoded colors. Every visual property references a CSS custom property.
9.2 Property Taxonomy
/* Surface colors */
--color-bg-primary /* Main background */
--color-bg-secondary /* Cards, panels */
--color-bg-tertiary /* Nested elements */
--color-bg-inverse /* Inverted sections */
/* Text colors */
--color-text-primary /* Body text */
--color-text-secondary /* Muted text */
--color-text-tertiary /* Placeholders */
--color-text-inverse /* On dark backgrounds */
/* Border colors */
--color-border-primary /* Default borders */
--color-border-secondary /* Subtle dividers */
/* Semantic colors */
--color-accent /* Primary action, links */
--color-accent-hover /* Hover state */
--color-success /* Published, done */
--color-warning /* Due today, caution */
--color-error /* Overdue, rejected */
--color-info /* Informational */
/* Priority indicators */
--color-priority-high
--color-priority-normal
--color-priority-low
/* Status badges */
--color-status-open
--color-status-assigned
--color-status-answered
--color-status-vetted
--color-status-published
--color-status-closed
/* Component-specific */
--color-header-bg
--color-header-text
--color-sidebar-bg
--color-card-bg
--color-card-border
--color-input-bg
--color-input-border
--color-input-focus
/* Shadows */
--shadow-sm
--shadow-md
--shadow-lg
/* Spacing (not colors, but themeable) */
--radius-sm
--radius-md
--radius-lg
9.3 Built-in Themes
Light (default)
- Clean white backgrounds
- Dark text on light
- Subtle gray borders
Dark
- Dark gray backgrounds
- Light text on dark
- Reduced contrast borders
High Contrast
- True black/white
- Bold borders
- Maximum readability
9.4 Per-Project Themes
Projects can override:
--color-accent(brand primary)--color-header-bg(branded header)- Logo replacement
Applied via:
<html class="theme-light" data-project="alpha">
9.5 Theme Switching
No JavaScript framework required:
document.documentElement.className = 'theme-dark';
User preference stored in localStorage, synced to server on login.
10. Responsive Behavior
10.1 Breakpoints
| Name | Width | Behavior |
|---|---|---|
| Desktop | ≥1024px | Full layout |
| Tablet | 768-1023px | Condensed sidebar |
| Mobile | <768px | Stacked, bottom nav |
10.2 Mobile Adaptations
- Workstream tabs → horizontal scroll
- Task cards → full width
- Thread view → stacked messages
- Data room → accordion folders
10.3 Touch Targets
Minimum 44x44px for all interactive elements.
11. Accessibility
11.1 Requirements
- WCAG 2.1 AA compliance
- Keyboard navigation (all actions)
- Screen reader support (ARIA labels)
- Focus indicators (visible, high contrast)
- Color not sole indicator (icons + color)
11.2 High Contrast Mode
Built-in theme with:
- 7:1 contrast ratio (AAA)
- Bold borders
- No gradient backgrounds
- Underlined links
12. Implementation Notes
12.1 No Framework
Plain HTML + CSS + minimal JS. No React, Vue, or Tailwind runtime.
Tailwind-style utility classes are fine for mockups, but production CSS should be:
- Custom properties for theming
- Semantic class names
- Minimal specificity
12.2 Template Structure
portal/
templates/
base.html # Shell: head, header, footer
inbox.html # Task inbox
request.html # Request detail
deal.html # Deal overview (admin)
workstream.html # Workstream view
dataroom.html # Buyer data room
settings.html # Project settings
static/
themes.css # All theme definitions
components.css # Reusable component styles
layout.css # Grid, spacing
main.js # Minimal interactivity
12.3 Form Handling
Standard form submissions. No SPA routing. Progressive enhancement only.
13. Mockup Files
portal/templates/task-inbox.html— The worker's primary viewportal/templates/request-detail.html— Thread + routing + actionsportal/static/themes.css— Full theme variable definitions
This document defines UI/UX. Implementation follows the patterns. When in doubt, simpler wins.