dealroom/LOVABLE-ANALYSIS.md

18 KiB

Lovable Prototype Analysis — Dealspace AI

Generated from source code dump of Misha's 49-iteration Lovable prototype. Source: /home/johan/shared/dealspace-lovable/

Data Model (Supabase/PostgreSQL)

Tables

1. organizations

Field Type Notes
id uuid PK
name text
slug text URL-safe identifier
domain text?
logo_url text?
settings jsonb?
created_at timestamp
updated_at timestamp

2. profiles

Field Type Notes
id uuid PK
user_id uuid FK to auth.users
email text?
full_name text?
title text? Job title
phone text?
avatar_url text?
organization_id uuid? FK to organizations
onboarding_completed boolean?
settings jsonb?
created_at/updated_at timestamp

3. user_roles

Field Type Notes
id uuid PK
user_id uuid FK to auth.users
organization_id uuid FK to organizations
role enum owner, admin, member, viewer
created_at timestamp

4. deals

Field Type Notes
id uuid PK
name text Deal/project codename
description text?
organization_id uuid FK to organizations
created_by uuid?
stage enum pipeline, loi, initial_review, due_diligence, final_negotiation, closed, dead
target_company text?
deal_size numeric?
currency text?
close_probability numeric? 0-100
expected_close_date date?
ioi_date date? Indication of Interest date
loi_date date? Letter of Intent date
exclusivity_end_date date?
is_archived boolean?
settings jsonb?
created_at/updated_at timestamp

5. folders

Field Type Notes
id uuid PK
deal_id uuid FK to deals
parent_id uuid? FK to folders (self-referential tree)
name text
description text?
sort_order integer?
created_by uuid?
ai_summary text? Atlas-generated folder summary
ai_summary_updated_at timestamp?
completeness_score numeric? 0-100, AI-computed
created_at/updated_at timestamp

6. files

Field Type Notes
id uuid PK
deal_id uuid FK to deals
folder_id uuid? FK to folders
name text Original filename
file_path text? Supabase storage path
file_size bigint?
mime_type text?
uploaded_by uuid?
status enum uploaded, processing, reviewed, flagged, archived
version integer?
ai_summary text?
ai_tags text[]?
is_sensitive boolean?
download_disabled boolean?
watermark_enabled boolean?
created_at/updated_at timestamp

7. diligence_requests

Field Type Notes
id uuid PK
deal_id uuid FK to deals
section text Category (Financial, Legal, etc.)
item_number text? e.g., "1.1", "2.3"
description text What's being requested
priority enum high, medium, low
created_by uuid?
buyer_group text? Which buyer group this request is for
buyer_comment text? Inline comment from buyer
seller_comment text? Inline comment from seller
linked_file_ids uuid[]? Files that fulfill this request
atlas_status enum fulfilled, partial, missing, not_applicable
atlas_confidence numeric? 0-100
atlas_note text? AI explanation
atlas_assessed_at timestamp?
created_at/updated_at timestamp

8. deal_activity (Audit Log)

Field Type Notes
id uuid PK
deal_id uuid? FK to deals
organization_id uuid? FK to organizations
user_id uuid?
activity_type enum view, download, upload, edit, delete, share, comment, permission_change, nda_signed, login
resource_type text?
resource_id uuid?
resource_name text?
details jsonb?
ip_address inet
user_agent text?
created_at timestamp

9. buyer_engagement

Field Type Notes
id uuid PK
deal_id uuid FK to deals
user_id uuid?
file_id uuid? FK to files
folder_id uuid? FK to folders
event_type text
dwell_time_seconds numeric?
page_views integer?
metadata jsonb?
created_at timestamp

10. deal_scores

Field Type Notes
id uuid PK
deal_id uuid FK to deals
close_probability numeric 0-100
risk_tier text low, medium, high
diligence_completion numeric?
buyer_engagement_score numeric?
response_velocity numeric?
red_flag_count integer?
recommendations jsonb? Array of strings
computed_at timestamp
created_at timestamp

