@open-agreements/open-agreements 0.4.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +15 -1
  2. package/content/external/yc-safe-discount/metadata.yaml +1 -1
  3. package/content/external/yc-safe-mfn/metadata.yaml +1 -1
  4. package/content/external/yc-safe-pro-rata-side-letter/metadata.yaml +1 -1
  5. package/content/external/yc-safe-valuation-cap/metadata.yaml +1 -1
  6. package/content/recipes/QUALITY_TRACKER.md +35 -0
  7. package/content/recipes/nvca-certificate-of-incorporation/clean.json +14 -2
  8. package/content/recipes/nvca-certificate-of-incorporation/computed.json +99 -0
  9. package/content/recipes/nvca-certificate-of-incorporation/metadata.yaml +133 -2
  10. package/content/recipes/nvca-certificate-of-incorporation/replacements.json +95 -2
  11. package/content/recipes/nvca-certificate-of-incorporation/selections-roadmap.md +44 -0
  12. package/content/recipes/nvca-certificate-of-incorporation/selections.json +95 -0
  13. package/content/recipes/nvca-indemnification-agreement/metadata.yaml +9 -1
  14. package/content/recipes/nvca-investors-rights-agreement/clean.json +9 -1
  15. package/content/recipes/nvca-investors-rights-agreement/metadata.yaml +1 -1
  16. package/content/recipes/nvca-investors-rights-agreement/replacements.json +4 -1
  17. package/content/recipes/nvca-management-rights-letter/metadata.yaml +1 -1
  18. package/content/recipes/nvca-rofr-co-sale-agreement/clean.json +11 -1
  19. package/content/recipes/nvca-rofr-co-sale-agreement/metadata.yaml +5 -1
  20. package/content/recipes/nvca-rofr-co-sale-agreement/replacements.json +4 -1
  21. package/content/recipes/nvca-stock-purchase-agreement/clean.json +8 -3
  22. package/content/recipes/nvca-stock-purchase-agreement/computed.json +30 -0
  23. package/content/recipes/nvca-stock-purchase-agreement/metadata.yaml +25 -17
  24. package/content/recipes/nvca-stock-purchase-agreement/normalize.json +0 -16
  25. package/content/recipes/nvca-stock-purchase-agreement/replacements.json +22 -19
  26. package/content/recipes/nvca-stock-purchase-agreement/selections.json +60 -0
  27. package/content/recipes/nvca-voting-agreement/clean.json +11 -1
  28. package/content/recipes/nvca-voting-agreement/metadata.yaml +1 -1
  29. package/content/recipes/nvca-voting-agreement/replacements.json +2 -1
  30. package/content/templates/bonterms-mutual-nda/metadata.yaml +1 -1
  31. package/content/templates/bonterms-professional-services-agreement/metadata.yaml +1 -1
  32. package/content/templates/closing-checklist/metadata.yaml +1 -1
  33. package/content/templates/common-paper-ai-addendum/metadata.yaml +1 -1
  34. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +1 -1
  35. package/content/templates/common-paper-amendment/metadata.yaml +1 -1
  36. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +1 -1
  37. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +1 -1
  38. package/content/templates/common-paper-csa-click-through/metadata.yaml +1 -1
  39. package/content/templates/common-paper-csa-with-ai/metadata.yaml +1 -1
  40. package/content/templates/common-paper-csa-with-sla/metadata.yaml +1 -1
  41. package/content/templates/common-paper-csa-without-sla/metadata.yaml +1 -1
  42. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +1 -1
  43. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +1 -1
  44. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +1 -1
  45. package/content/templates/common-paper-letter-of-intent/metadata.yaml +1 -1
  46. package/content/templates/common-paper-mutual-nda/metadata.yaml +1 -1
  47. package/content/templates/common-paper-one-way-nda/metadata.yaml +1 -1
  48. package/content/templates/common-paper-order-form/metadata.yaml +1 -1
  49. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +1 -1
  50. package/content/templates/common-paper-partnership-agreement/metadata.yaml +1 -1
  51. package/content/templates/common-paper-pilot-agreement/metadata.yaml +1 -1
  52. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +1 -1
  53. package/content/templates/common-paper-software-license-agreement/metadata.yaml +1 -1
  54. package/content/templates/common-paper-statement-of-work/metadata.yaml +1 -1
  55. package/content/templates/common-paper-term-sheet/metadata.yaml +1 -1
  56. package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +1 -1
  57. package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +1 -1
  58. package/content/templates/openagreements-employment-offer-letter/metadata.yaml +1 -1
  59. package/content/templates/working-group-list/metadata.yaml +1 -1
  60. package/dist/cli/index.d.ts.map +1 -1
  61. package/dist/cli/index.js +8 -4
  62. package/dist/cli/index.js.map +1 -1
  63. package/dist/commands/fill.js +3 -3
  64. package/dist/commands/fill.js.map +1 -1
  65. package/dist/commands/list.js +19 -15
  66. package/dist/commands/list.js.map +1 -1
  67. package/dist/core/command-generation/adapters/claude.js +4 -4
  68. package/dist/core/employment/memo.js +3 -3
  69. package/dist/core/engine.js +1 -1
  70. package/dist/core/external/index.js +1 -1
  71. package/dist/core/fill-pipeline.d.ts +3 -3
  72. package/dist/core/fill-pipeline.js +6 -6
  73. package/dist/core/fill-pipeline.js.map +1 -1
  74. package/dist/core/metadata.d.ts +13 -3
  75. package/dist/core/metadata.d.ts.map +1 -1
  76. package/dist/core/metadata.js +19 -11
  77. package/dist/core/metadata.js.map +1 -1
  78. package/dist/core/recipe/bracket-normalizer.d.ts +4 -5
  79. package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -1
  80. package/dist/core/recipe/bracket-normalizer.js +67 -149
  81. package/dist/core/recipe/bracket-normalizer.js.map +1 -1
  82. package/dist/core/recipe/cleaner.d.ts.map +1 -1
  83. package/dist/core/recipe/cleaner.js +91 -7
  84. package/dist/core/recipe/cleaner.js.map +1 -1
  85. package/dist/core/recipe/computed.d.ts +1 -0
  86. package/dist/core/recipe/computed.d.ts.map +1 -1
  87. package/dist/core/recipe/computed.js +8 -0
  88. package/dist/core/recipe/computed.js.map +1 -1
  89. package/dist/core/recipe/downloader.d.ts.map +1 -1
  90. package/dist/core/recipe/downloader.js +8 -3
  91. package/dist/core/recipe/downloader.js.map +1 -1
  92. package/dist/core/recipe/index.d.ts +2 -1
  93. package/dist/core/recipe/index.d.ts.map +1 -1
  94. package/dist/core/recipe/index.js +13 -5
  95. package/dist/core/recipe/index.js.map +1 -1
  96. package/dist/core/recipe/patcher.d.ts +10 -5
  97. package/dist/core/recipe/patcher.d.ts.map +1 -1
  98. package/dist/core/recipe/patcher.js +186 -138
  99. package/dist/core/recipe/patcher.js.map +1 -1
  100. package/dist/core/recipe/replacement-keys.d.ts +9 -7
  101. package/dist/core/recipe/replacement-keys.d.ts.map +1 -1
  102. package/dist/core/recipe/replacement-keys.js +7 -20
  103. package/dist/core/recipe/replacement-keys.js.map +1 -1
  104. package/dist/core/recipe/source-drift.js +1 -1
  105. package/dist/core/recipe/source-drift.js.map +1 -1
  106. package/dist/core/recipe/verifier.d.ts +8 -1
  107. package/dist/core/recipe/verifier.d.ts.map +1 -1
  108. package/dist/core/recipe/verifier.js +69 -3
  109. package/dist/core/recipe/verifier.js.map +1 -1
  110. package/dist/core/selector.d.ts +4 -0
  111. package/dist/core/selector.d.ts.map +1 -1
  112. package/dist/core/selector.js +278 -7
  113. package/dist/core/selector.js.map +1 -1
  114. package/dist/core/template-listing.d.ts +3 -1
  115. package/dist/core/template-listing.d.ts.map +1 -1
  116. package/dist/core/template-listing.js +4 -3
  117. package/dist/core/template-listing.js.map +1 -1
  118. package/dist/core/unified-pipeline.d.ts +5 -2
  119. package/dist/core/unified-pipeline.d.ts.map +1 -1
  120. package/dist/core/unified-pipeline.js +71 -3
  121. package/dist/core/unified-pipeline.js.map +1 -1
  122. package/dist/core/validation/external.d.ts.map +1 -1
  123. package/dist/core/validation/external.js +0 -2
  124. package/dist/core/validation/external.js.map +1 -1
  125. package/dist/core/validation/recipe.d.ts.map +1 -1
  126. package/dist/core/validation/recipe.js +34 -6
  127. package/dist/core/validation/recipe.js.map +1 -1
  128. package/dist/core/validation/scan-metadata.d.ts +2 -1
  129. package/dist/core/validation/scan-metadata.d.ts.map +1 -1
  130. package/dist/core/validation/scan-metadata.js +20 -3
  131. package/dist/core/validation/scan-metadata.js.map +1 -1
  132. package/dist/core/validation/template.js +5 -5
  133. package/package.json +5 -4
  134. package/server.json +31 -0
  135. package/skills/client-email/SKILL.md +143 -0
  136. package/skills/cloud-service-agreement/SKILL.md +8 -99
  137. package/skills/data-privacy-agreement/SKILL.md +10 -97
  138. package/skills/delaware-franchise-tax/SKILL.md +7 -1
  139. package/skills/edit-docx-agreement/SKILL.md +10 -3
  140. package/skills/employment-contract/SKILL.md +10 -95
  141. package/skills/iso-27001-evidence-collection/SKILL.md +7 -1
  142. package/skills/iso-27001-internal-audit/SKILL.md +6 -0
  143. package/skills/nda/SKILL.md +7 -99
  144. package/skills/open-agreements/CONNECTORS.md +1 -1
  145. package/skills/open-agreements/SKILL.md +17 -104
  146. package/skills/recipe-quality-audit/SKILL.md +116 -0
  147. package/skills/safe/SKILL.md +12 -97
  148. package/skills/services-agreement/SKILL.md +8 -99
  149. package/skills/shared/template-filling-execution.md +92 -0
  150. package/skills/soc2-readiness/SKILL.md +7 -1
  151. package/skills/unit-test-philosophy/SKILL.md +12 -1
  152. package/skills/venture-financing/SKILL.md +11 -96
