dealspace/ONBOARDING-SPEC.md

92 KiB
Raw Permalink Blame History

Dealspace — Onboarding Flow Specification

Version: 0.1 — 2026-02-28
Status: Pre-implementation specification


1. Account Creation (IB Admin)

1.1 Registration Form

URL: https://app.muskepo.com/register

Form Fields:

┌─────────────────────────────────────────────────────────────┐
│                      Create Your Account                     │
├─────────────────────────────────────────────────────────────┤
│  Organization Name      [Goldman Sachs                    ]  │
│  Your Name              [Sarah Mitchell                   ]  │
│  Work Email             [sarah.mitchell@gs.com            ]  │
│  Password               [••••••••••••••                   ]  │
│  Confirm Password       [••••••••••••••                   ]  │
│                                                              │
│  □ I agree to the Terms of Service and Privacy Policy       │
│                                                              │
│           [     Create Account     ]                         │
│                                                              │
│  Already have an account? Sign in                            │
└─────────────────────────────────────────────────────────────┘

Validation:

  • Email must be corporate domain (no gmail.com, yahoo.com, etc.) — soft warning, not hard block
  • Password: 12+ characters, at least one uppercase, one number, one special
  • Organization name: required, 2100 characters

Data Created:

-- User record (pending verification)
INSERT INTO users (id, email, name, password_hash, org_name, status, created_at)
VALUES ('usr_abc123', 'sarah.mitchell@gs.com', 'Sarah Mitchell', '$argon2id$...', 
        'Goldman Sachs', 'pending_verification', 1709136000000);

1.2 Email Verification Flow

Email sent immediately after form submission:

Subject: Verify your Dealspace account

Hi Sarah,

Click below to verify your email and activate your Dealspace account:

[Verify Email Address]
https://app.muskepo.com/verify?token=abc123def456

This link expires in 24 hours.

If you didn't create this account, you can safely ignore this email.

—
The Dealspace Team

On click:

  1. Token validated (single-use, 24h expiry)
  2. User status → pending_mfa
  3. Redirect to /setup/mfa

1.3 MFA Setup (Mandatory for IB Admin)

URL: https://app.muskepo.com/setup/mfa

Step-by-step flow:

┌─────────────────────────────────────────────────────────────┐
│              Set Up Two-Factor Authentication               │
│                                                              │
│  Step 1 of 3: Install Authenticator App                     │
│  ─────────────────────────────────────────────────────────  │
│                                                              │
│  Download one of these apps on your phone:                   │
│                                                              │
│  • Google Authenticator (iOS / Android)                      │
│  • Microsoft Authenticator (iOS / Android)                   │
│  • 1Password, Authy, or any TOTP app                        │
│                                                              │
│  Already have one? [Continue →]                              │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│              Set Up Two-Factor Authentication               │
│                                                              │
│  Step 2 of 3: Scan QR Code                                  │
│  ─────────────────────────────────────────────────────────  │
│                                                              │
│         ┌───────────────┐                                   │
│         │  [QR CODE]    │                                   │
│         │               │                                   │
│         └───────────────┘                                   │
│                                                              │
│  Can't scan? Enter this code manually:                       │
│  JBSWY3DPEHPK3PXP (tap to copy)                             │
│                                                              │
│                           [Continue →]                       │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│              Set Up Two-Factor Authentication               │
│                                                              │
│  Step 3 of 3: Verify Setup                                  │
│  ─────────────────────────────────────────────────────────  │
│                                                              │
│  Enter the 6-digit code from your authenticator app:        │
│                                                              │
│           [ 4 ] [ 7 ] [ 2 ] [ 9 ] [ 1 ] [ 5 ]              │
│                                                              │
│           [     Verify & Complete Setup     ]                │
└─────────────────────────────────────────────────────────────┘

On successful verification:

  1. TOTP secret stored (encrypted) in user record
  2. Recovery codes generated (10 codes, 8 characters each)
  3. User status → active
  4. Show recovery codes screen:
┌─────────────────────────────────────────────────────────────┐
│                    Save Your Recovery Codes                  │
│                                                              │
│  Store these in a safe place. You'll need them if you       │
│  lose access to your authenticator app.                      │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  1. XKCD-7843    6. BEEF-2947                       │    │
│  │  2. PASS-9126    7. DORK-5182                       │    │
│  │  3. MOON-4521    8. JAZZ-7394                       │    │
│  │  4. TREE-8734    9. FORK-6215                       │    │
│  │  5. WAVE-3069   10. LAMP-9847                       │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  [Download as PDF]  [Copy to clipboard]                      │
│                                                              │
│  □ I have saved my recovery codes                            │
│                                                              │
│           [     Continue to Dealspace     ]                  │
└─────────────────────────────────────────────────────────────┘

1.4 First Login Experience

URL: https://app.muskepo.com/app

User lands on an empty dashboard with a prominent call to action:

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE                              Goldman Sachs  |  Sarah Mitchell ▼  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│                                                                              │
│                         ┌──────────────────────────┐                        │
│                         │         📁              │                        │
│                         │                          │                        │
│                         │   No projects yet        │                        │
│                         │                          │                        │
│                         │   Create your first      │                        │
│                         │   deal to get started    │                        │
│                         │                          │                        │
│                         │  [+ Create Project]      │                        │
│                         │                          │                        │
│                         └──────────────────────────┘                        │
│                                                                              │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

2. First Project Setup Wizard

Clicking "Create Project" launches a 5-step wizard. Each step is a focused screen. Progress bar at top.

2.1 Step 1: Project Name + Deal Type

URL: https://app.muskepo.com/app/projects/new/basics

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Project                                    Step 1 of 5 ━━━○○○○     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   Project Name                                                               │
│   [TechCorp Acquisition - Project Phoenix                              ]    │
│                                                                              │
│   Deal Type                                                                  │
│   ┌───────────────────┐  ┌───────────────────┐                              │
│   │  ○ Sell-side      │  │  ○ Buy-side       │                              │
│   │    M&A Advisory   │  │    M&A Advisory   │                              │
│   └───────────────────┘  └───────────────────┘                              │
│   ┌───────────────────┐  ┌───────────────────┐                              │
│   │  ○ Merger         │  │  ○ Other          │                              │
│   │                   │  │                   │                              │
│   └───────────────────┘  └───────────────────┘                              │
│                                                                              │
│   Code Name (optional, shown to buyers instead of project name)             │
│   [Project Phoenix                                                     ]    │
│                                                                              │
│                                               [Cancel]  [Next: Workstreams]  │
└─────────────────────────────────────────────────────────────────────────────┘