11. ai_insights

Field Type Notes
id uuid PK
deal_id uuid FK to deals
insight_type text
title text
content text?
severity text?
is_dismissed boolean?
source_file_ids uuid[]?
created_at timestamp

12. contacts

Field Type Notes
id uuid PK
organization_id uuid FK to organizations
full_name text
email text?
phone text?
company text?
title text?
contact_type text? buyer, advisor, internal
tags text[]?
notes text?
last_activity_at timestamp?
created_at/updated_at timestamp

13. ic_memos

Field Type Notes
id uuid PK
deal_id uuid FK to deals
organization_id uuid FK to organizations
created_by uuid?
title text
content jsonb Structured: summary, business_model, financials, key_risks[], diligence_gaps[], valuation_considerations, recommendation, source_documents[]
status text draft, review, final
version integer
created_at/updated_at timestamp

14. nda_records

Field Type Notes
id uuid PK
deal_id uuid FK to deals
signer_name text
signer_email text
signer_company text?
user_id uuid?
status text?
signed_at timestamp?
expires_at timestamp?
nda_document_url text?
ip_address inet
created_at timestamp

15. tasks

Field Type Notes
id uuid PK
organization_id uuid FK to organizations
deal_id uuid? FK to deals
title text
description text?
assigned_to uuid?
created_by uuid?
status text?
priority enum high, medium, low
due_date date?
completed_at timestamp?
created_at/updated_at timestamp

16. workflow_rules

Field Type Notes
id uuid PK
organization_id uuid FK to organizations
name text
trigger_type text
trigger_config jsonb
action_type text
action_config jsonb
is_active boolean
created_by uuid?
created_at/updated_at timestamp

Enums

  • deal_stage: pipeline, loi, initial_review, due_diligence, final_negotiation, closed, dead
  • file_status: uploaded, processing, reviewed, flagged, archived
  • request_priority: high, medium, low
  • request_status: fulfilled, partial, missing, not_applicable
  • activity_type: view, download, upload, edit, delete, share, comment, permission_change, nda_signed, login
  • app_role: owner, admin, member, viewer

DB Functions

  • has_role(org_id, role, user_id) → boolean
  • is_org_member(org_id, user_id) → boolean

Role/Permission Model

From useUserRole.ts:

  • Seller view = owner or admin role → full platform access
  • Buyer view = member or viewer role → restricted access

Key differences:

Feature Seller Buyer
Create deal rooms
Upload files
Upload CSV request lists
View analytics/engagement
Generate IC memos
View all deals Only deals with their buyer_group
View all requests Only requests for their buyer_group
Add buyer/seller comments

Buyer groups are hardcoded demo values: ["Meridian Capital", "Summit Health Equity"]


API Operations (from api.ts)

Function Table Operation
createOrganization organizations INSERT
getOrganization organizations SELECT by id
assignRole user_roles INSERT
getUserOrg user_roles + organizations SELECT (join)
getProfile profiles SELECT by user_id
updateProfile profiles UPDATE
getDeals deals SELECT by org_id
getDeal deals SELECT by id
createDeal deals INSERT
updateDeal deals UPDATE
getFolders folders SELECT by deal_id
createFolder folders INSERT
updateFolder folders UPDATE
getFiles files SELECT by deal_id + folder_id
getAllFiles files SELECT by deal_id
getFileCount files COUNT by deal_id
createFileRecord files INSERT
uploadFile storage + files Upload to Supabase storage + INSERT
getRequests diligence_requests SELECT by deal_id
getAllRequests diligence_requests SELECT all for org (via deals)
createRequest diligence_requests INSERT
bulkCreateRequests diligence_requests INSERT (batch)
updateRequest diligence_requests UPDATE
getActivity deal_activity SELECT by org_id
logActivity deal_activity INSERT
getContacts contacts SELECT by org_id
getInsights ai_insights SELECT by deal_id (non-dismissed)

