dl-termsheet

star 0

Drafts the Wells & Overland Term Sheet (Stage 3 / P8) — the joint co-lender offer externalized to the borrower — from the IC-approved term-sheet input captured at the Pre-Screen IC. Use when the user asks to draft or populate the Wells & Overland Term Sheet from a Pre-Screen IC debrief ("draft the term sheet", "P8 term sheet", "populate the term sheet from the IC debrief"). Populates the bundled .docx template in place: writes deal-specific text into the 17 term rows of the body table plus the leverage-basis footnote; every other paragraph and cell stays unchanged behind a cell-level preservation gate. Classifies each IC condition externalize or internal_only (only externalize entries enter the document body) and runs the outbound-redaction checklist per build. Draft output under a vS filename pending human review.

jaminator By jaminator schedule Updated 6/10/2026

name: dl-termsheet description: > Drafts the Wells & Overland Term Sheet (Stage 3 / P8) — the joint co-lender offer externalized to the borrower — from the IC-approved term-sheet input captured at the Pre-Screen IC. Use when the user asks to draft or populate the Wells & Overland Term Sheet from a Pre-Screen IC debrief ("draft the term sheet", "P8 term sheet", "populate the term sheet from the IC debrief"). Populates the bundled .docx template in place: writes deal-specific text into the 17 term rows of the body table plus the leverage-basis footnote; every other paragraph and cell stays unchanged behind a cell-level preservation gate. Classifies each IC condition externalize or internal_only (only externalize entries enter the document body) and runs the outbound-redaction checklist per build. Draft output under a vS filename pending human review.

Wells & Overland Term Sheet Drafting — dl-termsheet

STEP 0 — ORIENTATION

This skill closes the P7→P8 chain: dl-memo-prescreen → Pre-Screen IC → dl-ic-debrief-prescreendl-termsheet (here) → externalized to the borrower (jointly authored with co-lender Wells Fargo).

Single deliverable: a populated [Company]_-_Wells_&_Overland_Term_Sheet_<MM-DD-YY>_vS.docx produced in place against the bundled template, plus a structured JSON manifest.

Hard rules that govern everything below:

  • Externalized RESTRICTED. The term sheet ships to the borrower and Wells Fargo (co-lender). Pricing, fees, covenant levels, and the leverage-basis footnote are externalized under the term sheet's own confidentiality disclaimer. The outbound-redaction checklist applies to every build (unlike Stage 3's other Pre-Screen-era deliverables, which are internal-only). Per-class exclusions: fund-level economics above the co-lender tranche; IC deliberation content; individual IC votes; firm-internal portfolio context; internal hold-size discussions beyond IC-approved hold; internal hurdle / capital-call discussions.
  • No banner in the document body. This is an in-place edit of a production .docx template; a [DRAFT — HUMAN REVIEW REQUIRED] banner anywhere in the body would corrupt the issued PDF. The draft signal is the vS filename suffix plus the pending-review flag on the manifest. The reviewer verifies both before sending.
  • Never fabricate. Never invent pricing levels, covenant cushions, fee amounts, maturity dates, DDTL governors, hold sizes, or commitment dollars. Every populated cell carries a source-field reference traceable to a deal-terms field, an ic_conditions[<index>], commitment_dollar_approved, a deal_context field, or a [BUNDLED_DEFAULT]. The anti-fabrication check refuses any populate without a backing source. Use [INSUFFICIENT DATA — <field>] verbatim in the cell for required source content that is absent; never silently fill in a placeholder.
  • Precedent-locked covenant boilerplate. Rows 16 (Affirmative Covenants) and 17 (Negative Covenants) take zero writes unless an ic_conditions[i] classified externalize AND tagged covenant_carveout=true appends a carve-out line under the bundled Customary for transactions of this type prefix. The preservation gate enforces this.
  • Per-IC-condition externalization classification. Each ic_conditions[i] is classified externalize or internal_only. Only externalize entries land in the document body. Ambiguous cases default to internal_only (the safer side of the redaction firewall) and the rationale carries the [DEFAULT INTERNAL_ONLY — VERIFY] annotation surfaced for human review.
  • Declined-deal short-circuit. If the term-sheet input is None (the upstream IC declined), emit the informative refusal [NO TERM SHEET — IC DECLINED] and exit without writing.

Reference files (load as needed; one level deep):

  • reference/termsheet-population.md — the populate algorithm, the python-docx cell-of-table mechanics, the cell-and-paragraph-level preservation gate, the normalize-then-compare baseline, the per-IC-condition classification interface. Read before Step 6.
  • reference/section-mechanics.md — row × col coordinates, per-row source-field mapping (rows 1–18), populate-zero designations, leverage-basis footnote handling, covenant carve-out append mechanic, the bracketed-placeholder substitution catalog, 17 worked example renderings. Read before Step 5.
  • reference/outbound-redaction-checklist.md — the canonical checklist text, per-class exclusion list, per-IC-condition externalization classifier heuristics + escalation path, embedded attestation surface. Read before Step 3.

