92 KiB
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, 2–100 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:
- Token validated (single-use, 24h expiry)
- User status →
pending_mfa - 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:
- TOTP secret stored (encrypted) in user record
- Recovery codes generated (10 codes, 8 characters each)
- User status →
active - 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:
- John Smith receives: "You have 6 new requests in Project Phoenix"
- 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:
- Receiving email with attachment
- Downloading attachment
- Opening VDR
- Navigating to correct folder
- Uploading document
- Renaming to match convention
- Setting permissions
- Updating tracking spreadsheet
- 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:
- Receive request list via email (usually PDF or Word)
- Print it out / copy to spreadsheet
- Manually track who's doing what
- Hunt through email for clarifications
- Reply-all with attachments
- 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 | 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:
- Login as Sarah (IB Admin) — Show project overview, team status, request progress
- Switch to Mike (IB Member) — Show vetting queue, approve FIN-003, publish to data room
- Switch to John (Seller Admin) — Show task inbox, respond to FIN-004
- Switch to James (Buyer) — Show data room, new document notification, ask a question
- 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.