Files
breakpilot-compliance/backend-compliance/migrations/135_esop_template.sql
T
Benjamin Admin 7a5f1e48dd feat(founding-wizard): Gründungs-Wizard für 2-Mann GmbH + 14 Notar-Templates
[migration-approved]

Templates (Migrations 123-136):
- 123 GO-GF (Geschäftsordnung Geschäftsführung)
- 124 SHA (Shareholders' Agreement, 56 Platzhalter)
- 125 Satzung (Articles of Association mit UG-Variante)
- 126 GF-Dienstvertrag (Trennungsprinzip Organ/Anstellung)
- 127 Arbeitsvertrag (AGG-neutral, NachwG, eAU)
- 128 Gesellschafterliste (§ 40 GmbHG)
- 129 GF-Bestellungsbeschluss (mit § 6 Abs. 2 Versicherung)
- 130 HRB-Anmeldung (§§ 7, 8, 39 GmbHG, § 12 HGB)
- 131 IP-Assignment Agreement (Gründer→GmbH)
- 132 Term Sheet (Pre-Seed/Seed VC-Standard)
- 133 Wandeldarlehensvertrag (Convertible Loan)
- 134 Beteiligungsvertrag (Subscription Agreement)
- 135 ESOP/VSOP-Plan (3 Varianten)
- 136 Cap Table

Kategorisierung (Migrations 137-138):
- ALTER TABLE compliance_legal_templates ADD lifecycle_stage TEXT[],
  functional_category TEXT (mit CHECK Constraints + GIN-Index)
- Backfill aller 105 Templates: lifecycle_stage (pre_founding|founding|
  startup|kmu|konzern) + functional_category (founding_legal|employment|
  investor_funding|...)

Backend Founding-Wizard Service:
- template_renderer.py: Handlebars-light ({{VAR}}, {{#IF FLAG}}...{{/IF}})
- wizard_to_context.py: Mapping Wizard-State → SCREAMING_SNAKE_CASE Vars
- markdown_to_docx.py: Markdown → DOCX via python-docx
- founding_wizard_routes.py: POST /v1/founding-wizard/generate
  → liefert base64-DOCX-Files für ausgewählte Templates

Frontend Founding-Wizard (/sdk/founding-wizard):
- 8-Step Wizard (Basics, Gesellschafter, GF, Kapital, Notar, SHA, GF-Verträge, Generate)
- useFoundingWizardForm Hook mit localStorage-Persistenz
- TypeScript Code-Registry (template-categories.ts) als Backup zur DB
- Word-Download via data:URLs (base64)

Tests:
- 20 Unit-Tests grün (Renderer, Context-Mapping, DOCX-Conversion)
- Playwright E2E-Test mit 2-Mann GmbH (Benjamin + Sharang) Test-Daten
2026-05-20 09:30:51 +02:00

311 lines
16 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Migration 135: ESOP/VSOP/Phantom Stock Plan Template (Mitarbeiterbeteiligung)
-- Skalierbar zwischen 3 Varianten: VSOP (virtuell, Cash-Auszahlung), ESOP (echte Anteile), Phantom Stock
-- Mit Pool-Definition, Vesting (48/12 Standard), Acceleration (Single-/Double-Trigger),
-- Leaver-Behandlung (Good/Neutral/Bad), Rueckkaufsrecht, Verwaesserungsschutz, Plan-Verwaltung
-- Inklusive Muster-Allokationsvereinbarung (Grant Letter) als Anlage
-- Optionale Bloecke: IS_VSOP / IS_REAL_ESOP / IS_PHANTOM, HAS_DOUBLE_TRIGGER,
-- HAS_DIVIDEND_TRIGGER, HAS_SECONDARY_TRIGGER, HAS_EXPIRY_TRIGGER, HAS_SHA
INSERT INTO compliance_legal_templates (
id, tenant_id, document_type, title, description, content,
placeholders, language, jurisdiction,
license_id, license_name, source_name,
attribution_required, is_complete_document, version, status,
created_at, updated_at
) SELECT
gen_random_uuid(),
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e',
'esop_plan',
'ESOP / VSOP / Phantom Stock Plan (Mitarbeiterbeteiligung)',
'Mitarbeiterbeteiligungsplan in drei Varianten: VSOP (virtuelle Anteile mit Cash-Auszahlung bei Exit), ESOP (echte Geschaeftsanteile mit moeglicher § 19a EStG Tarifguenstigung), Phantom Stock (virtuelle Wertentwicklung). Skalierbar fuer Pool-Groesse, Vesting (Standard 48 Monate / 12 Cliff), Single-/Double-Trigger Acceleration bei Exit, Leaver-Behandlung (Good/Neutral/Bad), Rueckkaufsrecht, Verwaesserungsschutz und Plan-Verwaltung. Inklusive Muster-Allokationsvereinbarung (Grant Letter). Orientiert an Hexa/Carta-Standards und deutscher Marktpraxis.',
$template$
# {{ESOP_TYPE_LABEL}} - Mitarbeiterbeteiligungsplan
der **{{COMPANY_NAME}}**
---
## Dokumentenkontrolle
| Feld | Wert |
|---|---|
| Plan-Typ | {{ESOP_TYPE_LABEL}} ({{ESOP_TYPE_SHORT}}) |
| Gesellschaft | {{COMPANY_NAME}} |
| Plan-Bezeichnung | {{PLAN_NAME}} |
| Verabschiedung | Gesellschafterbeschluss vom {{ADOPTION_DATE}} |
| Geltungsbereich | Mitarbeiter, Berater, ggf. Geschäftsführer der {{COMPANY_NAME}} |
| Version | {{DOCUMENT_VERSION}} |
> **Hinweis:** Dieser Plan wurde durch Beschluss der Gesellschafterversammlung vom {{ADOPTION_DATE}} verabschiedet. Die konkrete Zuteilung an Berechtigte erfolgt durch individuelle Allokationsvereinbarungen (Anlage).
---
## Präambel
(A) Die {{COMPANY_NAME}} (Gesellschaft") möchte ihre Mitarbeiter, Berater und Schlüsselpersonen langfristig an den wirtschaftlichen Erfolg der Gesellschaft beteiligen.
(B) {{#IF IS_VSOP}}Die Gesellschafterversammlung hat beschlossen, einen **virtuellen Mitarbeiterbeteiligungsplan (VSOP)** einzurichten. Berechtigte erhalten **virtuelle Anteile** ohne tatsächliche Gesellschafterstellung; die Erlöse sind als Cash-Bonus bei Exit oder anderen definierten Trigger-Ereignissen geschuldet.{{/IF}}{{#IF IS_REAL_ESOP}}Die Gesellschafterversammlung hat beschlossen, einen **echten Mitarbeiterbeteiligungsplan (ESOP)** einzurichten mit Übertragung tatsächlicher Geschäftsanteile.{{/IF}}{{#IF IS_PHANTOM}}Die Gesellschafterversammlung hat beschlossen, einen **Phantom-Stock-Plan** einzurichten mit virtuellen Anteilen, deren Wertentwicklung als Bonus ausgezahlt wird.{{/IF}}
(C) Dieser Plan regelt Zuteilung, Vesting, Ausübung und Auszahlung der Beteiligungen.
---
## § 1 Plan-Pool
(1) Die Gesellschaft reserviert einen **Mitarbeiterbeteiligungspool von {{POOL_PCT}} %** des Stammkapitals (vollverwässert nach Investment / Post-Money), nachfolgend „Pool".
(2) Der Pool entspricht **{{POOL_ABSOLUTE_VALUE}}** {{#IF IS_VSOP}}virtuellen Anteilen{{/IF}}{{#IF IS_REAL_ESOP}}Geschäftsanteilen{{/IF}}{{#IF IS_PHANTOM}}Phantom Shares{{/IF}}.
(3) Erweiterungen des Pools bedürfen eines Gesellschafterbeschlusses mit der im SHA{{#IF HAS_SHA}} festgelegten Mehrheit{{/IF}} (typisch: 75 %) und unterliegen den Reserved Matters.
(4) Verfallene oder zurückgekaufte Beteiligungen fließen in den Pool zurück und können neu zugeteilt werden.
## § 2 Berechtigte
(1) **Berechtigtenkreis** sind Personen, die zur Gesellschaft in einem der folgenden Verhältnisse stehen:
(a) Arbeitsverhältnis (Vollzeit, Teilzeit, befristet),
(b) Geschäftsführerdienstvertrag,
(c) Beratungsvertrag (Advisor) mit fortgesetzter und materieller Mitwirkung,
(d) Freier-Mitarbeiter-Vertrag mit Erwartung längerfristiger Mitwirkung.
(2) **Auswahl.** Die Geschäftsführung schlägt Berechtigte vor; die Zuteilung bedarf der Zustimmung des Beirats/der Gesellschafter gemäß SHA bzw. Reserved Matters.
(3) **Nicht berechtigt** sind:
(a) Gesellschafter, soweit sie ihre Anteile aus der Gründung halten und in dieser Rolle bereits beteiligt sind,
(b) Personen mit beendetem Arbeits-/Beratungsverhältnis,
(c) externe Vertragspartner ohne strategische Schlüsselrolle.
## § 3 Allokation und Strike Price
### 3.1 Allokation
(1) Die Allokation pro Berechtigtem erfolgt durch individuelle **Allokationsvereinbarung** (Grant Letter"), die diesen Plan in Bezug nimmt.
(2) Die Allokation richtet sich nach Funktion, Erfahrung, Marktstandards und Beitrag zur Gesellschaft.
(3) Beispielhafte Richtwerte:
| Funktion | Allokationsband |
|---|---|
| C-Level (CXO) | {{CXO_ALLOCATION_RANGE}} |
| Senior Engineering / Sales | {{SENIOR_ALLOCATION_RANGE}} |
| Mid-Level | {{MID_ALLOCATION_RANGE}} |
| Junior / Operational | {{JUNIOR_ALLOCATION_RANGE}} |
| Advisor | {{ADVISOR_ALLOCATION_RANGE}} |
### 3.2 Strike Price (Ausübungspreis)
{{#IF IS_VSOP}}
(1) Bei VSOP gibt es **keinen direkten Strike Price** im klassischen Sinne. Die Auszahlung erfolgt als Differenz zwischen Exit-Wert pro virtuellem Anteil und dem **Reference Price** zum Zeitpunkt der Allokation.
(2) **Reference Price** = aktuelle Pre-Money-Bewertung ÷ Gesamtzahl Anteile zum Allokationszeitpunkt.
{{/IF}}
{{#IF IS_REAL_ESOP}}
(1) Der **Strike Price (Ausübungspreis)** pro Anteil entspricht dem Verkehrswert zum Zeitpunkt der Allokation, mindestens dem Nennbetrag von {{SHARE_NENNBETRAG_EUR}} EUR.
(2) **Steuerlicher Hinweis:** Eine Ausgabe unter Verkehrswert kann steuerpflichtige geldwerte Vorteile begründen (§ 19a EStG). Empfehlung: Verkehrswert-Bestätigung durch Steuerberater.
{{/IF}}
{{#IF IS_PHANTOM}}
(1) Der **Strike Price** ist auf {{STRIKE_PRICE_EUR}} EUR pro Phantom Share festgelegt (entspricht aktueller Pre-Money-Bewertung ÷ Anteilszahl zum Allokationszeitpunkt).
(2) Bei Trigger-Ereignis erhält der Berechtigte die Differenz zwischen Exit-Preis und Strike Price.
{{/IF}}
## § 4 Vesting
### 4.1 Vesting-Schedule
(1) **Vesting-Dauer:** **{{VESTING_MONTHS}} Monate** (Standard: 48 Monate)
(2) **Cliff:** **{{CLIFF_MONTHS}} Monate** (Standard: 12 Monate)
(3) Vor Ablauf des Cliffs sind keine Anteile vested. Nach Ablauf des Cliffs werden **{{CLIFF_VEST_PCT}} %** ({{CLIFF_MONTHS}}/{{VESTING_MONTHS}}) auf einmal vested. Danach vesten die verbleibenden Anteile monatlich linear.
(4) **Vesting-Beginn:**
- für Mitarbeiter: Datum des Eintritts in die Gesellschaft,
- für Geschäftsführer: Datum der Bestellung,
- für Advisor: Datum der Allokationsvereinbarung.
### 4.2 Acceleration bei Exit
(1) **Single-Trigger Acceleration:** Bei Change-of-Control-Ereignis (Verkauf von > {{ACCELERATION_THRESHOLD_PCT}} % der Anteile) wird das Vesting zu **{{ACCELERATION_PCT}} %** beschleunigt.
(2) **Double-Trigger Acceleration:** Bei {{#IF HAS_DOUBLE_TRIGGER}}Change of Control kombiniert mit unverschuldeter Beendigung des Arbeitsverhältnisses innerhalb von 12 Monaten nach Closing wird das verbleibende Vesting vollständig (100 %) beschleunigt.{{/IF}}{{#IF NOT HAS_DOUBLE_TRIGGER}}Nicht vorgesehen.{{/IF}}
### 4.3 Pausierung des Vestings
(1) Bei Elternzeit, längerer Krankheit oder einvernehmlicher Pausierung der Tätigkeit kann das Vesting pausieren. Die Bedingungen werden in der Allokationsvereinbarung geregelt.
(2) Eine reduzierte Verfügbarkeit (z. B. Teilzeit) führt nicht automatisch zur Pausierung; gegebenenfalls erfolgt eine **proportionale Anpassung** des Vesting-Tempos.
## § 5 Trigger-Ereignisse und Auszahlung
### 5.1 Trigger-Ereignisse
Folgende Ereignisse lösen die Auszahlung der vested Beteiligungen aus:
(a) **Exit:** Verkauf von > {{EXIT_THRESHOLD_PCT}} % der Anteile (Trade Sale, Asset Deal, IPO),
(b) **Liquidation:** Auflösung der Gesellschaft mit verbleibendem Vermögen,
(c) {{#IF HAS_DIVIDEND_TRIGGER}}**Dividendenausschüttung:** Anteilige Beteiligung an Ausschüttungen aus dem Bilanzgewinn,{{/IF}}
(d) {{#IF HAS_SECONDARY_TRIGGER}}**Secondary-Verkauf:** Bei Verkäufen einzelner Gründer-Anteile zu Marktpreisen können vested Beteiligungen anteilig mitverkauft werden,{{/IF}}
(e) {{#IF HAS_EXPIRY_TRIGGER}}**Plan-Ablauf:** Nach Ablauf von {{PLAN_EXPIRY_YEARS}} Jahren ohne Exit erfolgt eine Bewertung und ggf. Auszahlung gemäß Beschluss der Gesellschafterversammlung.{{/IF}}
### 5.2 Berechnung der Auszahlung
{{#IF IS_VSOP}}
Auszahlung = Vested Virtuelle Anteile × (Exit-Preis pro Anteil Reference Price)
{{/IF}}
{{#IF IS_REAL_ESOP}}
Erlös = Vested Anteile × Exit-Preis pro Anteil
abzüglich Strike Price × Anzahl Anteile (bereits bezahlt bei Ausübung)
{{/IF}}
{{#IF IS_PHANTOM}}
Auszahlung = Vested Phantom Shares × (Exit-Preis pro Anteil Strike Price)
{{/IF}}
### 5.3 Zahlungsmodalitäten
(1) Die Auszahlung erfolgt innerhalb von **{{PAYOUT_DAYS}} Tagen** nach Eingang der Verkaufserlöse bei der Gesellschaft.
(2) **Vesting-Cap:** Die Auszahlung pro Berechtigtem ist auf das **{{PAYOUT_CAP_MULTIPLIER}}-fache** des Bruttojahresgehalts bei Allokation gedeckelt, sofern dies in der Allokationsvereinbarung vorgesehen ist.
(3) **Steuerliche Behandlung:** Die Auszahlung gilt grundsätzlich als Arbeitslohn (Lohnsteuer + Sozialabgaben){{#IF IS_VSOP}}; bei VSOP keine günstige Tarifierung gemäß § 19a EStG{{/IF}}{{#IF IS_REAL_ESOP}}; bei ESOP ggf. günstige Tarifierung gemäß § 19a EStG (Mitarbeiterkapitalbeteiligung){{/IF}}.
## § 6 Leaver-Regelungen
### 6.1 Leaver-Kategorien (entsprechend SHA-Definition)
(a) **Good Leaver:** Tod, dauerhafte Krankheit, Elternzeit, einvernehmlicher Beschluss, betriebsbedingte Kündigung durch die Gesellschaft.
(b) **Neutral Leaver:** Eigenkündigung des Berechtigten ohne Pflichtverletzung.
(c) **Bad Leaver:** Außerordentliche Kündigung durch die Gesellschaft aufgrund Pflichtverletzung, Verstoß gegen Wettbewerbsverbot oder Vertraulichkeit, strafbares Verhalten.
### 6.2 Behandlung beim Leaver-Event
| Status | Unvested | Vested |
|---|---|---|
| **Good Leaver** | Verfall | Behalten zu vollem Wert |
| **Neutral Leaver** | Verfall | Behalten zu **{{NEUTRAL_VESTED_PCT}} %** des Werts (Standard: 100% für Optionen, ggf. Rückkauf zum FMV) |
| **Bad Leaver** | Verfall | Verfall oder Rückkauf zum **Nennbetrag/Strike Price** (max. Einlage) |
### 6.3 Rückkaufsrecht der Gesellschaft
(1) Bei Ausscheiden hat die Gesellschaft das Recht (nicht Pflicht), vested Beteiligungen vom Berechtigten zurückzukaufen.
(2) Rückkaufspreis:
- **Good Leaver:** Fair Market Value (gemäß SHA-Bestimmung)
- **Neutral Leaver:** Fair Market Value, ggf. mit Abschlag (siehe Allokationsvereinbarung)
- **Bad Leaver:** Strike Price / Nennbetrag
(3) Zahlung in bis zu **{{BUYBACK_INSTALLMENTS}}** Monatsraten möglich.
## § 7 Übertragbarkeit
(1) Die Beteiligungen sind **nicht übertragbar**, ausgenommen:
(a) Erbfall (Übergang auf Erben mit Auflage der Plan-Bedingungen),
(b) Übertragung an verbundene Personen mit Zustimmung der Geschäftsführung.
(2) Eine Verpfändung, Beleihung oder sonstige Belastung ist ausgeschlossen.
## § 8 Verwässerungsschutz und Anpassungen
(1) Bei Kapitalerhöhungen, Anteilsteilungen, Zusammenlegungen oder ähnlichen Kapitalmaßnahmen wird der Plan-Pool **proportional angepasst**, sodass die wirtschaftliche Position der Berechtigten nicht verschlechtert wird.
(2) Bei künftigen Finanzierungsrunden mit Verwässerungsschutz für Investoren gelten die Anpassungen analog für den ESOP-Pool, soweit dies in den Investorenverträgen vorgesehen ist.
## § 9 Plan-Verwaltung
(1) Der Plan wird von der **Geschäftsführung** verwaltet, in Abstimmung mit dem Beirat (sofern vorhanden) und unter Beachtung der Reserved Matters.
(2) Wesentliche Entscheidungen (Pool-Erweiterung, Plan-Änderungen, Allokationen >{{MATERIAL_ALLOCATION_PCT}} %) bedürfen der Zustimmung der Gesellschafterversammlung gemäß SHA.
(3) Die Geschäftsführung führt ein **Plan-Register** mit allen Allokationen, Vesting-Ständen und Ausübungen.
## § 10 Kommunikation und Transparenz
(1) Berechtigte erhalten jährlich eine **Vesting-Übersicht** mit:
(a) Allokationsdatum, Strike Price/Reference Price,
(b) bisher vested und noch unvested Anteile,
(c) Vesting-Schedule mit Daten,
(d) Hinweise zu Steuerimplikationen.
(2) Bei wesentlichen Ereignissen (Exit, Kapitalerhöhung mit Pool-Anpassung) werden Berechtigte informiert.
## § 11 Vertraulichkeit
Berechtigte verpflichten sich zur Vertraulichkeit über Plan-Inhalte, Allokationen anderer Berechtigter und damit verbundene Geschäftsgeheimnisse.
## § 12 Plan-Änderungen und Beendigung
(1) Änderungen dieses Plans bedürfen eines Gesellschafterbeschlusses mit der im SHA festgelegten Mehrheit.
(2) Änderungen, die die Position bereits Berechtigter wesentlich verschlechtern, bedürfen zusätzlich der Zustimmung der betroffenen Berechtigten.
(3) Der Plan endet bei:
(a) Auflösung der Gesellschaft,
(b) Vollständiger Auszahlung aller vested Beteiligungen,
(c) Beschluss der Gesellschafterversammlung zur Plan-Beendigung (unter Wahrung erworbener Ansprüche).
## § 13 Schlussbestimmungen
(1) **Anwendbares Recht:** Deutsches Recht.
(2) **Gerichtsstand:** Sitz der Gesellschaft.
(3) **Salvatorische Klausel:** Unwirksame Bestimmungen berühren nicht die Wirksamkeit der übrigen.
(4) **Schriftform:** Änderungen bedürfen der Schriftform.
(5) **Anlagen:** Muster-Allokationsvereinbarung (Anlage 1).
---
**Verabschiedet durch Gesellschafterbeschluss vom {{ADOPTION_DATE}}.**
___________________________
Für die Gesellschaft / Geschäftsführung
---
## Anlage 1 — Muster-Allokationsvereinbarung (Grant Letter)
**An:** {{BENEFICIARY_NAME}}
Lieber/Liebe {{BENEFICIARY_NAME}},
hiermit teilen wir Dir die folgende Beteiligung am {{PLAN_NAME}} der {{COMPANY_NAME}} zu:
| Punkt | Wert |
|---|---|
| **Anzahl Anteile** | {{ALLOCATED_SHARES_COUNT}} ({{ALLOCATED_PCT}} % am Pool) |
| **Strike Price / Reference Price** | {{STRIKE_PRICE_EUR}} EUR pro Anteil |
| **Allokationsdatum** | {{ALLOCATION_DATE}} |
| **Vesting-Beginn** | {{VESTING_START_DATE}} |
| **Vesting-Schedule** | {{VESTING_MONTHS}} Monate, Cliff {{CLIFF_MONTHS}} Monate |
| **Acceleration bei Exit** | {{ACCELERATION_PCT}} % Single-Trigger |
| **Auszahlung** | {{PAYOUT_TYPE}} |
Es gelten die Bedingungen des {{PLAN_NAME}} in der gültigen Fassung vom {{ADOPTION_DATE}}.
Mit Annahme dieser Allokationsvereinbarung bestätigst Du, den Plan gelesen und verstanden zu haben.
Bei Fragen kontaktiere bitte {{CONTACT_PERSON}}.
Herzlich willkommen im {{PLAN_NAME}}!
**{{COMPANY_SEAT}}, {{ALLOCATION_DATE}}**
___________________________
Für die Gesellschaft
___________________________
{{BENEFICIARY_NAME}} (Berechtigte/r)
$template$,
'["ESOP_TYPE_LABEL","ESOP_TYPE_SHORT","COMPANY_NAME","COMPANY_SEAT","PLAN_NAME","ADOPTION_DATE","DOCUMENT_VERSION","IS_VSOP","IS_REAL_ESOP","IS_PHANTOM","POOL_PCT","POOL_ABSOLUTE_VALUE","HAS_SHA","CXO_ALLOCATION_RANGE","SENIOR_ALLOCATION_RANGE","MID_ALLOCATION_RANGE","JUNIOR_ALLOCATION_RANGE","ADVISOR_ALLOCATION_RANGE","SHARE_NENNBETRAG_EUR","STRIKE_PRICE_EUR","VESTING_MONTHS","CLIFF_MONTHS","CLIFF_VEST_PCT","ACCELERATION_THRESHOLD_PCT","ACCELERATION_PCT","HAS_DOUBLE_TRIGGER","EXIT_THRESHOLD_PCT","HAS_DIVIDEND_TRIGGER","HAS_SECONDARY_TRIGGER","HAS_EXPIRY_TRIGGER","PLAN_EXPIRY_YEARS","PAYOUT_DAYS","PAYOUT_CAP_MULTIPLIER","NEUTRAL_VESTED_PCT","BUYBACK_INSTALLMENTS","MATERIAL_ALLOCATION_PCT","BENEFICIARY_NAME","ALLOCATED_SHARES_COUNT","ALLOCATED_PCT","ALLOCATION_DATE","VESTING_START_DATE","PAYOUT_TYPE","CONTACT_PERSON"]'::jsonb,
'de','DE',NULL,'MIT License','BreakPilot Compliance',false,true,'1.0.0','published',NOW(),NOW()
;
SELECT document_type, title, LENGTH(content), jsonb_array_length(placeholders) FROM compliance_legal_templates WHERE document_type = 'esop_plan' ORDER BY created_at DESC LIMIT 1;