open-agreements 0.1.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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/bin/open-agreements.js +2 -0
  4. package/dist/cli/index.d.ts +2 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +102 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/fill.d.ts +7 -0
  9. package/dist/commands/fill.d.ts.map +1 -0
  10. package/dist/commands/fill.js +84 -0
  11. package/dist/commands/fill.js.map +1 -0
  12. package/dist/commands/list.d.ts +6 -0
  13. package/dist/commands/list.d.ts.map +1 -0
  14. package/dist/commands/list.js +202 -0
  15. package/dist/commands/list.js.map +1 -0
  16. package/dist/commands/recipe.d.ts +21 -0
  17. package/dist/commands/recipe.d.ts.map +1 -0
  18. package/dist/commands/recipe.js +71 -0
  19. package/dist/commands/recipe.js.map +1 -0
  20. package/dist/commands/scan.d.ts +12 -0
  21. package/dist/commands/scan.d.ts.map +1 -0
  22. package/dist/commands/scan.js +122 -0
  23. package/dist/commands/scan.js.map +1 -0
  24. package/dist/commands/validate.d.ts +6 -0
  25. package/dist/commands/validate.d.ts.map +1 -0
  26. package/dist/commands/validate.js +139 -0
  27. package/dist/commands/validate.js.map +1 -0
  28. package/dist/core/command-generation/adapters/claude.d.ts +11 -0
  29. package/dist/core/command-generation/adapters/claude.d.ts.map +1 -0
  30. package/dist/core/command-generation/adapters/claude.js +85 -0
  31. package/dist/core/command-generation/adapters/claude.js.map +1 -0
  32. package/dist/core/command-generation/types.d.ts +14 -0
  33. package/dist/core/command-generation/types.d.ts.map +1 -0
  34. package/dist/core/command-generation/types.js +2 -0
  35. package/dist/core/command-generation/types.js.map +1 -0
  36. package/dist/core/engine.d.ts +13 -0
  37. package/dist/core/engine.d.ts.map +1 -0
  38. package/dist/core/engine.js +149 -0
  39. package/dist/core/engine.js.map +1 -0
  40. package/dist/core/external/index.d.ts +8 -0
  41. package/dist/core/external/index.d.ts.map +1 -0
  42. package/dist/core/external/index.js +92 -0
  43. package/dist/core/external/index.js.map +1 -0
  44. package/dist/core/external/types.d.ts +18 -0
  45. package/dist/core/external/types.d.ts.map +1 -0
  46. package/dist/core/external/types.js +2 -0
  47. package/dist/core/external/types.js.map +1 -0
  48. package/dist/core/fill-pipeline.d.ts +61 -0
  49. package/dist/core/fill-pipeline.d.ts.map +1 -0
  50. package/dist/core/fill-pipeline.js +279 -0
  51. package/dist/core/fill-pipeline.js.map +1 -0
  52. package/dist/core/fill-utils.d.ts +39 -0
  53. package/dist/core/fill-utils.d.ts.map +1 -0
  54. package/dist/core/fill-utils.js +127 -0
  55. package/dist/core/fill-utils.js.map +1 -0
  56. package/dist/core/metadata.d.ts +396 -0
  57. package/dist/core/metadata.d.ts.map +1 -0
  58. package/dist/core/metadata.js +126 -0
  59. package/dist/core/metadata.js.map +1 -0
  60. package/dist/core/recipe/cleaner.d.ts +13 -0
  61. package/dist/core/recipe/cleaner.d.ts.map +1 -0
  62. package/dist/core/recipe/cleaner.js +106 -0
  63. package/dist/core/recipe/cleaner.js.map +1 -0
  64. package/dist/core/recipe/downloader.d.ts +8 -0
  65. package/dist/core/recipe/downloader.d.ts.map +1 -0
  66. package/dist/core/recipe/downloader.js +58 -0
  67. package/dist/core/recipe/downloader.js.map +1 -0
  68. package/dist/core/recipe/index.d.ts +14 -0
  69. package/dist/core/recipe/index.d.ts.map +1 -0
  70. package/dist/core/recipe/index.js +91 -0
  71. package/dist/core/recipe/index.js.map +1 -0
  72. package/dist/core/recipe/ooxml-parts.d.ts +21 -0
  73. package/dist/core/recipe/ooxml-parts.d.ts.map +1 -0
  74. package/dist/core/recipe/ooxml-parts.js +33 -0
  75. package/dist/core/recipe/ooxml-parts.js.map +1 -0
  76. package/dist/core/recipe/patcher.d.ts +17 -0
  77. package/dist/core/recipe/patcher.d.ts.map +1 -0
  78. package/dist/core/recipe/patcher.js +240 -0
  79. package/dist/core/recipe/patcher.js.map +1 -0
  80. package/dist/core/recipe/types.d.ts +28 -0
  81. package/dist/core/recipe/types.d.ts.map +1 -0
  82. package/dist/core/recipe/types.js +2 -0
  83. package/dist/core/recipe/types.js.map +1 -0
  84. package/dist/core/recipe/verifier.d.ts +24 -0
  85. package/dist/core/recipe/verifier.d.ts.map +1 -0
  86. package/dist/core/recipe/verifier.js +143 -0
  87. package/dist/core/recipe/verifier.js.map +1 -0
  88. package/dist/core/validation/external.d.ts +16 -0
  89. package/dist/core/validation/external.d.ts.map +1 -0
  90. package/dist/core/validation/external.js +106 -0
  91. package/dist/core/validation/external.js.map +1 -0
  92. package/dist/core/validation/license.d.ts +15 -0
  93. package/dist/core/validation/license.d.ts.map +1 -0
  94. package/dist/core/validation/license.js +30 -0
  95. package/dist/core/validation/license.js.map +1 -0
  96. package/dist/core/validation/output.d.ts +12 -0
  97. package/dist/core/validation/output.d.ts.map +1 -0
  98. package/dist/core/validation/output.js +47 -0
  99. package/dist/core/validation/output.js.map +1 -0
  100. package/dist/core/validation/recipe.d.ts +19 -0
  101. package/dist/core/validation/recipe.d.ts.map +1 -0
  102. package/dist/core/validation/recipe.js +148 -0
  103. package/dist/core/validation/recipe.js.map +1 -0
  104. package/dist/core/validation/template.d.ts +11 -0
  105. package/dist/core/validation/template.d.ts.map +1 -0
  106. package/dist/core/validation/template.js +159 -0
  107. package/dist/core/validation/template.js.map +1 -0
  108. package/dist/index.d.ts +13 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +19 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/utils/paths.d.ts +15 -0
  113. package/dist/utils/paths.d.ts.map +1 -0
  114. package/dist/utils/paths.js +43 -0
  115. package/dist/utils/paths.js.map +1 -0
  116. package/external/LICENSE +27 -0
  117. package/external/README.md +38 -0
  118. package/external/yc-safe-discount/README.md +16 -0
  119. package/external/yc-safe-discount/clean.json +4 -0
  120. package/external/yc-safe-discount/metadata.yaml +71 -0
  121. package/external/yc-safe-discount/replacements.json +13 -0
  122. package/external/yc-safe-discount/template.docx +0 -0
  123. package/external/yc-safe-mfn/README.md +16 -0
  124. package/external/yc-safe-mfn/clean.json +4 -0
  125. package/external/yc-safe-mfn/metadata.yaml +64 -0
  126. package/external/yc-safe-mfn/replacements.json +12 -0
  127. package/external/yc-safe-mfn/template.docx +0 -0
  128. package/external/yc-safe-pro-rata-side-letter/README.md +16 -0
  129. package/external/yc-safe-pro-rata-side-letter/clean.json +4 -0
  130. package/external/yc-safe-pro-rata-side-letter/metadata.yaml +49 -0
  131. package/external/yc-safe-pro-rata-side-letter/replacements.json +9 -0
  132. package/external/yc-safe-pro-rata-side-letter/template.docx +0 -0
  133. package/external/yc-safe-valuation-cap/README.md +16 -0
  134. package/external/yc-safe-valuation-cap/clean.json +4 -0
  135. package/external/yc-safe-valuation-cap/metadata.yaml +64 -0
  136. package/external/yc-safe-valuation-cap/replacements.json +12 -0
  137. package/external/yc-safe-valuation-cap/template.docx +0 -0
  138. package/package.json +77 -0
  139. package/recipes/nvca-certificate-of-incorporation/clean.json +8 -0
  140. package/recipes/nvca-certificate-of-incorporation/metadata.yaml +43 -0
  141. package/recipes/nvca-certificate-of-incorporation/replacements.json +9 -0
  142. package/recipes/nvca-certificate-of-incorporation/schema.json +11 -0
  143. package/recipes/nvca-indemnification-agreement/clean.json +7 -0
  144. package/recipes/nvca-indemnification-agreement/metadata.yaml +83 -0
  145. package/recipes/nvca-indemnification-agreement/replacements.json +17 -0
  146. package/recipes/nvca-indemnification-agreement/schema.json +19 -0
  147. package/recipes/nvca-investors-rights-agreement/clean.json +12 -0
  148. package/recipes/nvca-investors-rights-agreement/metadata.yaml +75 -0
  149. package/recipes/nvca-investors-rights-agreement/replacements.json +18 -0
  150. package/recipes/nvca-investors-rights-agreement/schema.json +18 -0
  151. package/recipes/nvca-management-rights-letter/clean.json +7 -0
  152. package/recipes/nvca-management-rights-letter/metadata.yaml +50 -0
  153. package/recipes/nvca-management-rights-letter/replacements.json +11 -0
  154. package/recipes/nvca-management-rights-letter/schema.json +13 -0
  155. package/recipes/nvca-rofr-co-sale-agreement/clean.json +7 -0
  156. package/recipes/nvca-rofr-co-sale-agreement/metadata.yaml +80 -0
  157. package/recipes/nvca-rofr-co-sale-agreement/replacements.json +17 -0
  158. package/recipes/nvca-rofr-co-sale-agreement/schema.json +19 -0
  159. package/recipes/nvca-stock-purchase-agreement/clean.json +10 -0
  160. package/recipes/nvca-stock-purchase-agreement/metadata.yaml +74 -0
  161. package/recipes/nvca-stock-purchase-agreement/replacements.json +20 -0
  162. package/recipes/nvca-stock-purchase-agreement/schema.json +19 -0
  163. package/recipes/nvca-voting-agreement/README.md +53 -0
  164. package/recipes/nvca-voting-agreement/clean.json +7 -0
  165. package/recipes/nvca-voting-agreement/metadata.yaml +70 -0
  166. package/recipes/nvca-voting-agreement/replacements.json +18 -0
  167. package/recipes/nvca-voting-agreement/schema.json +28 -0
  168. package/skills/open-agreements/SKILL.md +166 -0
  169. package/templates/bonterms-mutual-nda/README.md +27 -0
  170. package/templates/bonterms-mutual-nda/metadata.yaml +58 -0
  171. package/templates/bonterms-mutual-nda/template.docx +0 -0
  172. package/templates/bonterms-professional-services-agreement/README.md +24 -0
  173. package/templates/bonterms-professional-services-agreement/metadata.yaml +40 -0
  174. package/templates/bonterms-professional-services-agreement/template.docx +0 -0
  175. package/templates/common-paper-ai-addendum/README.md +23 -0
  176. package/templates/common-paper-ai-addendum/metadata.yaml +33 -0
  177. package/templates/common-paper-ai-addendum/template.docx +0 -0
  178. package/templates/common-paper-ai-addendum-in-app/README.md +21 -0
  179. package/templates/common-paper-ai-addendum-in-app/metadata.yaml +23 -0
  180. package/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
  181. package/templates/common-paper-amendment/README.md +27 -0
  182. package/templates/common-paper-amendment/metadata.yaml +53 -0
  183. package/templates/common-paper-amendment/template.docx +0 -0
  184. package/templates/common-paper-business-associate-agreement/README.md +29 -0
  185. package/templates/common-paper-business-associate-agreement/metadata.yaml +63 -0
  186. package/templates/common-paper-business-associate-agreement/template.docx +0 -0
  187. package/templates/common-paper-cloud-service-agreement/README.md +32 -0
  188. package/templates/common-paper-cloud-service-agreement/metadata.yaml +488 -0
  189. package/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  190. package/templates/common-paper-csa-click-through/README.md +33 -0
  191. package/templates/common-paper-csa-click-through/metadata.yaml +83 -0
  192. package/templates/common-paper-csa-click-through/template.docx +0 -0
  193. package/templates/common-paper-csa-with-ai/README.md +49 -0
  194. package/templates/common-paper-csa-with-ai/metadata.yaml +166 -0
  195. package/templates/common-paper-csa-with-ai/template.docx +0 -0
  196. package/templates/common-paper-csa-with-sla/README.md +53 -0
  197. package/templates/common-paper-csa-with-sla/metadata.yaml +185 -0
  198. package/templates/common-paper-csa-with-sla/template.docx +0 -0
  199. package/templates/common-paper-csa-without-sla/README.md +47 -0
  200. package/templates/common-paper-csa-without-sla/metadata.yaml +155 -0
  201. package/templates/common-paper-csa-without-sla/template.docx +0 -0
  202. package/templates/common-paper-data-processing-agreement/README.md +46 -0
  203. package/templates/common-paper-data-processing-agreement/metadata.yaml +149 -0
  204. package/templates/common-paper-data-processing-agreement/template.docx +0 -0
  205. package/templates/common-paper-design-partner-agreement/README.md +29 -0
  206. package/templates/common-paper-design-partner-agreement/metadata.yaml +65 -0
  207. package/templates/common-paper-design-partner-agreement/template.docx +0 -0
  208. package/templates/common-paper-independent-contractor-agreement/README.md +27 -0
  209. package/templates/common-paper-independent-contractor-agreement/metadata.yaml +55 -0
  210. package/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  211. package/templates/common-paper-letter-of-intent/README.md +25 -0
  212. package/templates/common-paper-letter-of-intent/metadata.yaml +43 -0
  213. package/templates/common-paper-letter-of-intent/template.docx +0 -0
  214. package/templates/common-paper-mutual-nda/README.md +29 -0
  215. package/templates/common-paper-mutual-nda/metadata.yaml +59 -0
  216. package/templates/common-paper-mutual-nda/template.docx +0 -0
  217. package/templates/common-paper-one-way-nda/README.md +27 -0
  218. package/templates/common-paper-one-way-nda/metadata.yaml +60 -0
  219. package/templates/common-paper-one-way-nda/template.docx +0 -0
  220. package/templates/common-paper-order-form/README.md +36 -0
  221. package/templates/common-paper-order-form/metadata.yaml +98 -0
  222. package/templates/common-paper-order-form/template.docx +0 -0
  223. package/templates/common-paper-order-form-with-sla/README.md +42 -0
  224. package/templates/common-paper-order-form-with-sla/metadata.yaml +129 -0
  225. package/templates/common-paper-order-form-with-sla/template.docx +0 -0
  226. package/templates/common-paper-partnership-agreement/README.md +34 -0
  227. package/templates/common-paper-partnership-agreement/metadata.yaml +90 -0
  228. package/templates/common-paper-partnership-agreement/template.docx +0 -0
  229. package/templates/common-paper-pilot-agreement/README.md +34 -0
  230. package/templates/common-paper-pilot-agreement/metadata.yaml +90 -0
  231. package/templates/common-paper-pilot-agreement/template.docx +0 -0
  232. package/templates/common-paper-professional-services-agreement/README.md +44 -0
  233. package/templates/common-paper-professional-services-agreement/metadata.yaml +141 -0
  234. package/templates/common-paper-professional-services-agreement/template.docx +0 -0
  235. package/templates/common-paper-software-license-agreement/README.md +18 -0
  236. package/templates/common-paper-software-license-agreement/metadata.yaml +13 -0
  237. package/templates/common-paper-software-license-agreement/template.docx +0 -0
  238. package/templates/common-paper-statement-of-work/README.md +32 -0
  239. package/templates/common-paper-statement-of-work/metadata.yaml +78 -0
  240. package/templates/common-paper-statement-of-work/template.docx +0 -0
  241. package/templates/common-paper-term-sheet/README.md +22 -0
  242. package/templates/common-paper-term-sheet/metadata.yaml +28 -0
  243. package/templates/common-paper-term-sheet/template.docx +0 -0