Data Created (in memory, not persisted until Step 5):

{
  "name": "TechCorp Acquisition - Project Phoenix",
  "deal_type": "sell_side",
  "code_name": "Project Phoenix",
  "workstreams": [],
  "team": [],
  "seller_contacts": []
}

2.2 Step 2: Configure Workstreams

URL: https://app.muskepo.com/app/projects/new/workstreams

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Project                                    Step 2 of 5 ━━━━○○○     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   Configure Workstreams                                                      │
│                                                                              │
│   These are the areas your deal will cover. You can add, remove, or         │
│   rename them. Each workstream has its own access controls.                 │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────┐       │
│   │  ☑ Finance        [Edit name]                          [Remove] │       │
│   │  ☑ Legal          [Edit name]                          [Remove] │       │
│   │  ☑ IT             [Edit name]                          [Remove] │       │
│   │  ☑ HR             [Edit name]                          [Remove] │       │
│   │  ☑ Operations     [Edit name]                          [Remove] │       │
│   │  ☐ Tax            [Edit name]                          [Remove] │       │
│   │  ☐ Commercial     [Edit name]                          [Remove] │       │
│   │  ☐ Environmental  [Edit name]                          [Remove] │       │
│   └─────────────────────────────────────────────────────────────────┘       │
│                                                                              │
│   [+ Add Custom Workstream]                                                  │
│                                                                              │
│                                      [Back]  [Next: Invite Team]             │
└─────────────────────────────────────────────────────────────────────────────┘

Default workstreams (pre-checked):

  • Finance
  • Legal
  • IT
  • HR
  • Operations

Additional suggestions (unchecked):

  • Tax
  • Commercial
  • Environmental
  • Regulatory
  • Insurance

Custom workstream modal:

┌────────────────────────────────────┐
│  Add Workstream                    │
│                                    │
│  Name: [IP & Patents            ]  │
│                                    │
│  [Cancel]  [Add Workstream]        │
└────────────────────────────────────┘

2.3 Step 3: Invite IB Team Members

URL: https://app.muskepo.com/app/projects/new/team

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Project                                    Step 3 of 5 ━━━━━○○     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   Invite Your Team                                                           │
│   Add team members and assign them to workstreams.                          │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  Email                  Name              Role         Workstreams  │   │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │  mike@gs.com           Mike Chen         ib_member    Finance, Tax  │   │
│   │  [Edit]  [Remove]                                                   │   │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │  jen@gs.com            Jen Park          ib_member    Legal         │   │
│   │  [Edit]  [Remove]                                                   │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   [+ Add Team Member]                                                        │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│   Or paste multiple emails (one per line):                                   │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │ alex@gs.com                                                         │   │
│   │ david@gs.com                                                        │   │
│   │ lisa@gs.com                                                         │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│   [Parse & Add]                                                              │
│                                                                              │
│                                      [Back]  [Next: Invite Seller]           │
└─────────────────────────────────────────────────────────────────────────────┘

Add team member modal:

┌─────────────────────────────────────────────────────────────┐
│  Add Team Member                                            │
│                                                              │
│  Email Address                                               │
│  [mike.chen@gs.com                                        ]  │
│                                                              │
│  Full Name                                                   │
│  [Mike Chen                                               ]  │
│                                                              │
│  Role                                                        │
│  ○ IB Admin (full access, can manage project)               │
│  ● IB Member (manage requests + vet answers in workstreams) │
│                                                              │
│  Workstream Access                                           │
│  ☑ Finance                                                   │
│  ☐ Legal                                                     │
│  ☐ IT                                                        │
│  ☐ HR                                                        │
│  ☐ Operations                                                │
│  ☑ Tax                                                       │
│                                                              │
│  [Cancel]  [Add to Team]                                     │
└─────────────────────────────────────────────────────────────┘

2.4 Step 4: Invite Seller Contacts

URL: https://app.muskepo.com/app/projects/new/seller

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Project                                    Step 4 of 5 ━━━━━━○     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   Invite Seller Team                                                         │
│   Add the sell-side company's contacts. They'll receive access invites.    │
│                                                                              │
│   Seller Organization Name                                                   │
│   [TechCorp Inc.                                                        ]   │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  Email                  Name              Title          Role       │   │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │  john.smith@techcorp.   John Smith        CFO            seller_    │   │
│   │  com                                                     admin      │   │
│   │  [Edit]  [Remove]                                                   │   │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │  mary.johnson@techcorp  Mary Johnson      Controller     seller_    │   │
│   │  .com                                                    member     │   │
│   │  [Edit]  [Remove]                                                   │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   [+ Add Seller Contact]                                                     │
│                                                                              │
│   ⓘ Seller Admin can manage their team and see all workstreams.            │
│   ⓘ Seller Members only see assigned workstreams.                          │
│                                                                              │
│                                      [Back]  [Next: Review & Launch]         │
└─────────────────────────────────────────────────────────────────────────────┘

Add seller contact modal:

┌─────────────────────────────────────────────────────────────┐
│  Add Seller Contact                                         │
│                                                              │
│  Email Address                                               │
│  [john.smith@techcorp.com                                 ]  │
│                                                              │
│  Full Name                                                   │
│  [John Smith                                              ]  │
│                                                              │
│  Title                                                       │
│  [CFO                                                     ]  │
│                                                              │
│  Role                                                        │
│  ● Seller Admin (manage seller team, all workstreams)       │
│  ○ Seller Member (answer requests in assigned workstreams)  │
│                                                              │
│  Workstream Access (for Seller Member only)                  │
│  ☑ Finance                                                   │
│  ☐ Legal                                                     │
│  ...                                                         │
│                                                              │
│  [Cancel]  [Add Contact]                                     │
└─────────────────────────────────────────────────────────────┘

