@open-agreements/open-agreements 0.4.0 → 0.5.0

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 (146) hide show
  1. package/README.md +13 -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 +78 -0
  9. package/content/recipes/nvca-certificate-of-incorporation/metadata.yaml +115 -2
  10. package/content/recipes/nvca-certificate-of-incorporation/replacements.json +50 -2
  11. package/content/recipes/nvca-certificate-of-incorporation/selections-roadmap.md +47 -0
  12. package/content/recipes/nvca-indemnification-agreement/metadata.yaml +5 -1
  13. package/content/recipes/nvca-indemnification-agreement/replacements.json +30 -5
  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 +62 -3
  21. package/content/recipes/nvca-stock-purchase-agreement/clean.json +8 -3
  22. package/content/recipes/nvca-stock-purchase-agreement/metadata.yaml +6 -1
  23. package/content/recipes/nvca-stock-purchase-agreement/normalize.json +0 -16
  24. package/content/recipes/nvca-stock-purchase-agreement/replacements.json +15 -12
  25. package/content/recipes/nvca-stock-purchase-agreement/selections.json +17 -0
  26. package/content/recipes/nvca-voting-agreement/clean.json +11 -1
  27. package/content/recipes/nvca-voting-agreement/metadata.yaml +1 -1
  28. package/content/recipes/nvca-voting-agreement/replacements.json +2 -1
  29. package/content/templates/bonterms-mutual-nda/metadata.yaml +1 -1
  30. package/content/templates/bonterms-professional-services-agreement/metadata.yaml +1 -1
  31. package/content/templates/closing-checklist/metadata.yaml +1 -1
  32. package/content/templates/common-paper-ai-addendum/metadata.yaml +1 -1
  33. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +1 -1
  34. package/content/templates/common-paper-amendment/metadata.yaml +1 -1
  35. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +1 -1
  36. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +1 -1
  37. package/content/templates/common-paper-csa-click-through/metadata.yaml +1 -1
  38. package/content/templates/common-paper-csa-with-ai/metadata.yaml +1 -1
  39. package/content/templates/common-paper-csa-with-sla/metadata.yaml +1 -1
  40. package/content/templates/common-paper-csa-without-sla/metadata.yaml +1 -1
  41. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +1 -1
  42. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +1 -1
  43. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +1 -1
  44. package/content/templates/common-paper-letter-of-intent/metadata.yaml +1 -1
  45. package/content/templates/common-paper-mutual-nda/metadata.yaml +1 -1
  46. package/content/templates/common-paper-one-way-nda/metadata.yaml +1 -1
  47. package/content/templates/common-paper-order-form/metadata.yaml +1 -1
  48. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +1 -1
  49. package/content/templates/common-paper-partnership-agreement/metadata.yaml +1 -1
  50. package/content/templates/common-paper-pilot-agreement/metadata.yaml +1 -1
  51. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +1 -1
  52. package/content/templates/common-paper-software-license-agreement/metadata.yaml +1 -1
  53. package/content/templates/common-paper-statement-of-work/metadata.yaml +1 -1
  54. package/content/templates/common-paper-term-sheet/metadata.yaml +1 -1
  55. package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +1 -1
  56. package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +1 -1
  57. package/content/templates/openagreements-employment-offer-letter/metadata.yaml +1 -1
  58. package/content/templates/working-group-list/metadata.yaml +1 -1
  59. package/dist/cli/index.d.ts.map +1 -1
  60. package/dist/cli/index.js +8 -4
  61. package/dist/cli/index.js.map +1 -1
  62. package/dist/commands/fill.js +3 -3
  63. package/dist/commands/fill.js.map +1 -1
  64. package/dist/commands/list.js +19 -15
  65. package/dist/commands/list.js.map +1 -1
  66. package/dist/core/command-generation/adapters/claude.js +4 -4
  67. package/dist/core/employment/memo.js +3 -3
  68. package/dist/core/engine.js +1 -1
  69. package/dist/core/external/index.js +1 -1
  70. package/dist/core/fill-pipeline.d.ts +3 -3
  71. package/dist/core/fill-pipeline.js +6 -6
  72. package/dist/core/fill-pipeline.js.map +1 -1
  73. package/dist/core/metadata.d.ts +13 -3
  74. package/dist/core/metadata.d.ts.map +1 -1
  75. package/dist/core/metadata.js +19 -11
  76. package/dist/core/metadata.js.map +1 -1
  77. package/dist/core/recipe/bracket-normalizer.d.ts +4 -5
  78. package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -1
  79. package/dist/core/recipe/bracket-normalizer.js +67 -149
  80. package/dist/core/recipe/bracket-normalizer.js.map +1 -1
  81. package/dist/core/recipe/cleaner.d.ts.map +1 -1
  82. package/dist/core/recipe/cleaner.js +91 -7
  83. package/dist/core/recipe/cleaner.js.map +1 -1
  84. package/dist/core/recipe/downloader.d.ts.map +1 -1
  85. package/dist/core/recipe/downloader.js +8 -3
  86. package/dist/core/recipe/downloader.js.map +1 -1
  87. package/dist/core/recipe/index.d.ts +2 -1
  88. package/dist/core/recipe/index.d.ts.map +1 -1
  89. package/dist/core/recipe/index.js +11 -4
  90. package/dist/core/recipe/index.js.map +1 -1
  91. package/dist/core/recipe/patcher.d.ts +9 -5
  92. package/dist/core/recipe/patcher.d.ts.map +1 -1
  93. package/dist/core/recipe/patcher.js +183 -136
  94. package/dist/core/recipe/patcher.js.map +1 -1
  95. package/dist/core/recipe/replacement-keys.d.ts +2 -7
  96. package/dist/core/recipe/replacement-keys.d.ts.map +1 -1
  97. package/dist/core/recipe/replacement-keys.js +3 -20
  98. package/dist/core/recipe/replacement-keys.js.map +1 -1
  99. package/dist/core/recipe/source-drift.js +1 -1
  100. package/dist/core/recipe/source-drift.js.map +1 -1
  101. package/dist/core/recipe/verifier.d.ts +7 -1
  102. package/dist/core/recipe/verifier.d.ts.map +1 -1
  103. package/dist/core/recipe/verifier.js +69 -3
  104. package/dist/core/recipe/verifier.js.map +1 -1
  105. package/dist/core/selector.d.ts +2 -0
  106. package/dist/core/selector.d.ts.map +1 -1
  107. package/dist/core/selector.js +97 -1
  108. package/dist/core/selector.js.map +1 -1
  109. package/dist/core/template-listing.d.ts +3 -1
  110. package/dist/core/template-listing.d.ts.map +1 -1
  111. package/dist/core/template-listing.js +4 -3
  112. package/dist/core/template-listing.js.map +1 -1
  113. package/dist/core/unified-pipeline.d.ts +1 -1
  114. package/dist/core/unified-pipeline.d.ts.map +1 -1
  115. package/dist/core/unified-pipeline.js +21 -3
  116. package/dist/core/unified-pipeline.js.map +1 -1
  117. package/dist/core/validation/external.d.ts.map +1 -1
  118. package/dist/core/validation/external.js +0 -2
  119. package/dist/core/validation/external.js.map +1 -1
  120. package/dist/core/validation/recipe.d.ts.map +1 -1
  121. package/dist/core/validation/recipe.js +0 -2
  122. package/dist/core/validation/recipe.js.map +1 -1
  123. package/dist/core/validation/scan-metadata.d.ts.map +1 -1
  124. package/dist/core/validation/scan-metadata.js +17 -1
  125. package/dist/core/validation/scan-metadata.js.map +1 -1
  126. package/dist/core/validation/template.js +5 -5
  127. package/package.json +3 -2
  128. package/server.json +31 -0
  129. package/skills/client-email/SKILL.md +143 -0
  130. package/skills/cloud-service-agreement/SKILL.md +8 -99
  131. package/skills/data-privacy-agreement/SKILL.md +10 -97
  132. package/skills/delaware-franchise-tax/SKILL.md +7 -1
  133. package/skills/edit-docx-agreement/SKILL.md +10 -3
  134. package/skills/employment-contract/SKILL.md +10 -95
  135. package/skills/iso-27001-evidence-collection/SKILL.md +7 -1
  136. package/skills/iso-27001-internal-audit/SKILL.md +6 -0
  137. package/skills/nda/SKILL.md +7 -99
  138. package/skills/open-agreements/CONNECTORS.md +1 -1
  139. package/skills/open-agreements/SKILL.md +17 -104
  140. package/skills/recipe-quality-audit/SKILL.md +116 -0
  141. package/skills/safe/SKILL.md +12 -97
  142. package/skills/services-agreement/SKILL.md +8 -99
  143. package/skills/shared/template-filling-execution.md +92 -0
  144. package/skills/soc2-readiness/SKILL.md +7 -1
  145. package/skills/unit-test-philosophy/SKILL.md +12 -1
  146. package/skills/venture-financing/SKILL.md +11 -96