@@ -0,0 +1,83 @@
1
+ name: NVCA Model Indemnification Agreement
2
+ description: >-
3
+ Director and officer indemnification agreement for venture-backed companies,
4
+ providing indemnification and advancement of expenses.
5
+ source_url: https://nvca.org/wp-content/uploads/2021/12/NVCA-2020-Indemnification-Agreement.docx
6
+ source_version: "2020"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: f9b61b4d99e245573de41d9469925b4332f871ec0e6ac6593055cdfe17825300
11
+ optional: false
12
+ fields:
13
+ - name: indemnitee_name
14
+ type: string
15
+ description: Full legal name of the indemnitee (director or officer)
16
+ required: true
17
+ - name: indemnitee_address
18
+ type: string
19
+ description: Address of the indemnitee
20
+ required: true
21
+ - name: company_name
22
+ type: string
23
+ description: Name of the corporation providing indemnification
24
+ required: true
25
+ - name: fund_sponsor_name
26
+ type: string
27
+ description: Name of the sponsoring fund or entity appointing the indemnitee
28
+ required: false
29
+ - name: indemnitee_role
30
+ type: string
31
+ description: Primary role being indemnified (e.g. director)
32
+ required: true
33
+ default: director
34
+ - name: indemnitee_role_plural
35
+ type: string
36
+ description: Plural form of the primary role (e.g. directors)
37
+ required: true
38
+ default: directors
39
+ - name: indemnitee_role_secondary
40
+ type: string
41
+ description: Secondary role being indemnified (e.g. officer)
42
+ required: false
43
+ default: officer
44
+ - name: indemnitee_role_secondary_plural
45
+ type: string
46
+ description: Plural form of the secondary role (e.g. officers)
47
+ required: false
48
+ default: officers
49
+ - name: indemnitee_pronoun_possessive
50
+ type: string
51
+ description: Possessive pronoun for the indemnitee entity (e.g. its)
52
+ required: true
53
+ default: its
54
+ - name: indemnitee_pronoun_possessive_plural
55
+ type: string
56
+ description: Plural possessive pronoun for the indemnitee (e.g. their)
57
+ required: true
58
+ default: their
59
+ - name: bylaws_name
60
+ type: string
61
+ description: Name of the company's bylaws document
62
+ required: true
63
+ default: Bylaws
64
+ - name: certificate_name
65
+ type: string
66
+ description: Name of the company's certificate of incorporation
67
+ required: true
68
+ default: Certificate of Incorporation
69
+ - name: and_appointing_stockholder
70
+ type: string
71
+ description: Optional additional party text or empty string
72
+ required: false
73
+ default: ""
74
+ - name: indemnification_section_letter
75
+ type: string
76
+ description: Section reference letter for indemnification provisions in the certificate
77
+ required: true
78
+ default: E
79
+ - name: signature_page_marker
80
+ type: string
81
+ description: Signature page marker text
82
+ required: false
83
+ default: Signature Page Follows
@@ -0,0 +1,17 @@
1
+ {
2
+ "[name]": "{indemnitee_name}",
3
+ "[address]": "{indemnitee_address}",
4
+ "[corporation]": "{company_name}",
5
+ "[name of fund/sponsor]": "{fund_sponsor_name}",
6
+ "[director]": "{indemnitee_role}",
7
+ "[directors]": "{indemnitee_role_plural}",
8
+ "[officer]": "{indemnitee_role_secondary}",
9
+ "[officers]": "{indemnitee_role_secondary_plural}",
10
+ "[its]": "{indemnitee_pronoun_possessive}",
11
+ "[their]": "{indemnitee_pronoun_possessive_plural}",
12
+ "[Bylaws]": "{bylaws_name}",
13
+ "[Certificate of Incorporation]": "{certificate_name}",
14
+ "[and Appointing Stockholder]": "{and_appointing_stockholder}",
15
+ "[E]": "{indemnification_section_letter}",
16
+ "[Signature Page Follows]": "{signature_page_marker}"
17
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "fields": [
3
+ { "name": "indemnitee_name", "type": "string", "description": "Full legal name of the indemnitee (director or officer)" },
4
+ { "name": "indemnitee_address", "type": "string", "description": "Address of the indemnitee" },
5
+ { "name": "company_name", "type": "string", "description": "Name of the corporation providing indemnification" },
6
+ { "name": "fund_sponsor_name", "type": "string", "description": "Name of the sponsoring fund or entity appointing the indemnitee" },
7
+ { "name": "indemnitee_role", "type": "string", "description": "Primary role being indemnified (e.g. director)" },
8
+ { "name": "indemnitee_role_plural", "type": "string", "description": "Plural form of the primary role (e.g. directors)" },
9
+ { "name": "indemnitee_role_secondary", "type": "string", "description": "Secondary role being indemnified (e.g. officer)" },
10
+ { "name": "indemnitee_role_secondary_plural", "type": "string", "description": "Plural form of the secondary role (e.g. officers)" },
11
+ { "name": "indemnitee_pronoun_possessive", "type": "string", "description": "Possessive pronoun for the indemnitee entity (e.g. its)" },
12
+ { "name": "indemnitee_pronoun_possessive_plural", "type": "string", "description": "Plural possessive pronoun for the indemnitee (e.g. their)" },
13
+ { "name": "bylaws_name", "type": "string", "description": "Name of the company's bylaws document" },
14
+ { "name": "certificate_name", "type": "string", "description": "Name of the company's certificate of incorporation" },
15
+ { "name": "and_appointing_stockholder", "type": "string", "description": "Optional additional party text (e.g. 'and Appointing Stockholder') or empty string" },
16
+ { "name": "indemnification_section_letter", "type": "string", "description": "Section reference letter for indemnification provisions in the certificate" },
17
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker text" }
18
+ ]
19
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "removeFootnotes": true,
3
+ "removeParagraphPatterns": [
4
+ "^Note to Drafter:",
5
+ "^Preliminary Note\\b",
6
+ "^Alternative 1:",
7
+ "^Alternative 2:",
8
+ "^Alternative:",
9
+ "^\\[Alternative",
10
+ "^Annex 2"
11
+ ]
12
+ }
@@ -0,0 +1,75 @@
1
+ name: NVCA Model Investors' Rights Agreement
2
+ description: >-
3
+ Investors' rights agreement for venture financings, covering registration rights,
4
+ information rights, board observer rights, and protective provisions.
5
+ source_url: https://nvca.org/wp-content/uploads/2025/10/NVCA-Model-IRA-10-1-2025-2-1.docx
6
+ source_version: "10-1-2025"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: be8ad13f171a343bdb53716b1d318689ae3477cdf7f1986b2e3985e1cabbd08a
11
+ optional: false
12
+ fields:
13
+ - name: company_name
14
+ type: string
15
+ description: Full legal name of the company (e.g. Acme Corp, Inc.)
16
+ required: true
17
+ - name: company_name_short
18
+ type: string
19
+ description: Short name of the company used in running text (e.g. Acme or the Company)
20
+ required: true
21
+ - name: investor_name
22
+ type: string
23
+ description: Full legal name of the lead investor
24
+ required: true
25
+ - name: company_counsel
26
+ type: string
27
+ description: Name and address of company's legal counsel
28
+ required: true
29
+ - name: counsel_cc
30
+ type: string
31
+ description: Additional counsel to CC on notices, or empty string if none
32
+ required: false
33
+ default: ""
34
+ - name: state_of_incorporation
35
+ type: string
36
+ description: State of incorporation (e.g. Delaware)
37
+ required: true
38
+ default: Delaware
39
+ - name: state_lower
40
+ type: string
41
+ description: State of incorporation in lowercase (e.g. delaware)
42
+ required: true
43
+ default: delaware
44
+ - name: judicial_district
45
+ type: string
46
+ description: Federal judicial district for dispute resolution (e.g. District of Delaware)
47
+ required: true
48
+ default: District of Delaware
49
+ - name: amended_restated_upper
50
+ type: string
51
+ description: Uppercase prefix if amending a prior agreement (e.g. AMENDED AND RESTATED) or empty string
52
+ required: false
53
+ default: ""
54
+ - name: amended_restated
55
+ type: string
56
+ description: Title-case prefix if amending a prior agreement (e.g. Amended and Restated) or empty string
57
+ required: false
58
+ default: ""
59
+ - name: business_description
60
+ type: string
61
+ description: Brief description of the company's business
62
+ required: true
63
+ - name: signature_page_marker
64
+ type: string
65
+ description: Signature page marker text
66
+ required: false
67
+ default: Signature Page Follows
68
+ - name: effective_date
69
+ type: string
70
+ description: Effective date of the agreement (e.g. January 15, 2025)
71
+ required: true
72
+ - name: checklist_delivery_date
73
+ type: string
74
+ description: Date the compliance checklist is being delivered
75
+ required: false
@@ -0,0 +1,18 @@
1
+ {
2
+ "[Insert Company Name]": "{company_name}",
3
+ "[Company Name]": "{company_name}",
4
+ "[Company]": "{company_name_short}",
5
+ "[Insert Investor Name]": "{investor_name}",
6
+ "[Company counsel name and address]": "{company_counsel}",
7
+ "[Counsel cc, if any]": "{counsel_cc}",
8
+ "[State of Delaware]": "State of {state_of_incorporation}",
9
+ "[State]": "{state_of_incorporation}",
10
+ "[state]": "{state_lower}",
11
+ "[judicial district]": "{judicial_district}",
12
+ "[AMENDED AND RESTATED]": "{amended_restated_upper}",
13
+ "[Amended and Restated]": "{amended_restated}",
14
+ "[description of business]": "{business_description}",
15
+ "[Signature Page Follows]": "{signature_page_marker}",
16
+ "[_________ __, 20__]": "{effective_date}",
17
+ "[Date checklist is being delivered]": "{checklist_delivery_date}"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "fields": [
3
+ { "name": "company_name", "type": "string", "description": "Full legal name of the company (e.g. Acme Corp, Inc.)" },
4
+ { "name": "company_name_short", "type": "string", "description": "Short name of the company used in running text (e.g. Acme or the Company)" },
5
+ { "name": "investor_name", "type": "string", "description": "Full legal name of the lead investor" },
6
+ { "name": "company_counsel", "type": "string", "description": "Name and address of company's legal counsel" },
7
+ { "name": "counsel_cc", "type": "string", "description": "Additional counsel to CC on notices, or empty string if none" },
8
+ { "name": "state_of_incorporation", "type": "string", "description": "State of incorporation (e.g. Delaware)" },
9
+ { "name": "state_lower", "type": "string", "description": "State of incorporation in lowercase (e.g. delaware)" },
10
+ { "name": "judicial_district", "type": "string", "description": "Federal judicial district for dispute resolution (e.g. District of Delaware)" },
11
+ { "name": "amended_restated_upper", "type": "string", "description": "Uppercase prefix if amending a prior agreement (e.g. AMENDED AND RESTATED) or empty string" },
12
+ { "name": "amended_restated", "type": "string", "description": "Title-case prefix if amending a prior agreement (e.g. Amended and Restated) or empty string" },
13
+ { "name": "business_description", "type": "string", "description": "Brief description of the company's business" },
14
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker text" },
15
+ { "name": "effective_date", "type": "string", "description": "Effective date of the agreement (e.g. January 15, 2025)" },
16
+ { "name": "checklist_delivery_date", "type": "string", "description": "Date the compliance checklist is being delivered" }
17
+ ]
18
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "removeFootnotes": true,
3
+ "removeParagraphPatterns": [
4
+ "^Note to Drafter:",
5
+ "^Preliminary Note\\b"
6
+ ]
7
+ }
@@ -0,0 +1,50 @@
1
+ name: NVCA Model Management Rights Letter
2
+ description: >-
3
+ Management rights letter granting ERISA-qualifying management rights to
4
+ venture capital fund investors.
5
+ source_url: https://nvca.org/wp-content/uploads/2025/12/NVCA-2020-Management-Rights-Letter-1-1.docx
6
+ source_version: "2020"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: 9661d2a68ca20ee77cf553f1ec5804f08147e7e4c35f5a03938e76a778083e8b
11
+ optional: false
12
+ fields:
13
+ - name: company_name_upper
14
+ type: string
15
+ description: Company name in uppercase
16
+ required: true
17
+ - name: investor_name
18
+ type: string
19
+ description: Full name of the investor
20
+ required: true
21
+ - name: investor_name_upper
22
+ type: string
23
+ description: Investor name in uppercase
24
+ required: true
25
+ - name: city
26
+ type: string
27
+ description: City for the company address
28
+ required: true
29
+ - name: state
30
+ type: string
31
+ description: State for the company address
32
+ required: true
33
+ - name: street_address
34
+ type: string
35
+ description: Street address for the company
36
+ required: true
37
+ - name: zip_code
38
+ type: string
39
+ description: ZIP code for the company address
40
+ required: true
41
+ - name: company_letterhead
42
+ type: string
43
+ description: Portfolio company letterhead text
44
+ required: false
45
+ default: ""
46
+ - name: signature_page_marker
47
+ type: string
48
+ description: Signature page marker text
49
+ required: false
50
+ default: Signature Page Follows
@@ -0,0 +1,11 @@
1
+ {
2
+ "[COMPANY]": "{company_name_upper}",
3
+ "[Investor Name]": "{investor_name}",
4
+ "[INVESTOR]": "{investor_name_upper}",
5
+ "[City]": "{city}",
6
+ "[State]": "{state}",
7
+ "[Street Address]": "{street_address}",
8
+ "[Zip]": "{zip_code}",
9
+ "[PORTFOLIO COMPANY LETTERHEAD]": "{company_letterhead}",
10
+ "[Signature Page Follows]": "{signature_page_marker}"
11
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "fields": [
3
+ { "name": "company_name_upper", "type": "string", "description": "Company name in uppercase" },
4
+ { "name": "investor_name", "type": "string", "description": "Full name of the investor" },
5
+ { "name": "investor_name_upper", "type": "string", "description": "Investor name in uppercase" },
6
+ { "name": "city", "type": "string", "description": "City for the company address" },
7
+ { "name": "state", "type": "string", "description": "State for the company address" },
8
+ { "name": "street_address", "type": "string", "description": "Street address for the company" },
9
+ { "name": "zip_code", "type": "string", "description": "ZIP code for the company address" },
10
+ { "name": "company_letterhead", "type": "string", "description": "Portfolio company letterhead text" },
11
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker text" }
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "removeFootnotes": true,
3
+ "removeParagraphPatterns": [
4
+ "^Note to Drafter:",
5
+ "^Preliminary Note\\b"
6
+ ]
7
+ }
@@ -0,0 +1,80 @@
1
+ name: NVCA Model Right of First Refusal and Co-Sale Agreement
2
+ description: >-
3
+ Right of first refusal and co-sale agreement for venture financings,
4
+ restricting transfer of founder shares and providing investor co-sale rights.
5
+ source_url: https://nvca.org/wp-content/uploads/2025/10/NVCA-Model-ROFRA-10-1-2025.docx
6
+ source_version: "10-1-2025"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: 126b4a402d41b768ff0c9aebf593792159c31ca7a930c440dd5ae0516ef4c4ad
11
+ optional: false
12
+ fields:
13
+ - name: company_name
14
+ type: string
15
+ description: Full legal name of the company (e.g. Acme Corp, Inc.)
16
+ required: true
17
+ - name: investor_name
18
+ type: string
19
+ description: Full legal name of the lead investor
20
+ required: true
21
+ - name: key_holder_name
22
+ type: string
23
+ description: Full name of the key holder (founder or executive)
24
+ required: true
25
+ - name: company_counsel
26
+ type: string
27
+ description: Name and address of company's legal counsel
28
+ required: true
29
+ - name: counsel_cc
30
+ type: string
31
+ description: Additional counsel to CC on notices, or empty string if none
32
+ required: false
33
+ default: ""
34
+ - name: amended_restated_upper
35
+ type: string
36
+ description: Uppercase prefix if amending a prior agreement (e.g. AMENDED AND RESTATED) or empty string
37
+ required: false
38
+ default: ""
39
+ - name: amended_restated
40
+ type: string
41
+ description: Title-case prefix if amending a prior agreement (e.g. Amended and Restated) or empty string
42
+ required: false
43
+ default: ""
44
+ - name: judicial_district
45
+ type: string
46
+ description: Federal judicial district for dispute resolution (e.g. District of Delaware)
47
+ required: true
48
+ default: District of Delaware
49
+ - name: state_lower
50
+ type: string
51
+ description: State of incorporation in lowercase (e.g. delaware)
52
+ required: true
53
+ default: delaware
54
+ - name: business_description
55
+ type: string
56
+ description: Brief description of the company's business
57
+ required: true
58
+ - name: signature_page_marker
59
+ type: string
60
+ description: Signature page marker text
61
+ required: false
62
+ default: Signature Page Follows
63
+ - name: effective_date
64
+ type: string
65
+ description: Effective date of the agreement (e.g. January 15, 2025)
66
+ required: true
67
+ - name: specify_percentage
68
+ type: string
69
+ description: Specified percentage threshold for key holder transfers
70
+ required: true
71
+ - name: rofr_response_days
72
+ type: string
73
+ description: Number of days for the company and investors to respond to a ROFR notice (default 45)
74
+ required: true
75
+ default: "45"
76
+ - name: key_holders_label
77
+ type: string
78
+ description: Label for the key holders group (e.g. Key Holders or Founders)
79
+ required: false
80
+ default: Key Holders
@@ -0,0 +1,17 @@
1
+ {
2
+ "[Insert Company Name]": "{company_name}",
3
+ "[Insert Investor Name]": "{investor_name}",
4
+ "[Insert Key Holder Name]": "{key_holder_name}",
5
+ "[Company Counsel Name and Address]": "{company_counsel}",
6
+ "[Counsel cc, if any]": "{counsel_cc}",
7
+ "[AMENDED AND RESTATED]": "{amended_restated_upper}",
8
+ "[Amended and Restated]": "{amended_restated}",
9
+ "[judicial district]": "{judicial_district}",
10
+ "[state]": "{state_lower}",
11
+ "[description of business]": "{business_description}",
12
+ "[Signature Page Follows]": "{signature_page_marker}",
13
+ "[_____ __, 20___]": "{effective_date}",
14
+ "[specify percentage]": "{specify_percentage}",
15
+ "[45]": "{rofr_response_days}",
16
+ "[Key Holders]": "{key_holders_label}"
17
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "fields": [
3
+ { "name": "company_name", "type": "string", "description": "Full legal name of the company (e.g. Acme Corp, Inc.)" },
4
+ { "name": "investor_name", "type": "string", "description": "Full legal name of the lead investor" },
5
+ { "name": "key_holder_name", "type": "string", "description": "Full name of the key holder (founder or executive)" },
6
+ { "name": "company_counsel", "type": "string", "description": "Name and address of company's legal counsel" },
7
+ { "name": "counsel_cc", "type": "string", "description": "Additional counsel to CC on notices, or empty string if none" },
8
+ { "name": "amended_restated_upper", "type": "string", "description": "Uppercase prefix if amending a prior agreement (e.g. AMENDED AND RESTATED) or empty string" },
9
+ { "name": "amended_restated", "type": "string", "description": "Title-case prefix if amending a prior agreement (e.g. Amended and Restated) or empty string" },
10
+ { "name": "judicial_district", "type": "string", "description": "Federal judicial district for dispute resolution (e.g. District of Delaware)" },
11
+ { "name": "state_lower", "type": "string", "description": "State of incorporation in lowercase (e.g. delaware)" },
12
+ { "name": "business_description", "type": "string", "description": "Brief description of the company's business" },
13
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker text" },
14
+ { "name": "effective_date", "type": "string", "description": "Effective date of the agreement (e.g. January 15, 2025)" },
15
+ { "name": "specify_percentage", "type": "string", "description": "Specified percentage threshold for key holder transfers" },
16
+ { "name": "rofr_response_days", "type": "string", "description": "Number of days for the company and investors to respond to a ROFR notice (default 45)" },
17
+ { "name": "key_holders_label", "type": "string", "description": "Label for the key holders group (e.g. Key Holders or Founders)" }
18
+ ]
19
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "removeFootnotes": true,
3
+ "removeParagraphPatterns": [
4
+ "^Note to Drafter:",
5
+ "^Preliminary Note\\b",
6
+ "^Alternative 1:",
7
+ "^Alternative 2:",
8
+ "^\\[Alternative"
9
+ ]
10
+ }
@@ -0,0 +1,74 @@
1
+ name: NVCA Model Stock Purchase Agreement
2
+ description: >-
3
+ Series preferred stock purchase agreement for venture capital financings,
4
+ covering purchase terms, representations, and closing conditions.
5
+ source_url: https://nvca.org/wp-content/uploads/2025/10/NVCA-Model-SPA-10-28-2025-1.docx
6
+ source_version: "10-28-2025"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: b2c76452fa82dcda72f1fa9f82ba0ce28ea9445441c897f9cb7ac6663930dcab
11
+ optional: false
12
+ fields:
13
+ - name: company_name
14
+ type: string
15
+ description: Full legal name of the company
16
+ required: true
17
+ - name: investor_name
18
+ type: string
19
+ description: Full name of the investor
20
+ required: true
21
+ - name: company_counsel
22
+ type: string
23
+ description: Company counsel name and address
24
+ required: true
25
+ - name: investor_counsel
26
+ type: string
27
+ description: Investor counsel name and address
28
+ required: true
29
+ - name: company_counsel_name
30
+ type: string
31
+ description: Name of the company's counsel
32
+ required: true
33
+ - name: lead_purchaser_name
34
+ type: string
35
+ description: Name of the lead purchaser
36
+ required: true
37
+ - name: judicial_district
38
+ type: string
39
+ description: Federal judicial district for disputes
40
+ required: true
41
+ - name: balance_sheet_date
42
+ type: string
43
+ description: Date of the company's most recent balance sheet
44
+ required: true
45
+ - name: benefit_plan_name
46
+ type: string
47
+ description: Plan year and name of the employee benefit plan
48
+ required: false
49
+ - name: signature_page_marker
50
+ type: string
51
+ description: Signature page marker text
52
+ required: false
53
+ default: Signature Page Follows
54
+ - name: state_lower
55
+ type: string
56
+ description: State name (lowercase)
57
+ required: true
58
+ - name: specify_percentage
59
+ type: string
60
+ description: Specified percentage threshold
61
+ required: true
62
+ - name: financial_reporting_period
63
+ type: string
64
+ description: Financial reporting period (e.g., monthly, quarterly)
65
+ required: true
66
+ default: monthly
67
+ - name: director_names
68
+ type: string
69
+ description: List of individual director names
70
+ required: true
71
+ - name: applicable_purchasers
72
+ type: string
73
+ description: Names of the applicable purchasers
74
+ required: false
@@ -0,0 +1,20 @@
1
+ {
2
+ "[Insert Company Name]": "{company_name}",
3
+ "[Company name]": "{company_name}",
4
+ "[Insert Investor Name]": "{investor_name}",
5
+ "[Company Counsel Name and Address]": "{company_counsel}",
6
+ "[name of Investor\u2019s counsel]": "{investor_counsel}",
7
+ "[name of Investor's counsel]": "{investor_counsel}",
8
+ "[insert name of Company counsel]": "{company_counsel_name}",
9
+ "[name of lead Purchaser]": "{lead_purchaser_name}",
10
+ "[judicial district]": "{judicial_district}",
11
+ "[Balance Sheet Date]": "{balance_sheet_date}",
12
+ "[the Balance Sheet Date]": "{balance_sheet_date}",
13
+ "[insert Plan Year and Name]": "{benefit_plan_name}",
14
+ "[Signature Page Follows]": "{signature_page_marker}",
15
+ "[state]": "{state_lower}",
16
+ "[specify percentage]": "{specify_percentage}",
17
+ "[monthly]": "{financial_reporting_period}",
18
+ "[list the individual director names]": "{director_names}",
19
+ "[name the applicable Purchasers]": "{applicable_purchasers}"
20
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "fields": [
3
+ { "name": "company_name", "type": "string", "description": "Full legal name of the company" },
4
+ { "name": "investor_name", "type": "string", "description": "Full name of the investor" },
5
+ { "name": "company_counsel", "type": "string", "description": "Company counsel name and address" },
6
+ { "name": "investor_counsel", "type": "string", "description": "Investor counsel name and address" },
7
+ { "name": "company_counsel_name", "type": "string", "description": "Name of the company's counsel" },
8
+ { "name": "lead_purchaser_name", "type": "string", "description": "Name of the lead purchaser" },
9
+ { "name": "judicial_district", "type": "string", "description": "Federal judicial district for disputes" },
10
+ { "name": "balance_sheet_date", "type": "string", "description": "Date of the company's most recent balance sheet" },
11
+ { "name": "benefit_plan_name", "type": "string", "description": "Plan year and name of the employee benefit plan" },
12
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker text" },
13
+ { "name": "state_lower", "type": "string", "description": "State name (lowercase)" },
14
+ { "name": "specify_percentage", "type": "string", "description": "Specified percentage threshold" },
15
+ { "name": "financial_reporting_period", "type": "string", "description": "Financial reporting period (e.g., monthly, quarterly)" },
16
+ { "name": "director_names", "type": "string", "description": "List of individual director names" },
17
+ { "name": "applicable_purchasers", "type": "string", "description": "Names of the applicable purchasers" }
18
+ ]
19
+ }
@@ -0,0 +1,53 @@
1
+ # NVCA Model Voting Agreement
2
+
3
+ Recipe for the NVCA Model Voting Agreement (version 10-1-2025).
4
+
5
+ ## Source
6
+
7
+ The source document is freely downloadable from [NVCA](https://nvca.org) but is not
8
+ redistributable. This recipe contains only transformation instructions.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ # Full pipeline (auto-downloads from NVCA)
14
+ open-agreements recipe run nvca-voting-agreement -d values.json -o voting-agreement.docx
15
+
16
+ # With a local copy of the source document
17
+ open-agreements recipe run nvca-voting-agreement -i NVCA-Voting-Agreement.docx -d values.json -o voting-agreement.docx
18
+
19
+ # Individual stages
20
+ open-agreements recipe clean source.docx -o cleaned.docx --recipe nvca-voting-agreement
21
+ open-agreements recipe patch cleaned.docx -o patched.docx --recipe nvca-voting-agreement
22
+ ```
23
+
24
+ ## Values File
25
+
26
+ Create a JSON file with the field values:
27
+
28
+ ```json
29
+ {
30
+ "company_name": "Acme Corp",
31
+ "company_name_upper": "ACME CORP",
32
+ "state_of_incorporation": "Delaware",
33
+ "state_of_incorporation_lower": "Delaware",
34
+ "investor_1_name": "Sequoia Capital Fund XIV",
35
+ "investor_1_designee": "Michael Moritz",
36
+ "series_name": "Series A",
37
+ "company_counsel": "Wilson Sonsini, 650 Page Mill Road, Palo Alto, CA 94304",
38
+ "investor_counsel": "Cooley LLP, 3175 Hanover Street, Palo Alto, CA 94304",
39
+ "effective_date": "January 15, 2025",
40
+ "drag_along_percentage": "sixty percent (60%)",
41
+ "board_size": "five (5)",
42
+ "notice_period_days": "120",
43
+ "judicial_district": "Northern District of California",
44
+ "key_holder_name": "Jane Doe"
45
+ }
46
+ ```
47
+
48
+ ## What the Recipe Does
49
+
50
+ 1. **Clean**: Removes explanatory footnotes and drafting notes ("Note to Drafter:", "Preliminary Note")
51
+ 2. **Patch**: Replaces 33 bracketed placeholders with template tags, handling Word's split-run XML
52
+ 3. **Fill**: Renders template tags with your values using docx-templates
53
+ 4. **Verify**: Confirms all values appear, no leftover placeholders or unrendered tags remain