Dependencies

Install required package: pip install python-docx

Workflow checklist (copy into your working response and check off):

Term Sheet Drafting Progress:
- [ ] Step 1: Parse the term-sheet input; verify not None (declined-deal short-circuit)
- [ ] Step 2: Classify each ic_conditions[i] (externalize | internal_only)
- [ ] Step 3: Run the outbound-redaction checklist (7 attestations)
- [ ] Step 4: Resolve deal_context (lender_overrides, use_of_proceeds)
- [ ] Step 5: Build the populate plan (per-row writes; joint-proposal rule)
- [ ] Step 6: Run scripts/populate_term_sheet.py with the plan (preservation gate)
- [ ] Step 7: Verify vS output + emit the JSON manifest
- [ ] Step 8: Stop — flag for human review

Inputs

The skill consumes:

  1. <termsheet_input> (REQUIRED). The term-sheet input block emitted by dl-ic-debrief-prescreen, as JSON. Carries:

    • The IC-approved eight-field deal-terms bucket (facility_structure, commitment_maturity, amort_prepay, pricing, fees, ddtl_governor, financial_covenants, ltm_anchor).
    • ic_conditions: list[str] — the IC's free-text conditions (each classified at build time).
    • hold_size_approval: str — IC-approved hold size (per-LP cap; NEVER externalized; informs internal validation only).
    • commitment_dollar_approved: str — IC-approved total commitment dollar (externalized as the Amount & Facility size).
  2. <deal_context> (OPTIONAL). Per-call deal context: lender_overrides (non-default Row 1 Lenders text) and use_of_proceeds (sourced upstream from the Pre-Screen memo's Transaction Overview section).

  3. <term_sheet_template> (OPTIONAL). Path to the bundled template .docx. Defaults to assets/term-sheet-template.docx.

  4. <deck_path> (REQUIRED). Path to the working .docx (in the Word Add-in this is the active document; in Claude Desktop this is the cloned-from-template path).

  5. Reference-only alignment surfaces (NOT extracted): the form credit agreement and the market deal-terms reference are surfaces the human reviewer consults; the skill does not parse the form CA.


STEP 1 — Parse term-sheet input; declined-deal short-circuit

Parse the <termsheet_input> JSON. Validate: all eight deal-terms fields present (None acceptable per-field; whole-object None triggers the short-circuit); ic_conditions is a list (possibly empty); hold_size_approval and commitment_dollar_approved are non-empty strings.

Declined-deal short-circuit. If the term-sheet input is None on the upstream punchlist, emit [NO TERM SHEET — IC DECLINED] with the one-line explanation "The Pre-Screen IC declined the deal; no term sheet to draft.", set the manifest's escalation field to "declined_deal", write no .docx, and exit.


STEP 2 — Classify each ic_conditions[i]

For each entry in ic_conditions, produce a classification record (see reference/outbound-redaction-checklist.md for the heuristics + escalation path): condition_index; classification (externalize | internal_only); rationale (paraphrase; never an invented quote); covenant_carveout (True only when externalize AND the condition modifies an affirmative/negative covenant carve-out).

Externalize examples: "subject to satisfactory legal DD on the AR sale facility", "conditional on final QoE", "Pricing grid adjusted to S+550/525/500", "subject to a 90-day commitment expiration".

Internal-only examples: "AM team to monitor borrower's customer-concentration quarterly", "revisit hold size in 30 days", "return to IC at term sheet acceptance".

Ambiguous → default internal_only. Record [DEFAULT INTERNAL_ONLY — VERIFY] in rationale and surface for human review. The safer side of the redaction firewall.


STEP 3 — Run the outbound-redaction checklist

Render the canonical checklist text from reference/outbound-redaction-checklist.md and verify all seven attestations are True:

  1. FINAL-VERSION ATTESTATION — this is a draft (vS); human reviewer verifies before sending.
  2. CLASS A — no fund-level economics above the co-lender tranche.
  3. CLASS B — no IC deliberation content.
  4. CLASS C — no individual IC votes.
  5. CLASS D — no firm-internal portfolio context.
  6. CLASS E — no internal hold-size discussions beyond IC-approved hold.
  7. CLASS F — no internal hurdle / capital-call discussions.

Record per-class booleans on the manifest's redaction-checklist field with the canonical-text SHA-256 (tamper-evidence) and ISO timestamp. Any False attestation refuses the build with [REDACTION CHECKLIST INCOMPLETE — <class>].


STEP 4 — Resolve deal_context

Extract lender_overrides (typically None; the Row 1 default "Wells Fargo & Overland Advantage" stands) and use_of_proceeds (sourced upstream from the Pre-Screen memo's Transaction Overview section if available; otherwise emit [INSUFFICIENT DATA — use_of_proceeds not provided] and surface for human review — Row 5 carries the marker).


STEP 5 — Build the populate plan

For each row 1–18 of the body table, decide whether to write and what to write. Read reference/section-mechanics.md for the per-row source-field mapping and rendered-text examples; key points:

  • Rows 1–9, 11–18: the populator writes the SAME text to columns 1 and 2 (joint Wells + Overland proposal). The canonical entry is col=1; the populator auto-mirrors to col=2.
  • Row 10 (per-facility Pricing): the SINGLE row where columns 1 and 2 carry different text. Build two write entries: col=1 = Priority Revolver pricing grid, col=2 = Term Loan Facilities pricing grid.
  • Rows 16, 17 (Affirmative + Negative Covenants): zero writes unless a condition classification carries covenant_carveout=True. The append mechanic preserves the bundled Customary for transactions of this type prefix (the preservation gate enforces).
  • Row 18 (Conditions Precedent): assemble the boilerplate prefix + default CP list + leverage CP + externalize-classified ic_conditions (internal_only entries appear NOWHERE in the cell).
  • Body paragraph [001] (leverage-basis footnote): populate-rare; substitute the bracketed placeholders from the deal-terms ltm_anchor field.

Every write entry carries a source-field reference. A write without a backing source field refuses the build.

Compute the input_signature SHA-256 over the canonical input payload (the term-sheet input JSON + bundled template SHA-256 + deal_context JSON + canonical-checklist-text SHA-256). Required for the idempotence check.


STEP 6 — Run scripts/populate_term_sheet.py

Execute (in Claude Desktop / batch mode):

python scripts/populate_term_sheet.py populate <deck_path> \
    --plan term_sheet_population_plan.json \
    --template assets/term-sheet-template.docx \
    --out <Company>_-_Wells_&_Overland_Term_Sheet_<MM-DD-YY>_vS.docx

In the Claude Word Add-in there is no Python; the skill performs the same writes in-document and the user reviews. The script is the executable specification of the preservation gate — either way, the same populate plan drives both.

The script runs the cell-and-paragraph-level preservation gate in memory before any file write; on any violation it deletes the temp file and emits a structured refusal with the violated check. Exit codes:

  • 0 — vS .docx written; preservation gate passed.
  • 2 — refused (preservation violation, declined deal, incomplete checklist, etc.).
  • 3 — idempotence return (term_sheet_already_built).

The idempotence check is signature-based: a <output>.signature sidecar records the input_signature of the build that produced the deck. Re-running with the same signature returns exit 3 unless --rebuild is passed.


STEP 7 — Verify vS output + emit the manifest

Confirm:

  • The output filename has the _vS.docx suffix.
  • The structured manifest is marked pending human review, RESTRICTED, with external distribution limited to borrower + co-lender.
  • All seven redaction-checklist attestations are True.
  • The manifest records that every preservation check passed.
  • The populate plan's writes are recorded for audit.
  • The condition classifications are exhaustive over ic_conditions.

Emit the populated vS.docx path + the JSON manifest.


STEP 8 — Stop. Flag for human review.

The output is the term-sheet draft. Do not externalize, do not finalize, do not strip the vS suffix. The human reviewer:

  • Confirms this is the draft they intended.
  • Reviews every populated cell against the IC-approved deal-terms bucket.
  • Reviews the Conditions Precedent list — every externalize-classified condition appears verbatim; every internal_only-classified condition appears NOWHERE.
  • Verifies the leverage-basis footnote matches the source ltm_anchor.
  • Confirms the redaction checklist attestations are accurate.
  • Re-classifies any [DEFAULT INTERNAL_ONLY — VERIFY]-annotated conditions if needed (and re-runs the skill with --rebuild to regenerate the plan).
  • Strips the vS suffix only on final approval, before externalization.

The eight-field deal-terms bucket matures across three stages with a constant field set: indicative (recorded by dl-memo-prescreen at P7), IC-approved (captured by dl-ic-debrief-prescreen after the Pre-Screen IC), and drafted (consumed here at P8).

Classification & review state

The term sheet is RESTRICTED content externalized to the borrower and Wells Fargo only; the outbound-redaction checklist (Step 3) applies per build, and internal_only material never enters the document. The output is a draft pending human review: the draft signal is the vS filename suffix plus the pending-review flag on the manifest — no banner in the document body, because the file is an in-place-edited production template. A human reviewer approves and externalizes; never approve, finalize, or issue. Use [INSUFFICIENT DATA — <field>] for any required source content that is absent — never fabricate a term.

Runtime

The populate script runs where Python is available: Claude Desktop or claude.ai with code execution enabled. In the Word Add-in, the skill has a documented in-document edit path — perform the same plan-driven writes against the active document and have the user review; the machine-verified preservation gate runs only where the script runs, so flag that the scripted verification was not executed. Term-classification and checklist work happens in conversation and works anywhere.

Install via CLI
npx skills add https://github.com/jaminator/DL-Skills-Library --skill dl-termsheet
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator