migrations, back-end changes, front-end changes, design system changes, business logic questions you’d need further clarity on, as atomically as possible. Use Ruby code to explain the most complex part of the shipment.

Focus on a highly polished MVP of the feature.

TLDR - User flow, please reconfirm

  1. User click the import button and upload their cap table in OCX standard
  2. Display confirmation page
    1. Name
    2. Fully diluted shares
    3. Ownership (percentage)
    4. Notes
  3. Accept/Reject the import

Business logic questions you’d need further clarity on

  1. N/A

Task Breakdown

  1. [DB Migration] Create ImportedCapTable table

  2. [Backend] Create an API to process the Excel in the backend

    1. Route: POST /imported_cap_tables
    2. Parse the Excel, save it to ImportedCapTable and return the result as JSON
    3. [Optional], returns 422 if the file is not OCX standard/cannot be processed
  3. [Backend] Create an API to accept/reject the import

    1. Route: /imported_cap_tables/confirm/:id and /imported_cap_tables/reject/:id
    2. Find ImportedCapTable by id, and create the actual CapTable if confirmed.
    3. Set ImportedCapTable as rejected if rejected.
  4. [Frontend] Add import button to the equity, cap table page

    Screenshot 2024-07-20 at 12.01.43 pm.png

    1. Upload the excel file to POST /imported_cap_tables
  5. [Frontend] Add schema confirmation page

    Screenshot 2024-07-20 at 12.04.07 pm.png

    1. Hit either /imported_cap_tables/confirm/:id or /imported_cap_tables/reject/:id
    2. Redirect back to equity page.
  6. [Analytics] [Optional] Create a dashboard to track the number of rejected ImportedCapTable

Use Ruby code to explain the most complex part of the shipment.