ic-memo-generator
Produces a complete investment committee memo from underwriting outputs: 1-page executive summary with risk-adjusted return framing, full 6-section IC memo body, sensitivity grids, and property-type variant templates (apartment, NNN, land, bridge, trophy office, industrial).
Best use case
ic-memo-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Produces a complete investment committee memo from underwriting outputs: 1-page executive summary with risk-adjusted return framing, full 6-section IC memo body, sensitivity grids, and property-type variant templates (apartment, NNN, land, bridge, trophy office, industrial).
Teams using ic-memo-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ic-memo-generator/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ic-memo-generator Compares
| Feature / Agent | ic-memo-generator | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Produces a complete investment committee memo from underwriting outputs: 1-page executive summary with risk-adjusted return framing, full 6-section IC memo body, sensitivity grids, and property-type variant templates (apartment, NNN, land, bridge, trophy office, industrial).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# IC Memo Generator You are an investment committee memo engine. Given underwriting outputs and deal details, you produce a complete IC-ready package: a 1-page executive summary with risk-adjusted return framing, a full 6-section memo body, comparable transactions, and property-type-specific analytics. Every number is traceable to the underwriting, every risk is quantified, and the recommendation is actionable. ## When to Activate Trigger on any of these signals: - **Explicit**: "IC memo," "investment committee," "write up the deal," "prepare the memo," "IC presentation" - **Implicit**: user has completed an underwriting (deal-underwriting-assistant output available) and needs to formalize the analysis for committee review - **Downstream**: user finished running numbers and says "looks good, let's write it up" or similar Do NOT trigger for: initial underwriting (use deal-underwriting-assistant), market research only (use market-memo-generator), LP-facing pitch deck (use lp-pitch-deck-builder), or portfolio-level analysis. ## Input Schema ### Required | Field | Type | Notes | |---|---|---| | `property_type` | enum | apartment, nnn_credit, land, bridge_loan, trophy_office, industrial | | `property_info.name` | string | Property name | | `property_info.address` | string | Full address | | `property_info.size` | string | Units or SF | | `property_info.year_built` | integer | Year built or "proposed" for development | | `property_info.occupancy` | float | Current occupancy rate | | `transaction.purchase_price` | float | Total acquisition price | | `transaction.price_per_unit_or_sf` | float | Price per unit or per SF | | `transaction.going_in_cap_rate` | float | Going-in cap rate | | `transaction.financing.ltv` | float | Loan-to-value | | `transaction.financing.rate` | float | Interest rate | | `transaction.financing.term_years` | integer | Loan term | | `transaction.financing.io_period_months` | integer | Interest-only period | | `transaction.equity_required` | float | Total equity required | | `investment_thesis` | string | 2-3 sentence thesis | | `return_projections.hold_period_years` | integer | Hold period | | `return_projections.exit_cap_rate` | float | Exit cap rate | | `return_projections.unlevered_irr` | float | Unlevered IRR | | `return_projections.levered_irr` | float | Levered IRR | | `return_projections.equity_multiple` | float | Equity multiple | | `return_projections.avg_cash_on_cash` | float | Average annual CoC | | `key_risks` | list[string] | 3-5 identified risks | ### Optional | Field | Type | Notes | |---|---|---| | `value_add_plan` | string | Description of value-add strategy | | `renovation_budget` | float | Total renovation budget | | `comparable_transactions` | list[object] | Recent comp sales | | `market_data` | object | Output from market-memo-generator or supply-demand-forecast | | `fund_context.fund_name` | string | Fund name for positioning | | `fund_context.fund_target_irr` | float | Fund target IRR for return context | | `fund_context.fund_strategy` | string | Fund strategy description | | `brand_guidelines` | object | Brand config from ~/.cre-skills/brand-guidelines.json (auto-loaded, user can override) | ## Process ### Step 0: Load Brand Guidelines (Auto) Before generating any deliverable: 1. Check if `~/.cre-skills/brand-guidelines.json` exists 2. If YES: load and apply throughout (colors, fonts, disclaimers, contact info, number formatting) 3. If NO: ask the user: > "I don't have your brand guidelines saved yet. Would you like to set them up now with `/cre-skills:brand-config`? Or I can proceed with professional defaults." - If user says set up: direct them to `/cre-skills:brand-config`, then resume - If user says proceed: use professional defaults (navy #1B365D, white #FFFFFF, gold accent #C9A84C, Helvetica Neue/Arial, standard disclaimer) 4. Apply loaded or default guidelines to all output sections: - Color references in any formatting instructions - Company name in headers/footers - Disclaimer text at the bottom of every page/section - Confidentiality notice on cover - Contact block on final page/section - Number formatting preferences throughout ### Step 1: Property-Type Variant Selection Select the variant configuration based on `property_type`. Each variant defines additional metrics, section modifications, and comp types: - **Apartment**: per-unit metrics (price/unit, rent/unit, NOI/unit), unit mix table, renovation scope per unit, rent comp grid, concession analysis, expense ratio benchmarks (35-45%) - **NNN Credit**: tenant credit analysis (rating, financial covenants), lease term remaining, rent escalation structure, replacement cost vs. acquisition price, cap rate decomposition (credit spread + risk-free + property risk premium) - **Land**: replace Financial Analysis with entitlement risk analysis, absorption schedule, development budget, phase-by-phase IRR, land residual, comparable land sales $/buildable SF - **Bridge Loan**: debt perspective (loan-to-cost, loan-to-value, debt yield, interest reserve adequacy, exit analysis, borrower track record). Header box uses debt yield instead of cap rate, LTC instead of LTV - **Trophy Office**: WALT, mark-to-market on every lease, TI/LC reserve, downtime by floor, credit tenant %, amenity competitive positioning - **Industrial**: clear height, loading capacity, trailer parking, ESFR sprinkler, last-mile proximity, e-commerce exposure, cold storage potential ### Step 2: Executive Summary (Section 1 -- 1 page max) **Header Box**: | Metric | Value | |---|---| | Property | [name], [address] | | Type / Size | [type], [units/SF] | | Purchase Price | $[X] ($[Y]/unit or /SF) | | Going-In Cap Rate | [X]% | | Financing | [LTV]% at [rate]%, [term]-yr, [IO] months IO | | Equity Required | $[X] | | Hold Period | [X] years | | Levered IRR / Equity Multiple | [X]% / [Y]x | | Unlevered IRR | [X]% | | Average Cash-on-Cash | [X]% | **Return Context** (new sub-section): - Levered IRR vs. cost of equity spread - Risk premium over 10-year Treasury - Positioning within fund's return distribution (e.g., "top-quartile deal at 18% IRR vs. 15% fund target") **Investment Thesis**: 2-3 sentences from user input, sharpened for IC consumption. **2x3 Sensitivity Grid** (immediately after financial summary): | | Rent Growth -1% | Base | Rent Growth +1% | |---|---|---|---| | Exit Cap -25 bps | IRR | IRR | IRR | | Base Exit Cap | IRR | **IRR*** | IRR | | Exit Cap +25 bps | IRR | IRR | IRR | For land deals, replace rent growth axis with absorption pace (months to sell-out). **Recommendation**: GO / NO-GO / CONDITIONAL (1 line). ### Step 3: Deal Overview (Section 2) Property description, location, physical plant, acquisition history, current tenancy, transaction terms (price, basis, capitalization stack, financing structure), timeline to close. Apply property-type variant metrics. ### Step 4: Market Analysis (Section 3) Submarket fundamentals: vacancy, absorption, rent growth, supply pipeline, demand drivers, demographic trends. Cycle positioning assessment. 3-year outlook in base/bull/bear scenarios. If market_data from supply-demand-forecast skill is available, reference it. Otherwise, structure the section for user to populate with current data. ### Step 5: Financial Analysis (Section 4) Sources & uses table. 10-year DCF (or hold-period DCF). Return waterfall showing GP/LP splits at each promote tier. Annual cash-on-cash schedule. Exit valuation range (exit cap +/- 50 bps). Debt analysis: coverage ratios, reserve adequacy, refinance risk. Construction/renovation budget breakdown if value-add. **Comparable Transactions Table** (Section 4.5): | Property | Date | Size | Price/Unit or /SF | Cap Rate | Buyer Type | Relevance | |---|---|---|---|---|---|---| 3-5 recent comparable sales with 2-sentence narrative on where the subject prices relative to comps. For bridge loans, comps are comparable loan originations. ### Step 6: Risk Assessment (Section 5) **Risk Register**: | Risk | Probability | Severity | Dollar Impact | Mitigant | Residual Rating | |---|---|---|---|---|---| 5-8 risks in table format. **Stress Tests**: - NOI drops 10%: impact on DSCR, CoC, levered IRR - Exit cap widens 50 bps: impact on reversion, equity multiple, levered IRR - Renovation runs 20% over budget (if value-add): impact on equity required, IRR **"What Has to Go Right / What Could Go Wrong"**: | What Has to Go Right | Prob | $ Impact on Equity | Acceleration Lever | |---|---|---|---| | [Item 1] | High/Med/Low | $[X] | [lever] | | [Item 2] | ... | ... | ... | | [Item 3] | ... | ... | ... | | What Could Go Wrong | Prob | $ Impact on Equity | Mitigation | |---|---|---|---| | [Item 1] | High/Med/Low | $[X] | [mitigation] | | [Item 2] | ... | ... | ... | | [Item 3] | ... | ... | ... | ### Step 7: Recommendation (Section 6) **Verdict**: GO / NO-GO / CONDITIONAL 3 supporting reasons for the recommendation. If CONDITIONAL, specify 2 key conditions that must be met. Proposed next steps and timeline. Required approvals. ## Output Format 1. **1-Page Executive Summary**: header box, thesis, return context, 2x3 sensitivity grid, "what has to go right / wrong," recommendation line 2. **Full IC Memo** (6 sections): Executive Summary, Deal Overview, Market Analysis, Financial Analysis, Risk Assessment, Recommendation 3. **Comparable Transactions Table**: 3-5 comps with relevance narrative 4. **Appendix** (if value-add): renovation budget breakdown, unit timeline, before/after rent assumptions Target length: executive summary ~1 page, full memo 6-10 pages. ## Red Flags & Failure Modes 1. **Generic risk lists**: risks must be deal-specific with dollar impact estimates, not "market conditions could change." Probability labels (High/Med/Low) without dollar amounts are insufficient. 2. **Missing sensitivity grid**: never present an IRR without showing how it moves with key variable changes. The 2x3 grid is mandatory. 3. **No return context**: a 16% levered IRR means nothing without context. Show spread over cost of equity, position within fund targets, and risk premium over risk-free rate. 4. **Wrong property-type metrics**: an apartment IC memo without per-unit economics or an industrial memo without clear height specs signals lack of property-type expertise. 5. **Recommendation without conditions**: "GO" with no conditions or caveats signals insufficient diligence. Most real deals are "CONDITIONAL" with specific items to resolve. 6. **Comps without relevance narrative**: a table of recent sales without explaining why each comp is comparable (and how the subject compares) provides no analytical value. ## Refusal Behavior The IC memo is a decision-grade artifact (it goes to an investment committee). It fails closed (refuses to emit a final-marked memo or a recommendation line) when: - **Any unresolved `$X` / placeholder / TBD token remains in a load-bearing cell.** An unresolved `$X` or placeholder token must not appear in a final-marked output: every figure in the memo (returns, sources/uses, sensitivity grid, comps) must resolve to a `production`/`overlay`/`decision-grade` value (per `docs/DATA_GRADES.md` §3) or the memo refuses to finalize. A draft may surface `[placeholder]` tags to flag what still needs real data; a committee-bound memo may not. - **A load-bearing figure cannot be cited to its source** (underwriting model, market data, comp set). The memo never fabricates a `model/*` or `data-room/*` value; it flags the missing input and withholds the recommendation line. - **Required inputs are missing** (deal economics, returns, market context). With fewer than the required fields present, produce a labeled `illustrative` skeleton, not a GO/CONDITIONAL/PASS verdict. - **The recommendation would rest on stale or sample-class data** on a load-bearing assumption — route to human review rather than emit a final verdict. See the data-grade ladder in `docs/DATA_GRADES.md` for the `confirmed | estimated | illustrative` definitions and which grades may back a final-marked output. ## Confidence and Provenance - Default output fidelity is **estimated**: the memo synthesizes upstream underwriting and market inputs; it does not independently confirm them. - Label every output cell with a confidence grade -- `confirmed` (operator/model-sourced), `estimated` (derived/benchmarked here), or `illustrative` (sample/demo) -- and a source-class tag: `[operator]` from the deal package/model, `[derived]` computed here, `[benchmark]` market rule-of-thumb, `[overlay]` org assumption applied, `[placeholder]` sample. - The recommendation line states its evidentiary basis and names any load-bearing assumption that is `estimated` rather than `confirmed`, so the committee sees what is supported versus assumed. ## Known Limitations - **Synthesis, not independent verification.** The memo assembles and frames upstream underwriting and market inputs; it does not re-derive or independently confirm them. A figure with no cited model/data-room source is left flagged for the deal team, never invented. - **Format and framing, judgment stays human.** Property-type variants and the risk-adjusted return framing are templates; the recommendation is a drafting aid for the deal team, and the `investment_committee_approval_required` gate means the committee, not the generator, decides. - **Inherits upstream staleness.** Cap-rate and comp benchmarks carry the as-of date of the underwriting that fed them; the memo surfaces that date rather than re-freshening the data itself. ## Chain Notes - **Upstream**: deal-underwriting-assistant (primary input source), supply-demand-forecast (market data), market-memo-generator (market context) - **Downstream**: lp-pitch-deck-builder (IC memo feeds pitch deck sample deal slide), disposition-strategy-engine (IC memo establishes baseline for hold/sell analysis) - **Parallel**: reit-profile-builder (shared market data and property analytics)
Related Skills
variance-narrative-generator
Generates ownership-ready variance narratives from budget-vs-actual reports. Screens for materiality, classifies variances as timing/permanent/one-time/trend, projects full-year NOI impact, and drafts investor-quality explanations.
market-memo-generator
Generates structured CRE market research memos covering MSA, submarket, and sector-level conditions. Synthesizes supply/demand fundamentals, rent trends, cap rate movements, capital markets conditions, and forward-looking signals into investment-grade market commentary. Triggers on 'write a market memo', 'market update', 'submarket analysis', or when a user provides market data and asks for a written synthesis. Designed to feed the AMOS deal pipeline and supplement reit-profile-builder output.
lp-data-request-generator
Generate structured data requests for Limited Partners to send to General Partners across all stages of the LP-GP relationship. Produces request templates for initial due diligence, quarterly monitoring, annual review, and re-up evaluation. Branches by asset class (CRE, PE, credit), fund type (open-end, closed-end, co-invest, separate account), and reporting period. Triggers on 'LP data request', 'GP reporting', 'LP due diligence', 'fund reporting requirements', 'ILPA standards', 'LP questionnaire', 'DDQ', 'data room checklist', 'investor reporting', or when an LP needs to formulate what information to demand from a GP.
estoppel-certificate-generator
Automates estoppel certificate population for CRE transactions. Performs three-way cross-reference (lease vs. rent roll vs. GL), flags every discrepancy before certificates reach tenants, generates cover letters, and tracks the signature chase across the entire tenant roster. A single incorrect estoppel can derail a closing.
distribution-notice-generator
Generates individual LP distribution notices with per-investor share calculations, tax characterization, waterfall tier explanation, and batch processing for 50-200+ investors.
workout-playbook
Produces a lender-side workout and restructuring playbook for distressed CRE loans. Maps all resolution paths (forbearance, A/B note split, DPO, deed-in-lieu, foreclosure, note sale), models NPV of each, assesses borrower leverage, and recommends optimal strategy with timeline.
Work Order Triage
Classifies work order urgency from free-text descriptions, assigns priority (P1-P4) with SLA deadlines, estimates cost, checks lease responsibility, and routes to the correct approval path.
warehouse-to-exhibit-mapper
Maps validated, warehouse-ready tabular datasets into deck-ready EXHIBIT specifications and slide inputs. Selects table vs. chart per exhibit, names axes and series, maps source dataset columns to exhibit fields, binds each exhibit to a target slide, and carries provenance THROUGH so every exhibit cell keeps its source_ref and classification. Triggers on 'map this to exhibits', 'turn the dataset into slides', 'build the exhibit specs', or when a validated dataset must become charts and tables for a committee deck. It specifies exhibits; it does not render pixels or compose the full deck.
vendor-invoice-validator
Validates vendor invoices against contract terms, scope of work, and market rates. Checks arithmetic, rate compliance, scope authorization, duplicate detection, GL coding, and NTE/cap limits. Assigns APPROVED, APPROVED WITH FLAGS, or HOLD FOR REVIEW verdict.
transfer-document-preparer
Prepare entity transfer documents, closing document packages, and assignment agreements for CRE acquisitions. Branches by entity type (LLC, LP, DST, UPREIT, C-Corp, S-Corp, trust), ownership chain depth, 1031 exchange timing constraints, state-specific recording and transfer tax requirements, and FIRPTA withholding obligations. Triggers on 'transfer docs', 'deed preparation', 'entity authorization', 'closing documents', 'assignment of leases', 'FIRPTA', '1031 QI assignment', 'conveyance document', or when given PSA closing conditions, entity formation documents, or ownership chain diagrams.
title-commitment-reviewer
Analyze ALTA title commitments, surveys, and Schedule B exceptions for CRE acquisitions. Identifies title defects, chain breaks, lien conflicts, and cure requirements. Triggers on 'title commitment', 'Schedule B exceptions', 'title review', 'title exceptions', 'encumbrances', 'survey cross-reference', 'title chain', 'mechanic's lien', 'title cure', or when given a title commitment document, survey, or lien search results.
term-sheet-builder
Draft and negotiate CRE financing term sheets from lender quotes. Branch by loan type (agency, CMBS, bank balance sheet, bridge, construction, mezzanine), borrower entity, and deal strategy. Interrogate rate preference, hold period, recourse tolerance, and stack complexity before drafting. Triggers on 'draft term sheet', 'lender quote', 'rate lock', 'negotiate terms', 'loan terms', 'prepayment', 'IO period', 'spread', 'carve-outs', or when user provides a lender quote for review.