Skip to main content

SPEC 014 — Reports


1. Feature Purpose

Reports provide organization administrators and stakeholders with tabular views of cap table data. Three report types are available: Holder Report (per-member ownership summary), Pools Report (option pool and convertible instrument utilization), and Holdings Report (individual certificate-level detail). All reports support dynamic filtering, sortable columns, and footer totals. Reports are read-only views over existing cap table data — no dedicated backend module exists.

2. Current State (Verified)

2.1 Holder Report

2.2 Pools Report

2.3 Holdings Report

2.4 Module Exports


3. Data Model

Reports do not maintain their own data model. They consume data from:

Source: Cap Table Dashboard (GetCaptableDashboardResponse)

Source: Pools Report (GetPoolsReportResponse)

Source: Holdings Query (QueryResponse)

Enums Referenced


4. API Endpoints

Reports consume existing cap table endpoints — no dedicated report endpoints exist.

5. Frontend Components

Module: equa-web/src/modules/reports/

Shared Dependencies


6. Business Rules

  1. Permission gating: All three reports require either viewCapTable or viewSelf permission. Users with viewSelf see only their own holdings in the data.
  2. Holder Report excludes members who have no holdings AND no voided records (i.e., members with zero equity involvement are hidden).
  3. Holdings Report excludes records of type convertibleInstrument, pool, and orgAsset — these appear in their own dedicated views.
  4. Pools Report classifies pools as either Incentive (ESOP plans) or Convertible (convertible instruments).
  5. Ownership percentages are displayed to 2 decimal places (.toFixed(2)).
  6. Investment values are formatted as USD using optionalUsdString.
  7. Share counts use toCommaFloat for comma-separated formatting.
  8. Footer totals aggregate across all visible rows (post-filter).
  9. All links from reports open in a new browser tab (target='_blank').
  10. Page size is set to 100,000 across all reports — effectively no client-side pagination.

7. Acceptance Criteria

  • Holder Report displays all members with equity involvement, with correct investment, outstanding, ownership, and fully diluted values
  • Holder Report footer shows accurate totals for all numeric columns
  • Pools Report displays incentive pools and convertible instruments with correct metrics
  • Pools Report filter by Equity and Type works correctly
  • Holdings Report displays individual certificates with all metadata fields
  • Holdings Report filter by Holder, Class, and Type works correctly
  • All percentage columns display 2 decimal places
  • All USD columns are properly formatted
  • Links to members, securities, pools, and certificates open in new tabs
  • Users without viewCapTable or viewSelf permission cannot access reports
  • Reports load successfully for organizations with large cap tables (1000+ holdings)

8. Risks