package/README.md CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  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
27
 
28
- Built by the team behind [UseJunior.com](https://usejunior.com) in production at Am Law 100 firms.
28
+ **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
29
 
30
30
  ## Quality and Trust Signals
31
31
 
@@ -325,6 +325,11 @@ Lookup precedence is:
325
325
 
326
326
  This keeps default installs simple while allowing advanced users to move large content libraries outside the core package.
327
327
 
328
+ ## See Also
329
+
330
+ - [safe-docx](https://github.com/UseJunior/safe-docx) — surgical editing of existing Word documents with coding agents (MCP server)
331
+ - [UseJunior Developer Tools](https://usejunior.com/developer-tools/open-agreements) — product page with install options and template catalog
332
+
328
333
  ## Contributing
329
334
 
330
335
  See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add templates, recipes, and other improvements.
@@ -392,6 +397,13 @@ MIT
392
397
 
393
398
  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
399
 
400
+ ## Privacy
401
+
402
+ - **Local mode** (`npx`, global install, stdio MCP): all processing happens on your machine. No document content is sent externally.
403
+ - **Hosted mode** (`https://openagreements.ai/api/mcp`): template filling runs server-side. No filled documents are stored after the response is returned.
404
+
405
+ See our [Privacy Policy](https://usejunior.com/privacy_policy) for details.
406
+
395
407
  ## Disclaimer
396
408
 
397
409
  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,78 @@
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
+ }
@@ -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,39 @@ 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
+ priority_fields:
148
+ - company_name
38
149
  - original_issue_price
39
150
  - initial_purchase_price
40
- - time_zone
41
151
  - par_value
42
152
  - specify_percentage
43
153
  - effective_date
154
+ - total_authorized_shares
155
+ - common_shares_authorized
156
+ - preferred_shares_authorized
@@ -1,9 +1,57 @@
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
+ "[all] of which are hereby designated as “Series A Preferred Stock”": "{preferred_shares_designated_portion} of which are hereby designated as “Series {series_designation} Preferred Stock”",
15
+ "on or after > [_____________]": "{redemption_start_date}",
2
16
  "[insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
3
17
  "[insert initial Series A purchase price]": "{initial_purchase_price}",
18
+ "greater of (i) > [__ times]": "{liquidation_preference_multiple} times",
19
+ "equal to > [___ times]": "{liquidation_preference_multiple} times",
20
+ "shall mean, with respect to any series of Preferred Stock, > [8]%": "{dividend_rate_percent}%",
21
+ "rate per annum of $ > [___]": "{dividend_rate_per_share}",
22
+ "when at least > [____]": "{preferred_shares_outstanding_threshold}",
23
+ "shall be entitled to elect > [__] director[s]": "{preferred_director_seats} director[s]",
24
+ "shall be entitled to elect > [__] directors of the Corporation": "{number_of_classes} directors of the Corporation",
25
+ "when at least > [__]": "{preferred_shares_outstanding_threshold}",
26
+ "at least > [__] days prior": "{qualified_financing_notice_days} days prior",
4
27
  "[Signature Page Follows]": "{signature_page_marker}",
5
28
  "[Eastern/Pacific]": "{time_zone}",
6
- "[$0.001]": "${par_value}",
29
+ "[$0.001]": "{par_value}",
7
30
  "[specify percentage]": "{specify_percentage}",
8
- "[________ __, 20__]": "{effective_date}"
31
+ "[________ __, 20__]": "{effective_date}",
32
+ "not later than > [10]": "{adjustment_notice_days}",
33
+ "at least > [10]": "{conversion_notice_days}",
34
+ "aggregate per annum rate equal to > [12]%": "{redemption_interest_rate}%",
35
+ "$_______ [insert original purchase price of Series A Preferred Stock]": "{original_issue_price}",
36
+ "following such action would not exceed $ > [_______]": "{acquisition_exception_shares}",
37
+ "greater than $ > [_______]": "{strategic_partnership_exception_shares}",
38
+ "is less than $ > [_______]": "{acquisition_exception_shares}",
39
+ " [under the name [_______________]]": "{under_the_name_clause}",
40
+ "[There shall be no cumulative voting.]": "{no_cumulative_voting_clause}",
41
+ "[; 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}",
42
+ "[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}",
43
+ "[all/a majority of the]": "{preferred_shares_designated_portion}",
44
+ "[the series of]": "the Series {series_designation}",
45
+ "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]",
46
+ "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)];]",
47
+ "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)].",
48
+ "[or officer]": "{or_officer_clause}",
49
+ "[the greater of]": "{dividend_formula_prefix} ",
50
+ "[the sum of]": "{dividend_formula_alt}",
51
+ "[and Section 6.1]": "{redemption_cross_ref_clause}",
52
+
53
+ "References to \u201cPreferred Stock\u201d mean the Series A Preferred Stock": "References to \u201cPreferred Stock\u201d mean the Series {series_designation} Preferred Stock",
54
+ "with respect to the Series A Preferred Stock": "with respect to the Series {series_designation} Preferred Stock",
55
+ "per share of Series A Preferred Stock": "per share of Series {series_designation} Preferred Stock",
56
+ "first share of Series A Preferred Stock": "first share of Series {series_designation} Preferred Stock"
9
57
  }
@@ -0,0 +1,47 @@
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
+ ## Research-Confirmed Defaults (Implemented This Sprint)
6
+
7
+ | Feature | Market Default | Frequency | Field Type |
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
+
15
+ ## Future Sprint Priorities
16
+
17
+ ### 1. Dividends Radio Selection
18
+ - 3 mutually exclusive alternatives at paragraph-block level
19
+ - Options: non-cumulative (>95%), cumulative, as-converted only
20
+ - Requires markerless selections with multi-paragraph groups
21
+ - Highest legal impact
22
+
23
+ ### 2. Liquidation Preference Radio
24
+ - 3 alternatives: non-participating 1x (94-96%), participating with cap, full participating
25
+ - Also paragraph-block level, second highest impact
26
+
27
+ ### 3. Protective Provisions Checkbox Group
28
+ - 10-15 individually-toggled sub-clauses
29
+ - Most complex but each is simple include/exclude
30
+ - >80% include standard set
31
+
32
+ ### 4. Anti-Dilution Radio
33
+ - 2 clause blocks: broad-based weighted average (98-100%) vs full ratchet
34
+ - Clean swap between alternatives
35
+
36
+ ### 5. Pay-to-Play + Redemption
37
+ - Optional sections (entire articles)
38
+ - Pay-to-Play: <5% of deals
39
+ - Redemption: 2-5% of deals
40
+ - Can use markerless selection to remove entire articles
41
+
42
+ ## Architecture Notes
43
+
44
+ - Paragraph-block selections (dividends, liquidation) need markerless groups with multi-paragraph scope
45
+ - Protective provisions need per-clause checkbox groups within a single section
46
+ - Anti-dilution is a clean 2-option radio swap
47
+ - Pay-to-Play and Redemption are article-level toggles (simplest selection type)
@@ -19,6 +19,9 @@ fields:
19
19
  - name: company_name
20
20
  type: string
21
21
  description: Name of the corporation providing indemnification
22
+ - name: agreement_effective_date
23
+ type: string
24
+ description: Effective date in the opening clause (e.g., March 20, 2026)
22
25
  - name: fund_sponsor_name
23
26
  type: string
24
27
  description: Name of the sponsoring fund or entity appointing the indemnitee
@@ -66,10 +69,11 @@ fields:
66
69
  type: string
67
70
  description: Signature page marker text
68
71
  default: Signature Page Follows
69
- required_fields:
72
+ priority_fields:
70
73
  - indemnitee_name
71
74
  - indemnitee_address
72
75
  - company_name
76
+ - agreement_effective_date
73
77
  - indemnitee_role
74
78
  - indemnitee_role_plural
75
79
  - indemnitee_pronoun_possessive
@@ -1,17 +1,42 @@
1
1
  {
2
- "[name]": "{indemnitee_name}",
2
+ "[___________], 20[__]": "{agreement_effective_date}",
3
3
  "[address]": "{indemnitee_address}",
4
4
  "[corporation]": "{company_name}",
5
5
  "[name of fund/sponsor]": "{fund_sponsor_name}",
6
+ "[Name of Fund/Sponsor]": "{fund_sponsor_name}",
7
+ "a Delaware corporation (the \"Company\"), and > [name]": "{indemnitee_name}",
8
+ "to the extent such party is not otherwise subject to service of process in the State of Delaware, irrevocably > [name]": "{indemnitee_name}",
6
9
  "[director]": "{indemnitee_role}",
7
10
  "[directors]": "{indemnitee_role_plural}",
8
11
  "[officer]": "{indemnitee_role_secondary}",
9
12
  "[officers]": "{indemnitee_role_secondary_plural}",
10
- "[its]": "{indemnitee_pronoun_possessive}",
11
- "[their]": "{indemnitee_pronoun_possessive_plural}",
13
+ "provided by [Name of Fund/Sponsor] and certain of > [its]": "{indemnitee_pronoun_possessive}",
14
+ "provided by [Name of Fund/Sponsor] and certain of > [their]": "{indemnitee_pronoun_possessive_plural}",
15
+ "[Bylaws] [and] [Certificate of Incorporation]": "{bylaws_name} and {certificate_name}",
12
16
  "[Bylaws]": "{bylaws_name}",
13
17
  "[Certificate of Incorporation]": "{certificate_name}",
18
+ "[The [Bylaws] > [Bylaws]": "{bylaws_name}",
19
+ "[(iii) appoint, to the extent such party is not otherwise subject to service of process in the State of Delaware, irrevocably [name] > [address]": "{indemnitee_address}",
20
+ "[The Company hereby acknowledges that Indemnitee has certain rights to indemnification, advancement of expenses and/or insurance provided by [Name of Fund/Sponsor] > [its]": "{indemnitee_pronoun_possessive}",
14
21
  "[and Appointing Stockholder]": "{and_appointing_stockholder}",
15
- "[E]": "{indemnification_section_letter}",
16
- "[Signature Page Follows]": "{signature_page_marker}"
22
+ "[E] > [Signature Page Follows]": "{indemnification_section_letter}",
23
+ "[Signature Page Follows]": "{signature_page_marker}",
24
+ "[Comment: See In re HealthSouth Corp. Securities Litigation, 572 F.3d 854 (11th Cir. 2009).] > [director]": "{indemnitee_role}",
25
+ "[consider extending for several years after term of service, even if claim has not yet been paid] > [director]": "{indemnitee_role}",
26
+ "[Comment: Sections 7(b) through 7(e) seek to extend statutory indemnification rights pursuant to Section 145(f).] > [director]": "{indemnitee_role}",
27
+ "[Comment: Section 3(c) attempts to indemnify the indemnitee against contribution sought from other third parties.] > [director]": "{indemnitee_role}",
28
+ "[Comment: Use the bracketed language in Section 14 if a version of the indemnification of Appointing Stockholder language is used in Section 1(d)] > [director]": "{indemnitee_role}",
29
+ "[NOTE: as the Delaware-incorporated Company is already subject to service of process in Delaware, this really only applies to the individual director.] > [director]": "{indemnitee_role}",
30
+ "[and any federal, state, local or foreign taxes imposed on the Indemnitee as a result of the actual or deemed receipt of any payments under this Agreement] > [director]": "{indemnitee_role}",
31
+ "[Comment: Section 4 indemnifies individuals for costs and expenses in serving as a witness in any proceeding relating to such person’s service to the corporation.] > [director]": "{indemnitee_role}",
32
+ "[Further, the invalidity or unenforceability of any provision hereof as to either Indemnitee or Appointing Stockholder shall in no way affect the validity or enforceability of any provision hereof as to the other.] > [director]": "{indemnitee_role}",
33
+ "[unless the change in relative Beneficial Ownership of the Company’s securities by any Person results solely from a reduction in the aggregate number of outstanding shares of securities entitled to vote generally in the election of directors] > [director]": "{indemnitee_role}",
34
+ "[Comment: As noted in the introduction, Section 1(d) contains optional language extending the indemnification and advancement rights provided to a venture fund’s designee on the board of directors to the venture capital fund appointing the director.] > [director]": "{indemnitee_role}",
35
+ "[Comment: This provision integrates indemnification under the agreement with indemnification from other sources by providing that payments under the agreement shall be offset by payments from other sources, other than from the Fund Indemnitors as provided in paragraph (c).] > [director]": "{indemnitee_role}",
36
+ "[Comment: This provision is designed to prevent the indemnitee from being indemnified for actions brought by the indemnitee except as otherwise provided. as well as for liability under Section 16(b) of the 1934 Act, for certain reimbursements of the Company by Indemnitee and where payment has already been made under an insurance policy.] > [director]": "{indemnitee_role}",
37
+ "[Comment: Section 3(d) provides for contribution by the Company even if the Company is not held jointly liable based on the relative benefit to the Company of the conduct of the indemnitee giving rise to the loss or expenses incurred by the indemnitee and/or the relative fault of the Company and the indemnitee in connection with the matter in question.] > [director]": "{indemnitee_role}",
38
+ "[Comment: Some indemnification agreements require the corporation to obtain (or use commercially reasonable or best efforts to obtain) D&amp;O insurance with specified policy limits or other terms. Instead, this agreement requires the corporation to furnish the Indemnitee with the maximum level of D&amp;O insurance coverage provided to other like parties.] > [director]": "{indemnitee_role}",
39
+ "[This Agreement shall be binding upon and inure to the benefit of and be enforceable by the parties hereto and their respective successors (including any direct or indirect successor by purchase, merger, consolidation or otherwise to all or substantially all of the business or assets of the Company), assigns, spouses, heirs, executors and personal and legal representatives.] > [director]": "{indemnitee_role}",
40
+ "[Comment: Section 3(a), in effect, provides that where the corporation and the individual are jointly liable (or if joined, would be), the corporation shall contribute 100% of the liability, and the individual would not be required to contribute anything. Section 3(a) also prohibits the corporation from entering into any settlement that does not completely release the individual.] > [director]": "{indemnitee_role}",
41
+ "[Comment: Section 7(a) provides for a right of adjudication before a Delaware court in the event of certain adverse results under the Agreement. Some indemnification agreements also provide that Indemnitee, at his or her option, may seek an award in arbitration to be conducted by a single arbitrator pursuant to the Commercial Arbitration Rules of the American Arbitration Association.] > [director]": "{indemnitee_role}"
17
42
  }
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "removeFootnotes": true,
3
3
  "removeParagraphPatterns": [
4
+ "^An Investors['\u2019] Rights Agreement can cover many different subjects",
4
5
  "^Note to Drafter:",
5
6
  "^Preliminary Note\\b",
6
7
  "^Alternative 1:",
7
8
  "^Alternative 2:",
8
9
  "^Alternative:",
9
10
  "^\\[Alternative",
10
- "^Annex 2"
11
+ "^Annex 2",
12
+ "^Last [Uu]pdated"
13
+ ],
14
+ "removeRanges": [
15
+ {
16
+ "start": "^This sample document is the work product",
17
+ "end": "are flagged as .Revised."
18
+ }
11
19
  ]
12
20
  }
@@ -59,7 +59,7 @@ fields:
59
59
  - name: checklist_delivery_date
60
60
  type: string
61
61
  description: Date the compliance checklist is being delivered
62
- required_fields:
62
+ priority_fields:
63
63
  - company_name
64
64
  - company_name_short
65
65
  - investor_name
@@ -14,5 +14,8 @@
14
14
  "[description of business]": "{business_description}",
15
15
  "[Signature Page Follows]": "{signature_page_marker}",
16
16
  "[_________ __, 20__]": "{effective_date}",
17
- "[Date checklist is being delivered]": "{checklist_delivery_date}"
17
+ "[Date checklist is being delivered]": "{checklist_delivery_date}",
18
+ "[________], 20[__]": "{effective_date}",
19
+ "among [____________], a Delaware": "among {company_name}, a Delaware",
20
+ "U.S. District Court for the District of [_____]": "U.S. District Court for the {judicial_district}"
18
21
  }