2.5 Step 5: Review & Launch

URL: https://app.muskepo.com/app/projects/new/review

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Project                                    Step 5 of 5 ━━━━━━━     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   Review & Launch                                                            │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  PROJECT DETAILS                                                    │   │
│   │  Name: TechCorp Acquisition - Project Phoenix                       │   │
│   │  Code Name: Project Phoenix (shown to buyers)                       │   │
│   │  Type: Sell-side M&A Advisory                          [Edit]      │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  WORKSTREAMS (5)                                                    │   │
│   │  Finance · Legal · IT · HR · Operations                [Edit]      │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  YOUR TEAM (3 invites will be sent)                                │   │
│   │  • Mike Chen (mike@gs.com) — IB Member, Finance + Tax              │   │
│   │  • Jen Park (jen@gs.com) — IB Member, Legal                        │   │
│   │  • Alex Wong (alex@gs.com) — IB Member, IT                [Edit]   │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  SELLER TEAM (2 invites will be sent)                              │   │
│   │  • John Smith (john.smith@techcorp.com) — Seller Admin             │   │
│   │  • Mary Johnson (mary.johnson@techcorp.com) — Seller Member        │   │
│   │                                                            [Edit]   │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   ⓘ 5 invitation emails will be sent when you launch.                      │
│                                                                              │
│                                      [Back]  [Launch Project →]              │
└─────────────────────────────────────────────────────────────────────────────┘

2.6 Data Created on Launch

Database operations (single transaction):

-- Project entry
INSERT INTO entries (entry_id, project_id, parent_id, type, depth, search_key, summary, data, stage)
VALUES ('prj_abc123', 'prj_abc123', '', 'project', 0, 'techcorp-acquisition', 
        'TechCorp Acquisition - Project Phoenix', 
        PACK('{"name":"...","code_name":"...","deal_type":"sell_side","seller_org":"TechCorp Inc."}'),
        'pre_dataroom');

-- Workstream entries (5x)
INSERT INTO entries (entry_id, project_id, parent_id, type, depth, search_key, summary, data, stage)
VALUES 
  ('ws_fin', 'prj_abc123', 'prj_abc123', 'workstream', 1, 'finance', 'Finance', PACK('{}'), 'pre_dataroom'),
  ('ws_leg', 'prj_abc123', 'prj_abc123', 'workstream', 1, 'legal', 'Legal', PACK('{}'), 'pre_dataroom'),
  ('ws_it', 'prj_abc123', 'prj_abc123', 'workstream', 1, 'it', 'IT', PACK('{}'), 'pre_dataroom'),
  ('ws_hr', 'prj_abc123', 'prj_abc123', 'workstream', 1, 'hr', 'HR', PACK('{}'), 'pre_dataroom'),
  ('ws_ops', 'prj_abc123', 'prj_abc123', 'workstream', 1, 'operations', 'Operations', PACK('{}'), 'pre_dataroom');

-- Access records (for creating IB admin)
INSERT INTO access (id, project_id, workstream_id, user_id, role, ops, granted_by, granted_at)
VALUES ('acc_001', 'prj_abc123', NULL, 'usr_sarah', 'ib_admin', 'rwdm', 'usr_sarah', 1709136000000);

-- Pending invitations (stored until accepted)
INSERT INTO invitations (id, project_id, email, name, role, workstream_ids, invited_by, expires_at)
VALUES 
  ('inv_001', 'prj_abc123', 'mike@gs.com', 'Mike Chen', 'ib_member', '["ws_fin"]', 'usr_sarah', ...),
  ('inv_002', 'prj_abc123', 'jen@gs.com', 'Jen Park', 'ib_member', '["ws_leg"]', 'usr_sarah', ...),
  ('inv_003', 'prj_abc123', 'john.smith@techcorp.com', 'John Smith', 'seller_admin', NULL, 'usr_sarah', ...),
  ('inv_004', 'prj_abc123', 'mary.johnson@techcorp.com', 'Mary Johnson', 'seller_member', '["ws_fin"]', 'usr_sarah', ...);

2.7 Emails Sent on Launch

To IB team members (3x): See Section 6.1 — IB Team Invite Email

To Seller contacts (2x): See Section 6.2 — Seller Invite Email

2.8 Post-Launch Screen

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [TechCorp Acquisition ▼]          Goldman Sachs | Sarah ▼    │
├─────────────────────────────────────────────────────────────────────────────┤
│  Finance | Legal | IT | HR | Operations                                     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   ✓ Project Created                                                         │
│                                                                              │
│   5 invitations sent. Here's what happens next:                             │
│                                                                              │
│   1. Your team accepts their invitations                                    │
│   2. Seller contacts accept and set up their accounts                       │
│   3. Create your first request list to start the due diligence             │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  Ready to start?                                                    │   │
│   │                                                                      │   │
│   │  [+ Create Request List]    [View Team Status]                      │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

3. Invite Flow (Seller Side)

3.1 Seller Invite Email

The actual email the Seller CFO receives:

From: TechCorp Acquisition via Dealspace <noreply@muskepo.com>
Reply-To: sarah.mitchell@gs.com
To: john.smith@techcorp.com
Subject: You've been invited to Project Phoenix

───────────────────────────────────────────────────────────────────────

Hi John,

Sarah Mitchell from Goldman Sachs has invited you to join the 
due diligence process for Project Phoenix.

You've been assigned as Seller Admin, which means you can:
• See all requests from the deal team
• Assign tasks to your colleagues
• Manage your team's access and responses

[Accept Invitation]
https://app.muskepo.com/invite/abc123def456

This invitation expires in 7 days. If you have questions, reply 
to this email to reach Sarah directly.

───────────────────────────────────────────────────────────────────────

What is Dealspace?
Dealspace is a secure platform for managing M&A due diligence. 
All documents are encrypted and watermarked. You control what 
gets shared and when.

Questions? Contact support@muskepo.com

3.2 Invitation Landing Page

URL: https://app.muskepo.com/invite/abc123def456

