| name | recoup-catalog-review-deal |
| description | Review and underwrite a music catalog deal end to end — ingest a messy royalty data room, value it (NPS/NLS, concentration, scenarios), build the executive dashboard, and write the IC memo. Use for "review/underwrite this catalog", "clean these royalty statements", "catalog valuation", "build the deal dashboard", or "write the IC memo". Modes: review (default), ingest, value, dashboard, report. Needs seller files; source/ is immutable and completion is gated. For a quick value from public data only, use recoup-catalog-estimate-value. |
| hooks | {"Stop":[{"hooks":"[Truncated]"}]} |
Recoup Catalog — Review Deal
Catalog deal review end to end. review runs the full diligence pipeline; ingest /
value / dashboard / report are the stages (each runnable alone). Work lives in a deal
workspace deals/{deal-id}/ whose source/ is immutable evidence (never write
into it). The workspace schema is references/deal-workspace.md; the scaffold is
templates/deal-workspace/. Deterministic math + validators ship in scripts/
(invoke relatively).
Mode: review (the full diligence pipeline — gated)
- Scaffold
deals/{deal-id}/. Treat source/ as immutable (a PreToolUse hook
blocks writes to it on Claude Code).
- Ingest → run ingest mode.
- Value → run value mode.
- Dashboard → run dashboard mode.
- Report → run report mode if the user wants the IC memo / financing pack /
seller report PDF.
- Completion gate (don't claim "ready" until all pass):
python3 scripts/run-deal-checks.py deals/{deal-id} exits clean;
build-deal-readiness.py is not blocked; assumptions.yaml +
evidence-ledger.json exist; findings closed/accepted/listed; every memo claim
traces to evidence; python3 scripts/validate-dashboard.py deals/{deal-id} returns
status: ok. On Claude Code a Stop hook enforces this.
Mode: ingest (clean the data room)
Normalize messy statements/rights/metadata into the canonical schema
(references/canonical-schema.md, references/cleaning-rules.md,
references/normalization.md; checklist references/data-room-checklist.md):
auto-column-map.py, normalize-royalty-statement.py (extract-pdf-statement.py for
PDFs), dataroom-hygiene-scan.py, build-file-manifest.py +
build-manual-review-queue.py, calculate-concentration.py. Validate with
validate-normalized-ledger.py + validate-findings-evidence.py. Never silently
coerce ambiguous rows — queue them for manual review.
Mode: value (full valuation — needs ingested files)
Project value with references/valuation-framework.md:
calculate-nps-nls-bridge.py, calculate-concentration.py; apply decay, recoupment,
reserves; build downside/base/upside scenarios. Layer the deep-dives:
royalty-audit.md, rights-review.md, pro-performance-income.md,
financing-underwrite.md, seller-prep.md, post-close-admin.md, red-flags.md.
For public-data-only, use recoup-catalog-estimate-value.
Mode: dashboard (the customer-facing DASHBOARD.html)
Author with creative freedom, then gate it:
python3 scripts/validate-dashboard.py deals/{deal-id} must return status: ok
(also run run-deal-checks.py). Do not present a dashboard that fails validation.
Mode: report (IC memo / financing pack / seller report → PDF)
Assemble from the dashboard + workpapers using references/output-templates.md,
export one shareable PDF. Every claim must trace to evidence-ledger.json or
assumptions.yaml.
Guardrails
source/ is immutable evidence — never write into it.
- Completion is gated —
run-deal-checks.py clean, readiness not blocked,
validate-dashboard.py ok before "ready".
- Every claim traces to evidence — no unsupported numbers.
- Determinism where it counts — royalty math runs in
scripts/, not by hand.
References & scripts
references/ — deal-workspace, deal-workflow, canonical-schema, cleaning-rules,
normalization, data-room-checklist, valuation-framework, royalty-audit,
rights-review, financing-underwrite, post-close-admin, pro-performance-income,
red-flags, output-templates, methodology, recoup-api, seller-prep.
scripts/ — ingest/normalize, calculate-, validate-, run-deal-checks,
build-deal-readiness. Ship alongside this skill; invoke relatively.