@@ -37,7 +37,7 @@ fields:
37
37
  type: string
38
38
  description: Signature page marker text
39
39
  default: Signature Page Follows
40
- required_fields:
40
+ priority_fields:
41
41
  - company_name_upper
42
42
  - investor_name
43
43
  - investor_name_upper
@@ -2,6 +2,16 @@
2
2
  "removeFootnotes": true,
3
3
  "removeParagraphPatterns": [
4
4
  "^Note to Drafter:",
5
- "^Preliminary Note\\b"
5
+ "^Preliminary Note\\b",
6
+ "^\\[?Alternative 1:",
7
+ "^\\[?Alternative 2:",
8
+ "^\\[Alternative",
9
+ "^Last [Uu]pdated"
10
+ ],
11
+ "removeRanges": [
12
+ {
13
+ "start": "^This sample document is the work product",
14
+ "end": "are flagged as .Revised."
15
+ }
6
16
  ]
7
17
  }
@@ -26,6 +26,10 @@ fields:
26
26
  type: string
27
27
  description: Additional counsel to CC on notices, or empty string if none
28
28
  default: ''
29
+ - name: optional_blank_value
30
+ type: string
31
+ description: Empty-value replacement used to clear optional bracketed drafting text and formatting artifacts
32
+ default: ''
29
33
  - name: amended_restated_upper
30
34
  type: string
31
35
  description: Uppercase prefix if amending a prior agreement (e.g. AMENDED AND RESTATED) or empty string
@@ -63,7 +67,7 @@ fields:
63
67
  type: string
64
68
  description: Label for the key holders group (e.g. Key Holders or Founders)
65
69
  default: Key Holders
66
- required_fields:
70
+ priority_fields:
67
71
  - company_name
68
72
  - investor_name
69
73
  - key_holder_name