Supabase Edge Functions (called via fetch, not in api.ts)

  • folder-summary — POST: generates AI summary for a folder
  • compute-deal-score — POST: computes deal close probability score
  • generate-ic-memo — POST: generates IC memo from deal documents
  • demo-login — POST: creates demo session with seller/buyer role

Feature Inventory by Page

Routes (from App.tsx)

Path Component Auth Required
/auth Auth No
/ Dashboard Yes
/deals DealRooms Yes
/deals/:id DealRoom Yes
/requests RequestList Yes
/analytics Analytics Yes
/ic-memos ICMemos Yes
/audit AuditLog Yes
/contacts Contacts Yes
/settings Settings Yes
/guide PlatformGuide Yes
* NotFound No

Dashboard

  • Stats cards: Active Rooms, Documents, Active Deals, Avg Close Probability
  • Active Deal Rooms list (top 5) with stage badges, doc counts, links
  • Recent Activity feed (last 8 events) with timestamps
  • All data is LIVE from Supabase

DealRoom (single deal view)

  • Header: Deal name, stage badge, doc count, target company, back link
  • Tabs: Documents | Request List
  • Documents tab:
    • Left sidebar: folder tree (hierarchical, expandable)
    • Breadcrumb navigation
    • Atlas Folder Summary panel (AI-generated, with refresh button and completeness score)
    • File table: name, size, modified date, status badge, actions menu
    • File upload (multi-file)
    • Create folder (inline form, supports nesting under selected folder)
  • Request List tab: Embedded DealRequestsPanel component (missing from dump)
  • Atlas AI sidebar toggle — passes deal context (dealId, name, stage, docs, folder, completeness, recent files)

DealRooms (list)

  • Table with: Deal name + target company, Stage badge, Size ($M), IOI Date, LOI Date, Exclusivity countdown
  • Search/filter
  • Create new deal dialog (name, target company, size, stage)
  • Buyer filtering: buyers only see deals that have diligence requests for their buyer_group
  • Exclusivity countdown with color-coded warnings (expired/expiring)

RequestList (cross-deal view)

  • Atlas Assessment Summary bar: Total, Fulfilled, Partial, Missing counts
  • Grouped by deal room, each expandable
  • Per-request table columns: #, Section, Description, Priority, Atlas Status, Confidence bar, Buyer Comment (inline editable), Seller Comment (inline editable), Atlas Note
  • Buyer group tabs — when requests have buyer_group, shows tab per group + "View All"
  • CSV Upload dialog — parse CSV → preview → bulk import to selected deal
  • Buyer filtering: buyers only see requests for their buyer_group

Analytics

  • KPI row: Deal Rooms, Total Documents, Engagement Events
  • Deal Close Probability table: per-deal with diligence %, engagement %, red flags, recommendations, compute button
  • Buyer Engagement timeline: recent events with event type, dwell time, page views
  • Calls Supabase edge function compute-deal-score to generate scores
  • Seller-only page (not explicitly gated in code but designed for sellers)

ICMemos

  • Left panel: Generate new memo (select deal → click Generate), List of all memos
  • Right panel: Memo viewer with structured sections:
    • Executive Summary, Business Model, Financial Analysis, Key Risks, Diligence Gaps, Valuation Considerations, Recommendation, Source Documents
  • Memo statuses: Draft, In Review, Final
  • Version tracking
  • Calls Supabase edge function generate-ic-memo

Contacts

  • HARDCODED mock data — not connected to database
  • Table: Name, Company, Email, Type (buyer/advisor/internal), Tags, Last Active
  • Search bar (not functional)
  • Add Contact button (not functional)

AuditLog

  • Full activity log from deal_activity table
  • Filterable by action/resource name
  • Color-coded action badges (view, upload, download, NDA signed, etc.)
  • Shows: Timestamp, Action, Resource, Details