For new users (no existing account):

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│   ┌───────────────────────────────────────────────────────────────────────┐ │
│   │                                                                        │ │
│   │                    You're invited to                                   │ │
│   │                    PROJECT PHOENIX                                     │ │
│   │                                                                        │ │
│   │    Goldman Sachs has invited you to participate in this deal.         │ │
│   │                                                                        │ │
│   │    Your Role: Seller Admin                                            │ │
│   │    Organization: TechCorp Inc.                                        │ │
│   │                                                                        │ │
│   └───────────────────────────────────────────────────────────────────────┘ │
│                                                                              │
│   Create Your Account                                                        │
│                                                                              │
│   Email (pre-filled, read-only)                                             │
│   [john.smith@techcorp.com                                              ]   │
│                                                                              │
│   Your Name                                                                  │
│   [John Smith                                                           ]   │
│                                                                              │
│   Create Password                                                            │
│   [••••••••••••                                                         ]   │
│   12+ characters, including uppercase, number, and special character        │
│                                                                              │
│   Confirm Password                                                           │
│   [••••••••••••                                                         ]   │
│                                                                              │
│   □ I agree to the Terms of Service and Privacy Policy                      │
│                                                                              │
│           [     Create Account & Join Project     ]                          │
│                                                                              │
│   Already have an account? Sign in                                           │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

3.3 MFA Setup (Seller)

