Welcome to the new site. Problems, use store.hemrock.com

Open Cap Table Format

Why I built OCF export into the cap table tool, and what carries across when you take a Hemrock cap table into Carta, Pulley, or any platform that reads OCF.

I added Open Cap Table Format (OCF) export to the cap table web builder because cap tables shouldn't be locked into the tool that built them. Build the model in Hemrock for free, then take it anywhere.

What OCF is

The Open Cap Table Format is an open JSON specification for cap tables, designed and maintained by the Open Cap Table Coalition. The coalition includes Carta, Pulley, Morgan Stanley Shareworks, AngelList, Equity Shift, Nasdaq Private Market, Mantle, Fenwick, Orrick, Goodwin, Gunderson Dettmer, Latham & Watkins, Perkins Coie, Wilson Sonsini, and others whose work touches cap tables daily.

The spec is public, well-organized, and packaged as JSON Schema files anyone can validate against. The official tooling repo at Open-Cap-Table-Coalition/OCF-Tools ships a reference parser and validator on npm.

A cap table in OCF is event-sourced. You don't get a snapshot; you get the full transaction log: every issuance, transfer, conversion, option grant, warrant, and ratio adjustment. The current state is computed by replaying the log. That maps directly to how the Hemrock cap table engine works, which made the export straightforward.

Why this matters

A founder builds a cap table once and lives with it for a decade. They use it to model their first round, share it with prospective investors, hand it to their lawyer for a term sheet review, and eventually migrate it into a managed cap-table platform once the company is real enough to use one. At each step the cap table should be portable, for reliability, transparency, and ease in switching between providers. OCF is the bridge that makes the move possible.

I offer OCF export in addition to Excel export. The point is to make the modeling work transferable. If you outgrow my tool, the data goes with you.

What gets carried across

Every event in the Hemrock cap table builder maps to one or more OCF transactions:

  • Common issuances become TX_STOCK_ISSUANCE records, one per grant.
  • Priced rounds become a Financing group plus a TX_STOCK_ISSUANCE per investor, a TX_STOCK_PLAN_POOL_ADJUSTMENT if the round added options, and a TX_STOCK_CLASS_CONVERSION_RATIO_ADJUSTMENT for each preferred series that hit anti-dilution.
  • SAFEs and convertible notes become TX_CONVERTIBLE_ISSUANCE records with cap, discount, MFN, pre/post timing, and (for notes) interest math captured on the conversion mechanism.
  • Convertibles converting at a priced round become paired TX_CONVERTIBLE_CONVERSION + TX_STOCK_ISSUANCE transactions, with the new preferred shares linked back to the original convertible via security id.
  • Option pools become StockPlan objects plus a TX_STOCK_PLAN_POOL_ADJUSTMENT per top-up.
  • Option grants become TX_EQUITY_COMPENSATION_ISSUANCE records, with RSU vs option carried on compensation_type.
  • Warrants become TX_WARRANT_ISSUANCE.
  • Secondary sales become TX_STOCK_TRANSFER.

Every transaction lands in Transactions.ocf.json. Stakeholders, stock classes, stock plans, and the issuer record live in their own files. A Manifest.ocf.json ties the package together, and every transaction carries a human-readable comment pointing back to the Hemrock event that produced it.

What doesn't carry across

OCF is a generous spec but it has opinions. A few Hemrock-specific concepts have no direct equivalent and get dropped or simplified on the way out. The OCF package surfaces these as comments on the affected transactions, so the recipient can see what was lost.

  • Convertible dilutionMode (existing-only vs all) has no OCF equivalent. The resulting share counts are preserved through the conversion transactions, but the choice itself is not represented in OCF.
  • Fixed-percentage SAFE variants (post-money-fixed and post-money-fixed-after) export as regular post-money cap SAFEs. The share count comes out right, but OCF cannot represent a SAFE that locks at a percentage of post-money rather than a price-based cap. If the recipient re-runs the math from the converted shares, they get the same answer.
  • Pro-rata on priced-round investments is dropped. OCF has a pro_rata flag on convertible issuance but not on priced-round investments. The resolved investment amount is preserved.
  • Option-pool % targets resolve to a fixed share count before export. The "top up to 10% of post-money FD" semantic is not carried; the resulting top-up shares are.
  • Anti-dilution policy ("broad-based weighted average" vs "full-ratchet") is recorded by Hemrock but only the resulting conversion ratio crosses into OCF. The spec is explicit about this: anti-dilution math happens outside OCF, and the format only captures the outcome.

How to use it

Open any saved cap table and click the OCF button next to the Excel button. You get a <your-model-name>.ocf.zip containing the OCF package plus a README.txt listing the per-model limitations. Unzip it, hand the files to your destination platform's importer, done.

What's next

OCF import is in process. Once that ships, you'll be able to take an OCF package from any platform and load it into the Hemrock builder, run scenarios against it, and (where the math survives) hand it back out. Coming soon.

Going deeper