package/README.md CHANGED
@@ -13,6 +13,8 @@
13
13
  [![Socket Badge](https://socket.dev/api/badge/npm/package/open-agreements)](https://socket.dev/npm/package/open-agreements)
14
14
  [![install size](https://packagephobia.com/badge?p=open-agreements)](https://packagephobia.com/result?p=open-agreements)
15
15
 
16
+ [English](./README.md) | [Español](./README.es.md) | [简体中文](./README.zh.md) | [Português (Brasil)](./README.pt-br.md) | [Deutsch](./README.de.md)
17
+
16
18
  <!-- TODO: Add OpenSSF Scorecard badge once repo is indexed at securityscorecards.dev -->
17
19
  <!-- TODO: Add OpenSSF Best Practices badge after registration at bestpractices.dev -->
18
20
  <!-- TODO: Re-evaluate Snyk badge — Advisor migrated to security.snyk.io (July 2024) -->
@@ -25,7 +27,7 @@
25
27
 
26
28
  Fill standard legal agreement templates and produce signable DOCX files. Templates cover NDAs, cloud terms, employment docs, contractor agreements, SAFEs, and NVCA financing documents.
27
29
 
28
- Built by the team behind [UseJunior.com](https://usejunior.com) in production at Am Law 100 firms.
30
+ **Open Agreements** by [UseJunior](https://usejunior.com) part of the [UseJunior developer tools](https://usejunior.com/developer-tools/open-agreements). In production at Am Law 100 firms.
29
31
 
30
32
  ## Quality and Trust Signals
31
33
 
@@ -325,6 +327,11 @@ Lookup precedence is:
325
327
 
326
328
  This keeps default installs simple while allowing advanced users to move large content libraries outside the core package.
327
329
 
330
+ ## See Also
331
+
332
+ - [safe-docx](https://github.com/UseJunior/safe-docx) — surgical editing of existing Word documents with coding agents (MCP server)
333
+ - [UseJunior Developer Tools](https://usejunior.com/developer-tools/open-agreements) — product page with install options and template catalog
334
+
328
335
  ## Contributing
329
336
 
330
337
  See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add templates, recipes, and other improvements.
@@ -392,6 +399,13 @@ MIT
392
399
 
393
400
  Template content is licensed by their respective authors — CC BY 4.0 (Common Paper, Bonterms), CC BY-ND 4.0 (Y Combinator), or proprietary (NVCA, downloaded at runtime). See each template's `metadata.yaml` for details.
394
401
 
402
+ ## Privacy
403
+
404
+ - **Local mode** (`npx`, global install, stdio MCP): all processing happens on your machine. No document content is sent externally.
405
+ - **Hosted mode** (`https://openagreements.ai/api/mcp`): template filling runs server-side. No filled documents are stored after the response is returned.
406
+
407
+ See our [Privacy Policy](https://usejunior.com/privacy_policy) for details.
408
+
395
409
  ## Disclaimer
396
410
 
397
411
  This tool generates documents from standard templates. It does not provide legal advice. No affiliation with or endorsement by Common Paper, Bonterms, Y Combinator, NVCA, or any template source is implied. Consult an attorney for legal guidance.
@@ -53,7 +53,7 @@ fields:
53
53
  type: string
54
54
  description: Title of the company signatory (e.g., "CEO")
55
55
  section: Signatures
56
- required_fields:
56
+ priority_fields:
57
57
  - company_name
58
58
  - investor_name
59
59
  - purchase_amount
@@ -51,7 +51,7 @@ fields:
51
51
  type: string
52
52
  description: Title of the company signatory (e.g., "CEO")
53
53
  section: Signatures
54
- required_fields:
54
+ priority_fields:
55
55
  - company_name
56
56
  - investor_name
57
57
  - purchase_amount
@@ -39,7 +39,7 @@ fields:
39
39
  type: string
40
40
  description: Title of the company signatory (e.g., "CEO")
41
41
  section: Signatures
42
- required_fields:
42
+ priority_fields:
43
43
  - company_name
44
44
  - investor_name
45
45
  - date_of_safe
@@ -51,7 +51,7 @@ fields:
51
51
  type: string
52
52
  description: Title of the company signatory (e.g., "CEO")
53
53
  section: Signatures
54
- required_fields:
54
+ priority_fields:
55
55
  - company_name
56
56
  - investor_name
57
57
  - purchase_amount
@@ -0,0 +1,35 @@
1
+ # NVCA Recipe Quality Tracker
2
+
3
+ Tracks quality audit scores and maturity tiers for all 7 NVCA recipes.
4
+ Updated by the `recipe-quality-audit` skill after each audit.
5
+
6
+ ## Scorecard
7
+
8
+ | Recipe | S | B | F | Total | Tier | Fixture | Last Audit |
9
+ |--------|---|---|---|-------|------|---------|------------|
10
+ | nvca-stock-purchase-agreement | 7/7 | 4/4 | 4/4 | 15/15 | production | spa-*.json | 2026-03-15 |
11
+ | nvca-certificate-of-incorporation | 6/7 | 3/4 | 2/4 | 11/15 | beta | coi-imim-series-c.json | 2026-03-15 |
12
+ | nvca-investors-rights-agreement | ?/7 | ?/4 | ?/4 | ?/15 | beta | — | — |
13
+ | nvca-voting-agreement | ?/7 | ?/4 | ?/4 | ?/15 | beta | — | — |
14
+ | nvca-rofr-co-sale-agreement | ?/7 | ?/4 | ?/4 | ?/15 | beta | — | — |
15
+ | nvca-indemnification-agreement | ?/7 | ?/4 | ?/4 | ?/15 | beta | — | — |
16
+ | nvca-management-rights-letter | ?/7 | ?/4 | ?/4 | ?/15 | beta | — | — |
17
+
18
+ ## Priority Order
19
+
20
+ Based on legal impact in a typical Series A:
21
+
22
+ 1. ~~SPA~~ (done — production)
23
+ 2. **COI** — defines share structure, liquidation preferences, anti-dilution
24
+ 3. IRA — information rights, registration rights, board observer
25
+ 4. VA — drag-along, voting provisions, board composition
26
+ 5. ROFR — transfer restrictions, co-sale rights
27
+ 6. Indemnification — director/officer protection
28
+ 7. MRL — management rights (simplest document)
29
+
30
+ ## Score Key
31
+
32
+ - **S** = Structural checks (7 total): file inventory, metadata schema, field coverage, ambiguous keys, smart quotes, source SHA, test fixture
33
+ - **B** = Behavioral checks (4 total): source scan, replacement coverage ratio, unmatched underscores, clean effectiveness
34
+ - **F** = Fill checks (4 total): default-only fill, full-values fill, formatting anomalies, zero-match keys
35
+ - **Tier**: scaffold → beta → production
@@ -1,8 +1,20 @@
1
1
  {
2
2
  "removeFootnotes": true,
3
+ "removeBeforePattern": "^AMENDED AND RESTATEDCERTIFICATE OF INCORPORATIONOF",
3
4
  "removeParagraphPatterns": [
4
5
  "^Note to Drafter:",
5
- "^Preliminary Note\\b",
6
- "^Use the following"
6
+ "^\\[?Use the following",
7
+ "^Last [Uu]pdated",
8
+ "^GDSVF"
9
+ ],
10
+ "removeRanges": [
11
+ {
12
+ "start": "^This sample document is the work product",
13
+ "end": "are flagged as .Revised."
14
+ },
15
+ {
16
+ "start": "^Preliminary Notes$",
17
+ "end": "potentially interested party\\."
18
+ }
7
19
  ]
8
20
  }
@@ -0,0 +1,99 @@
1
+ {
2
+ "version": "1.0",
3
+ "max_passes": 2,
4
+ "rules": [
5
+ {
6
+ "id": "under-the-name-present",
7
+ "description": "Include 'under the name' clause when original name provided",
8
+ "when_all": [{ "field": "original_incorporation_name", "op": "defined" }],
9
+ "set_fill": { "under_the_name_clause": " under the name ${original_incorporation_name}" }
10
+ },
11
+ {
12
+ "id": "under-the-name-absent",
13
+ "description": "Remove 'under the name' clause when no original name",
14
+ "when_all": [{ "field": "original_incorporation_name", "op": "falsy" }],
15
+ "set_fill": { "under_the_name_clause": "" }
16
+ },
17
+ {
18
+ "id": "no-cumulative-voting-include",
19
+ "description": "Include 'no cumulative voting' clause (>95% standard)",
20
+ "when_all": [{ "field": "no_cumulative_voting", "op": "neq", "value": false }],
21
+ "set_fill": { "no_cumulative_voting_clause": "There shall be no cumulative voting." }
22
+ },
23
+ {
24
+ "id": "no-cumulative-voting-exclude",
25
+ "description": "Remove 'no cumulative voting' clause",
26
+ "when_all": [{ "field": "no_cumulative_voting", "op": "eq", "value": false }],
27
+ "set_fill": { "no_cumulative_voting_clause": "" }
28
+ },
29
+ {
30
+ "id": "common-stock-voting-limitation-include",
31
+ "description": "Include common stock voting limitation clause (>90% standard)",
32
+ "when_all": [{ "field": "common_stock_voting_limitation", "op": "neq", "value": false }],
33
+ "set_fill": { "common_stock_voting_limitation_clause": "; provided, however, that any amendment, alteration, or repeal of any provision of this Restated Certificate (including any Preferred Stock Designation) that would alter or change the powers, preferences, or special rights of one series of Preferred Stock so as to affect them adversely, but shall not so affect the entire class of Preferred Stock, must be approved by the holders of at least a majority of the shares of the affected series, exclusively and as a separate class, irrespective of whether such approval is required by Section 242(b)(2) of the DGCL or by Section 4.3.4 hereof" }
34
+ },
35
+ {
36
+ "id": "common-stock-voting-limitation-exclude",
37
+ "description": "Remove common stock voting limitation clause",
38
+ "when_all": [{ "field": "common_stock_voting_limitation", "op": "eq", "value": false }],
39
+ "set_fill": { "common_stock_voting_limitation_clause": "" }
40
+ },
41
+ {
42
+ "id": "authorized-shares-vote-include",
43
+ "description": "Include simplified authorized shares vote provision (>95% standard)",
44
+ "when_all": [{ "field": "authorized_shares_vote_provision", "op": "neq", "value": false }],
45
+ "set_fill": { "authorized_shares_vote_provision_clause": "The number of authorized shares of Common Stock may be increased or decreased (but not below the number of shares of Common Stock then outstanding) by the affirmative vote of the holders of a majority of the stock of the Corporation entitled to vote, irrespective of the provisions of Section 242(b)(2) of the DGCL." }
46
+ },
47
+ {
48
+ "id": "authorized-shares-vote-exclude",
49
+ "description": "Remove simplified authorized shares vote provision",
50
+ "when_all": [{ "field": "authorized_shares_vote_provision", "op": "eq", "value": false }],
51
+ "set_fill": { "authorized_shares_vote_provision_clause": "" }
52
+ },
53
+ {
54
+ "id": "officer-indemnification-include",
55
+ "description": "Include officer indemnification (>80% standard)",
56
+ "when_all": [{ "field": "include_officer_indemnification", "op": "neq", "value": false }],
57
+ "set_fill": { "or_officer_clause": "or officer" }
58
+ },
59
+ {
60
+ "id": "officer-indemnification-exclude",
61
+ "description": "Remove officer indemnification",
62
+ "when_all": [{ "field": "include_officer_indemnification", "op": "eq", "value": false }],
63
+ "set_fill": { "or_officer_clause": "" }
64
+ },
65
+ {
66
+ "id": "redemption-cross-ref-include",
67
+ "description": "Include redemption Section 6.1 cross-reference",
68
+ "when_all": [{ "field": "include_redemption_cross_ref", "op": "eq", "value": true }],
69
+ "set_fill": { "redemption_cross_ref_clause": " and Section 6.1" }
70
+ },
71
+ {
72
+ "id": "redemption-cross-ref-exclude",
73
+ "description": "Remove redemption Section 6.1 cross-reference (<5% of deals)",
74
+ "when_all": [{ "field": "include_redemption_cross_ref", "op": "neq", "value": true }],
75
+ "set_fill": { "redemption_cross_ref_clause": "" }
76
+ },
77
+ {
78
+ "id": "no-redemption-statement-include",
79
+ "description": "Keep 'not redeemable' statement when no full redemption (default)",
80
+ "when_all": [{ "field": "include_redemption", "op": "neq", "value": true }],
81
+ "set_fill": { "no_redemption_clause": "Other than as set forth in Section 2.3.2(b), the Preferred Stock is not redeemable at the option of the holder or the Corporation." }
82
+ },
83
+ {
84
+ "id": "no-redemption-statement-exclude",
85
+ "description": "Remove 'not redeemable' statement when full redemption included",
86
+ "when_all": [{ "field": "include_redemption", "op": "eq", "value": true }],
87
+ "set_fill": { "no_redemption_clause": "" }
88
+ },
89
+ {
90
+ "id": "redemption-cross-ref-force-off",
91
+ "description": "Force redemption cross-ref off when redemption article is excluded",
92
+ "when_all": [
93
+ { "field": "include_redemption", "op": "neq", "value": true },
94
+ { "field": "include_redemption_cross_ref", "op": "eq", "value": true }
95
+ ],
96
+ "set_fill": { "redemption_cross_ref_clause": "" }
97
+ }
98
+ ]
99
+ }
@@ -9,13 +9,97 @@ license_note: >-
9
9
  instructions, not the source document.
10
10
  source_sha256: d75600769c12724990de48149d7a2bb161f3522daa54b1783672f93697d87d29
11
11
  optional: false
12
+ market_data_citations:
13
+ - id: wsgr-2025
14
+ label: WSGR Entrepreneurs Report 2023-2025
15
+ - id: cooley-q4-2025
16
+ label: Cooley Venture Financing Report Q4 2025
17
+ - id: fenwick-2024
18
+ label: Fenwick Silicon Valley Venture Capital Survey 2024
12
19
  fields:
20
+ - name: company_name
21
+ type: string
22
+ description: Full legal name of the corporation
23
+ - name: registered_agent_address
24
+ type: string
25
+ description: Street address of the registered agent in Delaware
26
+ - name: registered_agent_city
27
+ type: string
28
+ description: City of the registered agent office
29
+ - name: registered_agent_county
30
+ type: string
31
+ description: County of the registered agent office
32
+ - name: registered_agent_name
33
+ type: string
34
+ description: Name of the registered agent in Delaware
35
+ - name: total_authorized_shares
36
+ type: string
37
+ description: Total number of authorized shares of all classes
38
+ - name: number_of_classes
39
+ type: string
40
+ description: Number of classes of stock (e.g., two)
41
+ default: two
42
+ - name: common_shares_authorized
43
+ type: string
44
+ description: Number of authorized shares of Common Stock
45
+ - name: preferred_shares_authorized
46
+ type: string
47
+ description: Number of authorized shares of Preferred Stock
48
+ - name: series_designation
49
+ type: string
50
+ description: Series designation for preferred stock (e.g., A, B, C)
51
+ default: A
13
52
  - name: original_issue_price
14
53
  type: string
15
54
  description: Original purchase price per share of Series A Preferred Stock
16
55
  - name: initial_purchase_price
17
56
  type: string
18
57
  description: Initial Series A purchase price per share
58
+ - name: liquidation_preference_multiple
59
+ type: string
60
+ description: Liquidation preference multiple (e.g., 1, 1.5, 2)
61
+ default: '1'
62
+ - name: dividend_rate_percent
63
+ type: string
64
+ description: Annual dividend rate percentage on Preferred Stock
65
+ default: '8'
66
+ - name: dividend_rate_per_share
67
+ type: string
68
+ description: Dividend rate per annum per share of Preferred Stock (dollar amount)
69
+ - name: preferred_shares_outstanding_threshold
70
+ type: string
71
+ description: Minimum shares of Preferred Stock outstanding for protective provisions to apply
72
+ - name: preferred_director_seats
73
+ type: string
74
+ description: Number of Preferred Director board seats
75
+ - name: preferred_shares_designated_portion
76
+ type: string
77
+ description: Portion of preferred shares designated as the named series
78
+ default: all
79
+ - name: original_incorporation_name
80
+ type: string
81
+ description: Original incorporation name, if different from current company name (leave blank if same)
82
+ - name: redemption_start_date
83
+ type: string
84
+ description: Earliest date on which preferred stock may be redeemed
85
+ - name: qualified_financing_notice_days
86
+ type: string
87
+ description: Days of prior notice required for qualified financing
88
+ - name: no_cumulative_voting
89
+ type: boolean
90
+ description: Include 'no cumulative voting' clause
91
+ - name: common_stock_voting_limitation
92
+ type: boolean
93
+ description: Include clause limiting common stock from vetoing preferred-only amendments
94
+ - name: authorized_shares_vote_provision
95
+ type: boolean
96
+ description: Include simplified vote provision for changing authorized Common Stock count
97
+ - name: include_officer_indemnification
98
+ type: boolean
99
+ description: Include officer indemnification alongside director indemnification
100
+ - name: include_redemption_cross_ref
101
+ type: boolean
102
+ description: Include cross-reference to Section 6.1 (Redemption)
19
103
  - name: signature_page_marker
20
104
  type: string
21
105
  description: Signature page marker text
@@ -34,10 +118,57 @@ fields:
34
118
  - name: effective_date
35
119
  type: date
36
120
  description: Effective date of the certificate of incorporation
37
- required_fields:
121
+ - name: adjustment_notice_days
122
+ type: string
123
+ description: Days to provide notice of conversion price adjustments
124
+ default: '10'
125
+ - name: redemption_interest_rate
126
+ type: string
127
+ description: Annual interest rate on unredeemed shares (percentage)
128
+ default: '12'
129
+ - name: conversion_notice_days
130
+ type: string
131
+ description: Days prior to record date for mandatory conversion notice
132
+ default: '10'
133
+ - name: dividend_formula_prefix
134
+ type: string
135
+ description: Non-cumulative dividend formula prefix phrase
136
+ default: the greater of
137
+ - name: dividend_formula_alt
138
+ type: string
139
+ description: Alternative dividend formula phrase
140
+ default: the sum of
141
+ - name: acquisition_exception_shares
142
+ type: string
143
+ description: Max shares issuable as acquisition consideration without triggering anti-dilution
144
+ - name: strategic_partnership_exception_shares
145
+ type: string
146
+ description: Max shares issuable for strategic partnerships without triggering anti-dilution
147
+ - name: dividend_type
148
+ type: string
149
+ description: 'Dividend structure: non_cumulative_as_converted (>95%), non_cumulative_fixed, or cumulative'
150
+ default: non_cumulative_as_converted
151
+ - name: liquidation_participation
152
+ type: string
153
+ description: 'Liquidation participation type: non_participating (94-96%) or participating'
154
+ default: non_participating
155
+ - name: anti_dilution_type
156
+ type: string
157
+ description: 'Anti-dilution formula: broad_based_weighted_average (>98%) or full_ratchet'
158
+ default: broad_based_weighted_average
159
+ - name: include_pay_to_play
160
+ type: boolean
161
+ description: Include Section 5A pay-to-play conversion provisions (<5% of deals)
162
+ - name: include_redemption
163
+ type: boolean
164
+ description: Include Article Sixth full redemption provisions (2-5% of deals)
165
+ priority_fields:
166
+ - company_name
38
167
  - original_issue_price
39
168
  - initial_purchase_price
40
- - time_zone
41
169
  - par_value
42
170
  - specify_percentage
43
171
  - effective_date
172
+ - total_authorized_shares
173
+ - common_shares_authorized
174
+ - preferred_shares_authorized
@@ -1,9 +1,102 @@
1
1
  {
2
+ "INCORPORATIONOF > [_________]": "{company_name}",
3
+ "[____________], a corporation": "{company_name}",
4
+ "name of this corporation is > [_______________]": "{company_name}",
5
+ "registered agent at such address is > [_____________________]": "{registered_agent_name}",
6
+ "State of Delaware is > [_____________]": "{registered_agent_address}",
7
+ "in the City of [__________], County of [__________].": "in the City of {registered_agent_city}, County of {registered_agent_county}.",
8
+ "authority to issue is > [______]. The Corporation has": "{total_authorized_shares}. The Corporation has",
9
+ "The Corporation has > [two] classes of stock": "{number_of_classes} classes of stock",
10
+ "There are > [_____] shares of authorized Common Stock": "{common_shares_authorized} shares of authorized Common Stock",
11
+ "), and > [______] shares of authorized Preferred Stock": "{preferred_shares_authorized} shares of authorized Preferred Stock",
12
+ "Common Stock, $ > [_____] par value per share": "{par_value} par value per share",
13
+ "Preferred Stock, $ > [______] par value per share": "{par_value} par value per share",
14
+ "on or after > [_____________]": "{redemption_start_date}",
2
15
  "[insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
3
16
  "[insert initial Series A purchase price]": "{initial_purchase_price}",
17
+ "greater of (i) > [__ times]": "{liquidation_preference_multiple} times",
18
+ "equal to > [___ times]": "{liquidation_preference_multiple} times",
19
+ "shall mean, with respect to any series of Preferred Stock, > [8]%": "{dividend_rate_percent}%",
20
+ "rate per annum of $ > [___]": "{dividend_rate_per_share}",
21
+ "when at least > [____]": "{preferred_shares_outstanding_threshold}",
22
+ "shall be entitled to elect > [__] director[s]": "{preferred_director_seats} director[s]",
23
+ "shall be entitled to elect > [__] directors of the Corporation": "{number_of_classes} directors of the Corporation",
24
+ "when at least > [__]": "{preferred_shares_outstanding_threshold}",
25
+ "at least > [__] days prior": "{qualified_financing_notice_days} days prior",
4
26
  "[Signature Page Follows]": "{signature_page_marker}",
5
27
  "[Eastern/Pacific]": "{time_zone}",
6
- "[$0.001]": "${par_value}",
28
+ "[$0.001]": "{par_value}",
7
29
  "[specify percentage]": "{specify_percentage}",
8
- "[________ __, 20__]": "{effective_date}"
30
+ "[________ __, 20__]": "{effective_date}",
31
+ "not later than > [10]": "{adjustment_notice_days}",
32
+ "at least > [10]": "{conversion_notice_days}",
33
+ "aggregate per annum rate equal to > [12]%": "{redemption_interest_rate}%",
34
+ "$_______ [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
35
+ "following such action would not exceed $ > [_______]": "{acquisition_exception_shares}",
36
+ "greater than $ > [_______]": "{strategic_partnership_exception_shares}",
37
+ "is less than $ > [_______]": "{acquisition_exception_shares}",
38
+ " [under the name [_______________]]": "{under_the_name_clause}",
39
+ "[There shall be no cumulative voting.]": "{no_cumulative_voting_clause}",
40
+ "[; provided, however, that, except as otherwise required by law, holders of Common Stock, as such, shall not be entitled to vote on any amendment to this Amended and Restated Certificate of Incorporation (this “Certificate of Incorporation”) that relates solely to the terms of one or more outstanding series of Preferred Stock if the holders of such affected series are entitled, either separately or together with the holders of one or more other such series, to vote thereon pursuant to this Certificate of Incorporation or pursuant to the General Corporation Law]": "{common_stock_voting_limitation_clause}",
41
+ "[The number of authorized shares of Common Stock may be increased or decreased (but not below the number of shares thereof then outstanding) by (in addition to any vote of the holders of one or more series of Preferred Stock that may be required by the terms of this Certificate of Incorporation) the affirmative vote of the holders of shares of capital stock of the Corporation representing a majority of the votes represented by all outstanding shares of capital stock of the Corporation entitled to vote, irrespective of the provisions of Section 242(b)(2) of the General Corporation Law.]": "{authorized_shares_vote_provision_clause}",
42
+ "[all/a majority of the]": "{preferred_shares_designated_portion}",
43
+ "[the series of]": "the Series {series_designation}",
44
+ "acquisition of another corporation > [[do not exceed an aggregate of [______] shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)];] [or]": "{acquisition_exception_shares} shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)];] [or]",
45
+ "approved by the Requisite Directors] > [that do not exceed an aggregate of [______] shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)];]": "that do not exceed an aggregate of {strategic_partnership_exception_shares} shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)];]",
46
+ "strategic partnerships > [that do not exceed an aggregate of [______] shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)].": "that do not exceed an aggregate of {strategic_partnership_exception_shares} shares of Common Stock (including shares underlying (directly or indirectly) any such Options or Convertible Securities)].",
47
+ "[or officer]": "{or_officer_clause}",
48
+ "[the greater of]": "{dividend_formula_prefix} ",
49
+ "[the sum of]": "{dividend_formula_alt}",
50
+ "[and Section 6.1]": "{redemption_cross_ref_clause}",
51
+ "[the corporation] > [Signature Page Follows]": "{signature_page_marker}",
52
+ "[or in Section 2.1 [and Section 6.1] > [Eastern/Pacific]": "{time_zone}",
53
+ "[a majority[, by voting power,] > [$0.001]": "{par_value}",
54
+ "[, including the approval of [at least one] > [specify percentage]": "{specify_percentage}",
55
+ "[Initial Consideration] > [________ __, 20__]": "{effective_date}",
56
+ "[Additional Consideration] > [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
57
+ "[Notwithstanding the foregoing, for administrative convenience, the initial Preferred Director[s] > [insert initial Series A purchase price]": "{initial_purchase_price}",
58
+ "[or appointed by the last sentence of Section 3.2(a)] > [all/a majority of the]": "{preferred_shares_designated_portion}",
59
+ "[(and to the extent any of such directorships is not otherwise filled by a director appointed in accordance with the last sentence of Section 3.2(a))] > [the series of]": "the Series {series_designation}",
60
+ "[elected by the stockholders entitled to elect the At-Large Directors] > [or officer]": "{or_officer_clause}",
61
+ "[including [a majority of] > [the greater of]": "{dividend_formula_prefix} ",
62
+ "[(subject to appropriate adjustment in the event of any stock dividend, stock split, combination or other similar recapitalization with respect to the Preferred Stock)] > [the sum of]": "{dividend_formula_alt}",
63
+ "[, and any such act or transaction that has not been approved by such consent or vote prior to such act or transaction being effected shall be null and void ab initio, and of no force or effect] > [Signature Page Follows]": "{signature_page_marker}",
64
+ "[in a manner that adversely affects the special rights, powers and preferences of the Preferred Stock (or any series thereof)] > [Eastern/Pacific]": "{time_zone}",
65
+ "[or pari passu with] > [$0.001]": "{par_value}",
66
+ "[or decrease] > [specify percentage]": "{specify_percentage}",
67
+ "[increase or decrease the authorized number of directors constituting the Board of Directors, or change the number of votes entitled to be cast by any director or directors on any matter[; or] > [________ __, 20__]": "{effective_date}",
68
+ "[.] > [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
69
+ "[unless otherwise approved by the Requisite Directors:\n[unless the aggregate indebtedness of the Corporation and its subsidiaries for borrowed money following such action would not exceed $[_______] > [insert initial Series A purchase price]": "{initial_purchase_price}",
70
+ "[(i) create or adopt any equity (or equity-linked) compensation plan; [or (ii) amend any such plan to increase the number of shares authorized for issuance thereunder] > [all/a majority of the]": "{preferred_shares_designated_portion}",
71
+ "[approve the annual budget or any [material] > [the series of]": "the Series {series_designation}",
72
+ "[enter into a real estate lease having a term longer than, or extend a real estate lease to result in a term longer than, three years, unless [either (i)] > [or officer]": "{or_officer_clause}",
73
+ "[or (ii) it is included in an annual budget or any amendment thereto approved in accordance with Section 3.3.9(f)] > [the greater of]": "{dividend_formula_prefix} ",
74
+ "[or Section 6.1] > [the sum of]": "{dividend_formula_alt}",
75
+ "[Unless a later time and date is otherwise specified by the holder,] > [Signature Page Follows]": "{signature_page_marker}",
76
+ "[approved (i) prior to the Original Issue Date or (ii) by the Requisite Directors] > [Eastern/Pacific]": "{time_zone}",
77
+ "[the Requisite Holders] > [$0.001]": "{par_value}",
78
+ "[the holders of [a majority] > [specify percentage]": "{specify_percentage}",
79
+ "[and prior to [Date] > [________ __, 20__]": "{effective_date}",
80
+ "[, and such issuance dates occur within a period of no more than [180] > [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
81
+ "[(i)] > [insert initial Series A purchase price]": "{initial_purchase_price}",
82
+ "[at a price of at least $[_____] > [all/a majority of the]": "{preferred_shares_designated_portion}",
83
+ "[gross] > [the series of]": "the Series {series_designation}",
84
+ "[, net of the underwriting discount and commissions,] > [or officer]": "{or_officer_clause}",
85
+ "[Requisite Directors] > [the greater of]": "{dividend_formula_prefix} ",
86
+ "[, for which the Board of Directors, in its sole discretion, determines that the Corporation is expected to have a market capitalization equal to or greater than $[__________] > [the sum of]": "{dividend_formula_alt}",
87
+ "[then each share] > [Signature Page Follows]": "{signature_page_marker}",
88
+ "[then the Applicable Portion (as defined below) of the shares] > [Eastern/Pacific]": "{time_zone}",
89
+ "[and (c) a new certificate for the number of shares, if any, of Preferred Stock represented by such surrendered certificate and not converted pursuant to Section 5A.1] > [$0.001]": "{par_value}",
90
+ "[the number of shares of Preferred Stock owned by such holder, and the denominator of which is equal to the aggregate number of outstanding shares of Preferred Stock] > [specify percentage]": "{specify_percentage}",
91
+ "[that would result in at least $_______ in gross proceeds to the Corporation, [including/excluding] > [________ __, 20__]": "{effective_date}",
92
+ "[Requisite Holders] > [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
93
+ "[Other than as set forth in Section 2.3.2(b), the Preferred Stock is not redeemable at the option of the holder or the Corporation.] > [insert initial Series A purchase price]": "{initial_purchase_price}",
94
+ "[the applicable Original Issue Price, plus all declared but unpaid dividends thereon] > [all/a majority of the]": "{preferred_shares_designated_portion}",
95
+ "[and (B) the Fair Market Value (determined in the manner set forth below) of such share of Preferred Stock as of the date of the Corporation’s receipt of the Redemption Request] > [the series of]": "the Series {series_designation}",
96
+ "[; provided, however, that Excluded Shares (as such term is defined in Section 6.2) shall not be redeemed and shall be excluded from the calculations set forth in this sentence] > [or officer]": "{or_officer_clause}",
97
+ "[annually] > [the greater of]": "{dividend_formula_prefix} ",
98
+ "[or officers] > [the sum of]": "{dividend_formula_alt}",
99
+ "Redemption. > [Other than as set forth in Section 2.3.2(b), the Preferred Stock is not redeemable at the option of the holder or the Corporation.],": "{no_redemption_clause}",
100
+ "Preferred Stock”), > [all]": "{preferred_shares_designated_portion}",
101
+ "designated as “Series > A Preferred Stock": "{series_designation} Preferred Stock"
9
102
  }
@@ -0,0 +1,44 @@
1
+ # COI Selections Roadmap
2
+
3
+ Research-informed field architecture for future selection sprints, based on Fenwick (2024), Cooley Q4 2025, and WSGR 2023-2025 data.
4
+
5
+ ## Implemented
6
+
7
+ | Feature | Market Default | Frequency | Implementation |
8
+ |---|---|---|---|
9
+ | No cumulative voting | Included | >95% | boolean — computed.json |
10
+ | Common stock voting limitation | Included | >90% | boolean — computed.json |
11
+ | Authorized shares vote opt-out | Included | >95% | boolean — computed.json |
12
+ | Officer indemnification | Included | >80% | boolean — computed.json |
13
+ | Redemption cross-ref (§6.1) | Excluded | <5% | boolean — computed.json |
14
+ | Dividends (3-option radio) | Non-cumulative as-converted | >95% | selections.json — `dividends` group |
15
+ | Liquidation §2.1 (2-option radio) | Non-participating | 94-96% | selections.json — `liquidation_section_2_1` group |
16
+ | Liquidation §2.2 (2-option radio) | Non-participating | 94-96% | selections.json — `liquidation_section_2_2` group |
17
+ | Anti-dilution (2-option radio) | Broad-based weighted avg | >98% | selections.json — `anti_dilution` group |
18
+ | Pay-to-play (checkbox toggle) | Excluded | <5% | selections.json — `pay_to_play` group |
19
+ | Redemption (checkbox toggle) | Excluded | 2-5% | selections.json — `redemption_provisions` group |
20
+
21
+ ## Future Sprint Priorities
22
+
23
+ ### 1. Protective Provisions Checkbox Group
24
+ - 10-15 individually-toggled sub-clauses
25
+ - Most complex but each is simple include/exclude
26
+ - >80% include standard set
27
+
28
+ ### 2. Deemed Liquidation Event Fields
29
+ - Additional fields within Section 2.3
30
+
31
+ ### 3. QPO/Mandatory Conversion Threshold Fields
32
+ - Qualified public offering threshold parameters
33
+
34
+ ### 4. Capped Participating Liquidation Preference Variant
35
+ - Third liquidation option: participating with cap
36
+ - Would extend `liquidation_section_2_1` and `liquidation_section_2_2` groups
37
+
38
+ ## Architecture Notes
39
+
40
+ - Paragraph-block selections (dividends, liquidation) use markerless groups with multi-paragraph scope
41
+ - Liquidation uses two paired radio groups (§2.1 and §2.2) with explicit `subClauseStopPatterns`
42
+ - Protective provisions need per-clause checkbox groups within a single section
43
+ - Pay-to-Play and Redemption are article-level toggles (simplest selection type)
44
+ - Redemption inline bracket text handled via computed.json + replacements.json