Settings

  • Sidebar navigation with sections:
    • Profile — name, email, title, phone (LIVE from profiles table)
    • Organization — org name (LIVE)
    • Team Members — placeholder ("coming soon")
    • Security — toggle switches for MFA, IP allowlisting, session timeout, download watermarking, view-only mode (MOCK — toggles don't persist)
    • Notifications — placeholder
    • Integrations — Salesforce, HubSpot, Affinity, DocuSign, Slack (MOCK — all "not connected", configure buttons non-functional)
    • Workflows — 4 sample rules with triggers/actions (MOCK — toggles don't persist)
    • Appearance — placeholder

Auth

  • Email/password login and signup (via Supabase Auth)
  • On signup: auto-creates organization and assigns owner role
  • On first login without org: auto-creates org
  • Demo login buttons: Seller Demo / Buyer Demo (calls demo-login edge function)
  • Right panel: marketing copy about the platform

PlatformGuide

  • Comprehensive documentation page with accordion sections
  • Covers: Overview, Dashboard, Deal Rooms, Request Lists, Analytics, IC Memos, Contacts, Atlas AI, Audit Log, Settings, Security
  • Table of contents with anchor links
  • Role badges (Seller/Buyer/Both) per section

Atlas AI Capabilities

Atlas AI is referenced throughout but the core components (AtlasSidebar, AtlasGlobalChat) are missing from the dump. Based on usage:

  1. Deal Room Sidebar — Context-aware chat panel receiving:
    • dealId, dealName, stage, totalDocs, currentFolder, completeness, recentFiles
  2. Folder Summaries — via edge function folder-summary
  3. Diligence Request Assessment — auto-status with confidence scores + notes
  4. Deal Score Computation — via edge function compute-deal-score
  5. IC Memo Generation — via edge function generate-ic-memo
  6. AI Insights — stored in ai_insights table, shown on dashboard (code references but UI not fully visible)
  7. Document AI Processing — files have ai_summary and ai_tags fields

What's Real vs Mock/Placeholder

Real (connected to Supabase)

  • Authentication (email/password + demo login)
  • Organization creation + role assignment
  • Deal CRUD (create, read, update)
  • Folder CRUD (create, read, tree structure)
  • File upload to Supabase storage + metadata
  • Diligence request CRUD + bulk CSV import
  • Inline buyer/seller comments on requests
  • Activity/audit log (read + write)
  • Profile management
  • AI edge functions (folder summary, deal score, IC memo generation)
  • IC Memo CRUD + viewer

Mock/Placeholder

  • Contacts page — entirely hardcoded data
  • Settings > Security — toggle switches don't persist
  • Settings > Integrations — CRM buttons are non-functional
  • Settings > Workflows — rules are hardcoded, toggles don't persist
  • Settings > Team Members, Notifications, Appearance — "coming soon"
  • Buyer engagement tracking — table exists but no code writing to it
  • NDA records — table exists but no UI for NDA flow
  • Tasks — table exists but no dedicated UI
  • Workflow rules — table exists but no execution engine
  • AI Insights dismissal — read from DB but no dismiss UI visible

Missing Components (not in dump)

  • AppLayout — main layout shell with sidebar navigation
  • AppShell — possibly alternate layout
  • AtlasGlobalChat — global AI chat component
  • AtlasSidebar — deal-scoped AI sidebar
  • DealRequestsPanel — embedded request list for deal room
  • NavLink — navigation link component
  • useAuth hook
  • useOrganization hook
  • All ui/ shadcn components (Button, Dialog, Tabs, etc.)

Key Architectural Observations

  1. Multi-tenant by design — everything scoped to organization_id
  2. Seller/Buyer distinction is thin — just role mapping, not separate user types
  3. AI is the differentiator — Atlas does diligence assessment, folder summarization, deal scoring, IC memo generation
  4. Buyer group concept — requests can be tagged per buyer group, enabling multi-buyer processes
  5. Deal stages are IB-specific — pipeline → LOI → initial review → due diligence → final negotiation → closed/dead
  6. File security features designed but not implemented — watermarking, download disable, sensitivity flags are in the schema but UI is minimal