For seller_admin: strongly recommended (shown after account creation) For seller_member: optional (can skip)

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│   Secure Your Account                                                        │
│                                                                              │
│   Two-factor authentication adds an extra layer of security.               │
│   Goldman Sachs recommends enabling this for all deal participants.        │
│                                                                              │
│   [Set Up Two-Factor Authentication]                                        │
│                                                                              │
│   [Skip for now — I'll do this later]                                       │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

3.4 First Login: Seller Task Inbox

URL: https://app.muskepo.com/app (after accepting invite)

On first login, the Seller Admin sees their task inbox — which is likely empty until the IB team creates request lists.

Empty state (no requests yet):

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [Project Phoenix ▼]                   TechCorp | John ▼      │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   MY TASKS                                            [All Workstreams ▼]   │
│                                                                              │
│                         ┌──────────────────────────┐                        │
│                         │         ✓               │                        │
│                         │                          │                        │
│                         │   No tasks yet           │                        │
│                         │                          │                        │
│                         │   Goldman Sachs hasn't   │                        │
│                         │   sent any requests yet. │                        │
│                         │   We'll notify you when  │                        │
│                         │   they do.               │                        │
│                         │                          │                        │
│                         └──────────────────────────┘                        │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│   While you wait, you can:                                                   │
│   • [Invite your team members]                                              │
│   • [Set up your profile]                                                   │
│   • [Review the quick start guide]                                          │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

When requests exist (typical first login):

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [Project Phoenix ▼]                   TechCorp | John ▼      │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   MY TASKS                          [Filter ▼]  [Sort: Due Date ▼]  🔍     │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │  You have 12 new requests                                           │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   FINANCE (8)                                                                │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │ ⚡ FIN-001  Audited financial statements FY2023-2024                │   │
│   │    Due: Mar 15  •  High Priority  •  Assigned to: You              [→] │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │    FIN-002  Revenue breakdown by product line                       │   │
│   │    Due: Mar 18  •  Normal  •  Assigned to: You                     [→] │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │    FIN-003  Accounts receivable aging report                        │   │
│   │    Due: Mar 18  •  Normal  •  Assigned to: Mary Johnson            [→] │
│   └─────────────────────────────────────────────────────────────────────┘   │
│   [Show 5 more...]                                                          │
│                                                                              │
│   LEGAL (4)                                                                  │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │    LEG-001  Material contracts list                                 │   │
│   │    Due: Mar 20  •  High Priority  •  Assigned to: You              [→] │
│   └─────────────────────────────────────────────────────────────────────┘   │
│   [Show 3 more...]                                                          │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

4. First Request List

4.1 Creating a Request List

IB member navigates to a workstream and clicks "New Request List"

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [TechCorp Acquisition ▼]          Goldman Sachs | Mike ▼     │
├─────────────────────────────────────────────────────────────────────────────┤
│  Finance | Legal | IT | HR | Operations                                     │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   FINANCE — Request Lists                                                    │
│                                                                              │
│   [+ New Request List]   [Import from Excel]                                │
│                                                                              │
│   (No request lists yet)                                                     │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

4.2 New Request List Modal

┌─────────────────────────────────────────────────────────────────────────────┐
│  Create Request List                                                         │
│                                                                              │
│   List Name                                                                  │
│   [Initial Finance DD Requests                                          ]   │
│                                                                              │
│   Description (optional)                                                     │
│   [First round of financial due diligence requests for Project Phoenix  ]   │
│                                                                              │
│   Default Due Date                                                           │
│   [2026-03-15                    ]  (can be overridden per request)         │
│                                                                              │
│   Default Assignee                                                           │
│   [John Smith (Seller Admin) ▼   ]  (can be overridden per request)         │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│                                                                              │
│   How would you like to add requests?                                        │
│                                                                              │
│   ○ Add requests manually (one at a time)                                   │
│   ● Import from Excel template                                              │
│     [Download Template]                                                      │
│                                                                              │
│   [Cancel]  [Create List]                                                    │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

4.3 Excel Import Template

File: dealspace-request-template.xlsx

Column Header Required Description Valid Values
A ref No Reference number (auto-generated if blank) e.g., FIN-001
B title Yes Request title Max 200 chars
C description No Detailed description Max 5000 chars
D priority No Priority level high, normal, low (default: normal)
E due_date No Due date YYYY-MM-DD (default: list default)
F assigned_to No Assignee email Must be valid seller email

Sample template content:

ref       title                                     description                                            priority  due_date    assigned_to
FIN-001   Audited financial statements FY2023-2024  Complete audited financials for the last two fiscal... high      2026-03-15  john.smith@techcorp.com
FIN-002   Revenue breakdown by product line         Monthly revenue by product line for last 24 months    normal    2026-03-18  john.smith@techcorp.com
FIN-003   Accounts receivable aging report          Current AR aging as of latest month-end               normal    2026-03-18  mary.johnson@techcorp.com
FIN-004   Accounts payable aging report             Current AP aging as of latest month-end               normal    2026-03-18  mary.johnson@techcorp.com
FIN-005   Cash flow projections FY2025-2027         3-year projected cash flows                           high      2026-03-20  john.smith@techcorp.com
FIN-006   Bank statements (all accounts)            Last 12 months of bank statements for all accounts    normal    2026-03-22
FIN-007   Debt schedule                             Current debt obligations with terms and covenants     high      2026-03-18  john.smith@techcorp.com
FIN-008   Capital expenditure history               CapEx by category for last 3 years                    normal    2026-03-25  mary.johnson@techcorp.com

4.4 Import Preview Screen

┌─────────────────────────────────────────────────────────────────────────────┐
│  Import Requests — Preview                                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   ✓ 8 requests parsed successfully                                          │
│                                                                              │
│   ┌─────────────────────────────────────────────────────────────────────┐   │
│   │ Ref     Title                              Priority  Due       To   │   │
│   ├─────────────────────────────────────────────────────────────────────┤   │
│   │ FIN-001 Audited financial statements...    ⚡ High    Mar 15   JS  │   │
│   │ FIN-002 Revenue breakdown by product...        —      Mar 18   JS  │   │
│   │ FIN-003 Accounts receivable aging...           —      Mar 18   MJ  │   │
│   │ FIN-004 Accounts payable aging...              —      Mar 18   MJ  │   │
│   │ FIN-005 Cash flow projections...           ⚡ High    Mar 20   JS  │   │
│   │ FIN-006 Bank statements (all accounts)         —      Mar 22   —   │   │
│   │ FIN-007 Debt schedule                      ⚡ High    Mar 18   JS  │   │
│   │ FIN-008 Capital expenditure history            —      Mar 25   MJ  │   │
│   └─────────────────────────────────────────────────────────────────────┘   │
│                                                                              │
│   ⚠ 1 request has no assignee (FIN-006) — will be assigned to John Smith   │
│                                                                              │
│   □ Send notification emails to assignees now                               │
│   □ Send a single summary email per assignee (instead of per-request)       │
│                                                                              │
│   [Cancel]  [Back to Edit]  [Import 8 Requests →]                           │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

4.5 Notifications Fired

On import with "Send notification emails" checked:

  1. John Smith receives: "You have 6 new requests in Project Phoenix"
  2. Mary Johnson receives: "You have 2 new requests in Project Phoenix"

See Section 6.3 — New Tasks Notification for email copy.


5. The "Aha Moment"

5.1 For the Investment Bank

The moment: When the first answer comes back with documents attached, automatically indexed and searchable, and they click "Approve" to publish it to the data room — all in 3 clicks.

The comparison: In the old workflow, this would involve:

  1. Receiving email with attachment
  2. Downloading attachment
  3. Opening VDR
  4. Navigating to correct folder
  5. Uploading document
  6. Renaming to match convention
  7. Setting permissions
  8. Updating tracking spreadsheet
  9. Emailing confirmation

Design toward this:

  • Answer review screen shows document preview inline
  • One-click approve → "Published to Data Room" confirmation
  • Activity feed shows real-time: "FIN-001 answered → vetted → published"
  • Buyer count badge: "3 buyers can now see this"

5.2 For the Seller

The moment: When they upload their first answer and immediately see exactly what the bank is waiting on — a clear task list with priorities, due dates, and progress tracking, instead of hunting through email threads.

The comparison: In the old workflow:

  1. Receive request list via email (usually PDF or Word)
  2. Print it out / copy to spreadsheet
  3. Manually track who's doing what
  4. Hunt through email for clarifications
  5. Reply-all with attachments
  6. No visibility into whether IB received/reviewed

Design toward this:

  • Clear task inbox with filters (by workstream, priority, due date, assignee)
  • Progress bar per workstream: "Finance: 3/12 complete"
  • Real-time status: "Submitted → Under Review → Approved ✓"
  • Comments thread inline — no email back-and-forth
  • Mobile-friendly for on-the-go approvals

5.3 For the Buyer

The moment: When they submit a question and the AI matches it to an existing answer instantly — no waiting, no IB intermediary, just immediate access to relevant documents.

Design toward this:

  • Search bar prominent in data room
  • "Ask a question" that triggers AI matching
  • Instant match: "This might answer your question" with preview
  • If no match: "Your question has been submitted" with expected response time
  • Broadcast notification: "New answer matches your previous question"

6. Email Templates

6.1 IB Team Invite Email

From: Dealspace <noreply@muskepo.com>
Reply-To: sarah.mitchell@gs.com
To: mike.chen@gs.com
Subject: Join Project Phoenix on Dealspace

───────────────────────────────────────────────────────────────────────

Hi Mike,

Sarah Mitchell has invited you to join the deal team for 
Project Phoenix on Dealspace.

Your Role: IB Member
Workstreams: Finance, Tax

[Accept Invitation]
https://app.muskepo.com/invite/xyz789

This invitation expires in 7 days.

───────────────────────────────────────────────────────────────────────

Dealspace is Goldman Sachs' secure platform for managing M&A 
due diligence. If you have questions about this invitation, 
contact Sarah directly.

6.2 Seller Invite Email

From: Project Phoenix via Dealspace <noreply@muskepo.com>
Reply-To: sarah.mitchell@gs.com
To: john.smith@techcorp.com
Subject: You've been invited to Project Phoenix

───────────────────────────────────────────────────────────────────────

Hi John,

Sarah Mitchell from Goldman Sachs has invited you to join the 
due diligence process for Project Phoenix.

You've been assigned as Seller Admin, which means you can:
• View and respond to all due diligence requests
• Assign tasks to your colleagues
• Track your team's progress across all workstreams

[Accept Invitation]
https://app.muskepo.com/invite/abc123

This invitation expires in 7 days. If you have questions, 
reply to this email to reach Sarah directly.

───────────────────────────────────────────────────────────────────────

What is Dealspace?

Dealspace is a secure platform for managing M&A due diligence. 
All documents are encrypted and dynamically watermarked. You 
maintain full control over what gets shared and when.

Need help? Contact support@muskepo.com

6.3 New Tasks Notification

From: Project Phoenix via Dealspace <noreply@muskepo.com>
To: john.smith@techcorp.com
Subject: You have 6 new requests in Project Phoenix

───────────────────────────────────────────────────────────────────────

Hi John,

Goldman Sachs has sent you 6 new requests for Project Phoenix.

HIGH PRIORITY (3):
• FIN-001: Audited financial statements FY2023-2024 — Due Mar 15
• FIN-005: Cash flow projections FY2025-2027 — Due Mar 20
• FIN-007: Debt schedule — Due Mar 18

NORMAL PRIORITY (3):
• FIN-002: Revenue breakdown by product line — Due Mar 18
• FIN-006: Bank statements (all accounts) — Due Mar 22
• Plus 1 more

[View Your Tasks]
https://app.muskepo.com/app/tasks

───────────────────────────────────────────────────────────────────────

You're receiving this because you're assigned to requests in 
Project Phoenix. Manage notification preferences in your settings.

6.4 Answer Submitted — Needs Vetting

From: Project Phoenix via Dealspace <noreply@muskepo.com>
To: mike.chen@gs.com
Subject: [Action Required] Answer submitted: FIN-001 Audited financials

───────────────────────────────────────────────────────────────────────

Hi Mike,

John Smith from TechCorp has submitted an answer that needs 
your review.

REQUEST: FIN-001 — Audited financial statements FY2023-2024
SUBMITTED: 2 files attached
• TechCorp_Audited_Financials_2023.pdf (2.4 MB)
• TechCorp_Audited_Financials_2024.pdf (2.8 MB)

COMMENT FROM SELLER:
"Attached are the audited financials for FY2023 and FY2024. 
The 2024 audit was completed last month. Let me know if you 
need the management letters as well."

[Review & Approve]
https://app.muskepo.com/app/review/ans_xyz123

───────────────────────────────────────────────────────────────────────

Once approved, this answer will be published to the data room 
and visible to all authorized buyers.

6.5 Answer Approved / Rejected (Seller Notification)

Approved:

From: Project Phoenix via Dealspace <noreply@muskepo.com>
To: john.smith@techcorp.com
Subject: ✓ Answer approved: FIN-001 Audited financials

───────────────────────────────────────────────────────────────────────

Hi John,

Your answer to FIN-001 has been approved and published to 
the data room.

REQUEST: FIN-001 — Audited financial statements FY2023-2024
STATUS: ✓ Published to Data Room
APPROVED BY: Mike Chen (Goldman Sachs)

[View in Data Room]
https://app.muskepo.com/app/dataroom/ans_xyz123

───────────────────────────────────────────────────────────────────────

Rejected:

From: Project Phoenix via Dealspace <noreply@muskepo.com>
To: john.smith@techcorp.com
Subject: ⚠ Revision requested: FIN-001 Audited financials

───────────────────────────────────────────────────────────────────────

Hi John,

Your answer to FIN-001 requires revision before it can be 
published.

REQUEST: FIN-001 — Audited financial statements FY2023-2024
STATUS: Revision Requested

FEEDBACK FROM MIKE CHEN:
"The 2024 financials are draft — we need the final audited 
version with the auditor's opinion letter. Please also include 
the management representation letters for both years."

[Update Your Answer]
https://app.muskepo.com/app/tasks/req_001

───────────────────────────────────────────────────────────────────────

Reply to this request directly in Dealspace to keep the 
conversation in one place.

6.6 New Answer Available in Data Room (Buyer Notification)

From: Project Phoenix via Dealspace <noreply@muskepo.com>
To: analyst@buyside-pe.com
Subject: New document available: Audited Financials

───────────────────────────────────────────────────────────────────────

A new document matching your interests is now available in the 
Project Phoenix data room.

DOCUMENT: Audited Financial Statements FY2023-2024
CATEGORY: Finance
ADDED: February 28, 2026

This document may be relevant to your previous question about 
"historical financial performance."

[View in Data Room]
https://app.muskepo.com/app/dataroom/ans_xyz123

───────────────────────────────────────────────────────────────────────

You're receiving this because you requested information about 
financial statements. Manage notification preferences in settings.

7. Empty States

7.1 IB Admin — No Projects

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE                              Goldman Sachs  |  Sarah Mitchell ▼  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│                                                                              │
│                         ┌──────────────────────────┐                        │
│                         │         📁              │                        │
│                         │                          │                        │
│                         │   No projects yet        │                        │
│                         │                          │                        │
│                         │   Dealspace helps you    │                        │
│                         │   run M&A due diligence  │                        │
│                         │   10x faster.            │                        │
│                         │                          │                        │
│                         │  [+ Create Your First    │                        │
│                         │      Project]            │                        │
│                         │                          │                        │
│                         └──────────────────────────┘                        │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│                                                                              │
│   Or explore with sample data:                                              │
│   [Load Demo Project] — See how a typical deal flows                        │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

7.2 Seller Member — Empty Task Inbox

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [Project Phoenix ▼]                   TechCorp | Mary ▼      │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   MY TASKS                                                                   │
│                                                                              │
│                         ┌──────────────────────────┐                        │
│                         │         ✓               │                        │
│                         │                          │                        │
│                         │   You're all caught up!  │                        │
│                         │                          │                        │
│                         │   No tasks assigned to   │                        │
│                         │   you right now.         │                        │
│                         │                          │                        │
│                         └──────────────────────────┘                        │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│                                                                              │
│   Your completed tasks (3):                                                  │
│   • FIN-003: Accounts receivable aging — Approved ✓                         │
│   • FIN-004: Accounts payable aging — Approved ✓                            │
│   • FIN-008: Capital expenditure history — Under Review                     │
│                                                                              │
│   [View Completed Tasks]                                                     │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

7.3 Buyer — Empty Data Room

┌─────────────────────────────────────────────────────────────────────────────┐
│  DEALSPACE    [Project Phoenix ▼]              Blackstone | James ▼        │
├─────────────────────────────────────────────────────────────────────────────┤
│  Data Room | My Questions                                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│   DATA ROOM                                  🔍 Search documents...         │
│                                                                              │
│                         ┌──────────────────────────┐                        │
│                         │         📂              │                        │
│                         │                          │                        │
│                         │   Data room is being     │                        │
│                         │   prepared               │                        │
│                         │                          │                        │
│                         │   The sell-side team is  │                        │
│                         │   gathering documents.   │                        │
│                         │   We'll notify you when  │                        │
│                         │   materials are ready.   │                        │
│                         │                          │                        │
│                         └──────────────────────────┘                        │
│                                                                              │
│   ──────────────────────────────────────────────────────────────────────    │
│                                                                              │
│   In the meantime:                                                          │
│   [Submit Questions] — Tell us what you're looking for                      │
│   [View Deal Summary] — Overview of Project Phoenix                         │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

8. Demo Data

8.1 Seed Script Concept

// cmd/seed/main.go
// Run: go run ./cmd/seed --demo

package main

func seedDemoProject(db *sql.DB) {
    // 1. Create organizations
    gsOrg := createOrg("Goldman Sachs", "gs.com")
    techCorpOrg := createOrg("TechCorp Inc.", "techcorp.com")
    blackstoneOrg := createOrg("Blackstone", "blackstone.com")
    baincapOrg := createOrg("Bain Capital", "baincapital.com")
    
    // 2. Create users
    // Goldman Sachs (IB)
    sarahIB := createUser("sarah.mitchell@gs.com", "Sarah Mitchell", gsOrg, "ib_admin")
    mikeIB := createUser("mike.chen@gs.com", "Mike Chen", gsOrg, "ib_member")
    jenIB := createUser("jen.park@gs.com", "Jen Park", gsOrg, "ib_member")
    alexIB := createUser("alex.wong@gs.com", "Alex Wong", gsOrg, "ib_member")
    
    // TechCorp (Seller)
    johnSeller := createUser("john.smith@techcorp.com", "John Smith", techCorpOrg, "seller_admin")
    marySeller := createUser("mary.johnson@techcorp.com", "Mary Johnson", techCorpOrg, "seller_member")
    tomSeller := createUser("tom.wilson@techcorp.com", "Tom Wilson", techCorpOrg, "seller_member")
    lisaSeller := createUser("lisa.chen@techcorp.com", "Lisa Chen", techCorpOrg, "seller_member")
    
    // Buyers
    jamesBuyer := createUser("james.lee@blackstone.com", "James Lee", blackstoneOrg, "buyer_admin")
    emilaBuyer := createUser("emily.davis@baincapital.com", "Emily Davis", baincapOrg, "buyer_admin")
    
    // 3. Create project
    project := createProject(ProjectInput{
        Name:      "TechCorp Acquisition - Project Phoenix",
        CodeName:  "Project Phoenix",
        DealType:  "sell_side",
        SellerOrg: techCorpOrg,
        CreatedBy: sarahIB,
    })
    
    // 4. Create workstreams
    financeWS := createWorkstream(project, "Finance", "finance")
    legalWS := createWorkstream(project, "Legal", "legal")
    itWS := createWorkstream(project, "IT", "it")
    
    // 5. Assign access
    // IB team
    grantAccess(sarahIB, project, nil, "ib_admin")
    grantAccess(mikeIB, project, financeWS, "ib_member")
    grantAccess(jenIB, project, legalWS, "ib_member")
    grantAccess(alexIB, project, itWS, "ib_member")
    
    // Seller team
    grantAccess(johnSeller, project, nil, "seller_admin")
    grantAccess(marySeller, project, financeWS, "seller_member")
    grantAccess(tomSeller, project, legalWS, "seller_member")
    grantAccess(lisaSeller, project, itWS, "seller_member")
    
    // Buyers (data room only)
    grantAccess(jamesBuyer, project, nil, "buyer_admin")
    grantAccess(emilaBuyer, project, nil, "buyer_admin")
    
    // 6. Create Finance request list
    financeRL := createRequestList(RequestListInput{
        Name:        "Initial Finance DD",
        Workstream:  financeWS,
        CreatedBy:   mikeIB,
        DefaultDue:  time.Now().Add(14 * 24 * time.Hour),
    })
    
    // Finance requests (mix of statuses for realism)
    createRequest(financeRL, RequestInput{
        Ref:        "FIN-001",
        Title:      "Audited financial statements FY2023-2024",
        Priority:   "high",
        AssignedTo: johnSeller,
        Status:     "published", // Already in data room
    })
    createRequest(financeRL, RequestInput{
        Ref:        "FIN-002",
        Title:      "Revenue breakdown by product line",
        Priority:   "normal",
        AssignedTo: marySeller,
        Status:     "vetted", // Approved, pending publish
    })
    createRequest(financeRL, RequestInput{
        Ref:        "FIN-003",
        Title:      "Accounts receivable aging report",
        Priority:   "normal",
        AssignedTo: marySeller,
        Status:     "submitted", // Awaiting IB review
    })
    createRequest(financeRL, RequestInput{
        Ref:        "FIN-004",
        Title:      "Accounts payable aging report",
        Priority:   "normal",
        AssignedTo: marySeller,
        Status:     "assigned", // Seller working on it
    })
    createRequest(financeRL, RequestInput{
        Ref:        "FIN-005",
        Title:      "Cash flow projections FY2025-2027",
        Priority:   "high",
        AssignedTo: johnSeller,
        Status:     "open", // Not started
    })
    
    // 7. Create Legal request list
    legalRL := createRequestList(RequestListInput{
        Name:       "Legal DD - Contracts & IP",
        Workstream: legalWS,
        CreatedBy:  jenIB,
    })
    
    createRequest(legalRL, RequestInput{
        Ref:        "LEG-001",
        Title:      "Material contracts list",
        Priority:   "high",
        AssignedTo: tomSeller,
        Status:     "submitted",
    })
    createRequest(legalRL, RequestInput{
        Ref:        "LEG-002",
        Title:      "Customer contracts (top 10 by revenue)",
        Priority:   "high",
        AssignedTo: tomSeller,
        Status:     "assigned",
    })
    createRequest(legalRL, RequestInput{
        Ref:        "LEG-003",
        Title:      "IP portfolio summary",
        Priority:   "normal",
        AssignedTo: tomSeller,
        Status:     "open",
    })
    createRequest(legalRL, RequestInput{
        Ref:        "LEG-004",
        Title:      "Pending litigation summary",
        Priority:   "high",
        AssignedTo: tomSeller,
        Status:     "open",
    })
    
    // 8. Create IT request list
    itRL := createRequestList(RequestListInput{
        Name:       "IT Infrastructure & Security",
        Workstream: itWS,
        CreatedBy:  alexIB,
    })
    
    createRequest(itRL, RequestInput{
        Ref:        "IT-001",
        Title:      "System architecture diagram",
        Priority:   "high",
        AssignedTo: lisaSeller,
        Status:     "published",
    })
    createRequest(itRL, RequestInput{
        Ref:        "IT-002",
        Title:      "Cloud infrastructure costs",
        Priority:   "normal",
        AssignedTo: lisaSeller,
        Status:     "submitted",
    })
    createRequest(itRL, RequestInput{
        Ref:        "IT-003",
        Title:      "Security audit report (SOC2)",
        Priority:   "high",
        AssignedTo: lisaSeller,
        Status:     "assigned",
    })
    
    // 9. Create sample answers for published requests
    createAnswer(AnswerInput{
        RequestRef: "FIN-001",
        Title:      "Audited Financial Statements FY2023-2024",
        Files:      []string{"TechCorp_Audited_FY2023.pdf", "TechCorp_Audited_FY2024.pdf"},
        SubmittedBy: johnSeller,
        ApprovedBy:  mikeIB,
        Status:      "published",
    })
    
    createAnswer(AnswerInput{
        RequestRef: "IT-001",
        Title:      "TechCorp System Architecture",
        Files:      []string{"TechCorp_Architecture_2026.pdf"},
        SubmittedBy: lisaSeller,
        ApprovedBy:  alexIB,
        Status:      "published",
    })
    
    // 10. Create sample buyer questions
    createBuyerQuestion(BuyerQuestionInput{
        Workstream: financeWS,
        AskedBy:    jamesBuyer,
        Question:   "Can you provide customer concentration analysis?",
        Status:     "pending", // No match, routed to IB
    })
    
    createBuyerQuestion(BuyerQuestionInput{
        Workstream: itWS,
        AskedBy:    emilaBuyer,
        Question:   "What's the tech stack?",
        Status:     "matched", // AI matched to IT-001
        MatchedTo:  "IT-001",
    })
    
    // 11. Create activity events for timeline
    createEvent(project, "Sarah Mitchell created Project Phoenix", sarahIB, -7*24*time.Hour)
    createEvent(project, "Initial Finance DD requests sent to TechCorp (12 items)", mikeIB, -6*24*time.Hour)
    createEvent(project, "John Smith accepted invitation", johnSeller, -5*24*time.Hour)
    createEvent(project, "FIN-001 submitted by John Smith", johnSeller, -3*24*time.Hour)
    createEvent(project, "FIN-001 approved and published to data room", mikeIB, -2*24*time.Hour)
    createEvent(project, "Blackstone joined as buyer", jamesBuyer, -1*24*time.Hour)
    createEvent(project, "Bain Capital joined as buyer", emilaBuyer, -12*time.Hour)
}

8.2 Demo Login Credentials

Role Email Password What they see
IB Admin sarah.mitchell@gs.com Demo2026! Full project dashboard, all workstreams
IB Member mike.chen@gs.com Demo2026! Finance workstream, vetting queue
Seller Admin john.smith@techcorp.com Demo2026! Task inbox with 12 requests
Seller Member mary.johnson@techcorp.com Demo2026! Task inbox with 4 Finance requests
Buyer Admin james.lee@blackstone.com Demo2026! Data room with 2 published docs

8.3 Demo Scenario Flow

For a live demo, walk through this sequence:

  1. Login as Sarah (IB Admin) — Show project overview, team status, request progress
  2. Switch to Mike (IB Member) — Show vetting queue, approve FIN-003, publish to data room
  3. Switch to John (Seller Admin) — Show task inbox, respond to FIN-004
  4. Switch to James (Buyer) — Show data room, new document notification, ask a question
  5. Back to Mike — Show buyer question routed, AI match suggestion

Demo data realism:

  • Mix of statuses (open → assigned → submitted → vetted → published)
  • Some high-priority items
  • Some overdue items (creates urgency)
  • Comment threads on submitted items
  • Activity timeline with realistic timestamps

9. Implementation Notes

9.1 API Endpoints Required

POST   /api/register              — Account creation
POST   /api/verify                — Email verification
POST   /api/mfa/setup             — Start MFA enrollment
POST   /api/mfa/verify            — Complete MFA enrollment
POST   /api/login                 — Authenticate
POST   /api/invitations/accept    — Accept invitation
POST   /api/projects              — Create project (wizard)
POST   /api/projects/:id/invites  — Send invitations
POST   /api/projects/:id/requests/import — Excel import
GET    /api/tasks                 — My task inbox
PATCH  /api/requests/:id          — Update request status
POST   /api/answers               — Submit answer
PATCH  /api/answers/:id/approve   — Approve answer
PATCH  /api/answers/:id/reject    — Reject answer

9.2 Email Service

  • Use SendGrid or AWS SES
  • All emails from: noreply@muskepo.com
  • Reply-To: set to inviting user's email
  • Unsubscribe links required (CAN-SPAM compliance)
  • Track open/click rates for onboarding optimization

9.3 Metrics to Track

Onboarding funnel:

  • Registration → Email Verified (%)
  • Email Verified → MFA Complete (%)
  • MFA Complete → First Project Created (%)
  • First Project → First Request List (%)
  • First Request → First Seller Response (time)

Activation:

  • Time to first request list created
  • Time to first seller login
  • Time to first answer submitted
  • Time to first data room publication

This document defines the complete first-run experience. Implementation should follow these flows exactly — deviations require spec update first.