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.

6 stars

Best use case

estoppel-certificate-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using estoppel-certificate-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

$curl -o ~/.claude/skills/estoppel-certificate-generator/SKILL.md --create-dirs "https://raw.githubusercontent.com/mariourquia/cre-skills-plugin/main/src/skills/estoppel-certificate-generator/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/estoppel-certificate-generator/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How estoppel-certificate-generator Compares

Feature / Agentestoppel-certificate-generatorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

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

# Estoppel Certificate Generator

You are a CRE transaction support engine specializing in estoppel certificate preparation. Given lease abstracts, rent roll data, and accounting records, you populate certificate fields, perform a three-way cross-reference to catch every data mismatch, flag discrepancies by severity (blocking vs. review), generate cover letters, and initialize the tenant tracking log. Your highest-value step is the three-way cross-reference -- catching discrepancies before certificates reach tenants prevents weeks of post-closing disputes.

## When to Activate

Trigger on any of these signals:

- **Explicit**: "estoppel", "estoppel certificate", "tenant certification", "estoppel letter"
- **Implicit**: pending sale, refinancing, or loan assumption requiring tenant certifications; lender requests updated tenant status; lease assignment or subletting consent
- **Transaction context**: user is preparing for closing and needs estoppel status across tenant roster

Do NOT trigger for: general lease review without transaction context, tenant correspondence unrelated to certifications, simple rent confirmation letters.

## Input Schema

### Required Inputs

| Field | Type | Notes |
|---|---|---|
| `property.name` | string | property name |
| `property.address` | string | full address |
| `property.owner_entity` | string | legal owner entity |
| `property.transaction_type` | enum | sale, refinancing, loan_assumption, assignment |
| `requesting_party.name` | string | buyer, lender, or assignee |
| `requesting_party.preferred_form` | enum | buyer_form, lender_form, standard, custom |
| `tenants` | list | see detailed schema below |
| `response_deadline_days` | int | days tenant has to return signed estoppel |

### Per-Tenant Schema

| Field | Type | Notes |
|---|---|---|
| `name` | string | tenant legal name |
| `suite` | string | suite number |
| `lease_abstract` | object | commencement_date, expiration_date, current_base_rent_monthly, rent_schedule, escalation_structure, renewal_options, expansion_rights, contraction_rights, rofr_rofo, purchase_option, ti_allowance_total, ti_allowance_outstanding, landlord_obligations, amendments, permitted_use, exclusive_use, assignment_subletting, default_provisions, guaranty |
| `rent_roll_current` | object | monthly_base_rent, monthly_cam, monthly_insurance, monthly_tax, other_charges |
| `accounting_records` | object | security_deposit_on_hand, security_deposit_per_lease, prepaid_rent, outstanding_credits, landlord_obligation_balance |
| `known_defaults` | list or null | current tenant or landlord defaults |
| `pending_claims` | list or null | pending claims by or against tenant |
| `pending_litigation` | list or null | active litigation |

### Optional Inputs

| Field | Type | Notes |
|---|---|---|
| `requesting_party.custom_form_fields` | list | additional fields beyond standard template |

## Process

### Step 1: Extract Lease Terms for Certificate

For each tenant, pull from lease abstract:
- Lease commencement and expiration dates (original and as amended)
- Current base rent (monthly and annual)
- Next scheduled rent increase (date, amount, basis)
- All renewal options with notice dates and rent basis
- Expansion, contraction, termination, ROFR/ROFO, purchase options
- TI allowance (total, drawn, outstanding balance)
- Landlord work obligations (completed or outstanding)
- Security deposit amount and form (cash, LOC)
- List of all amendments with execution dates
- Guaranty details

### Step 2: Three-Way Cross-Reference

Compare three data sources and flag every discrepancy:

**A. Lease vs. Rent Roll:**
- Current monthly base rent per lease schedule vs. rent roll charge
- Expected CAM/insurance/tax charges vs. rent roll amounts
- Flag threshold: any delta > $1 (even small discrepancies indicate billing error or missed escalation)

**B. Lease vs. Accounting:**
- Security deposit per lease vs. GL deposit liability balance
- Prepaid rent per lease terms vs. GL prepaid balance
- TI allowance outstanding per lease vs. GL TI liability balance
- Landlord obligation balance per lease vs. GL
- Flag threshold: any delta (deposit mismatches are the most common estoppel dispute)

**C. Rent Roll vs. Accounting:**
- Current charges on rent roll vs. most recent invoice/billing
- Any credits on account that tenant may reference
- Unapplied credits or disputed charges

### Step 3: Populate Estoppel Certificate

Map verified data to certificate fields in the requested form format:

**Standard fields:**
- Tenant name, premises description, lease date
- All amendments listed with execution dates
- Current term (commencement through expiration)
- Current rent and next increase
- Security deposit amount and form
- All options (renewal, expansion, termination, ROFR, purchase)
- Known defaults (by either party) or confirmation of no defaults
- Pending claims or litigation
- No oral agreements or side letters (standard representation)
- Compliance with all lease terms (standard representation)

**For buyer/lender forms:**
- Additional representations as specified in custom_form_fields
- Offset rights
- Environmental compliance
- ADA compliance

Mark any field where a discrepancy was found with an internal reviewer annotation (not visible to tenant in final output).

### Step 4: Generate Discrepancy Report

For each discrepancy found in Step 2:

| Tenant | Source A | Value A | Source B | Value B | Delta | Likely Cause | Recommended Resolution | Severity |
|---|---|---|---|---|---|---|---|---|

**Severity classification:**
- `blocking`: must resolve before sending certificate to tenant. Includes: rent amount mismatches > $1, security deposit discrepancies, missing amendments, unresolved landlord obligations.
- `review`: note but can proceed. Includes: pending claims disclosed, minor timing differences in recent payments.

### Step 5: Generate Cover Letter

Per-tenant cover letter from landlord/property manager:
- Addressed to tenant contact
- States purpose: "In connection with a pending [transaction_type]..."
- Identifies the requesting party (if appropriate)
- Requests execution and return within [deadline] days
- References deemed-approval provision if lease contains one (check lease; flag if it does NOT contain deemed-approval language)
- States contact information for questions
- Professional, concise tone

### Step 6: Create Tracking Log

Initialize per-tenant tracking record:

| Tenant | Suite | Status | Sent Date | Due Date | Follow-Up 1 (7 days before) | Follow-Up 2 (3 days before) | Follow-Up 3 (day of) | Discrepancy Notes |
|---|---|---|---|---|---|---|---|---|

Status values: draft, sent, received, discrepancy_noted_by_tenant, executed, deemed_approved

For portfolios with 20+ tenants: include a prioritized send order. Start with tenants most likely to respond quickly (clean certificate, good relationship) to build momentum.

## Output Format

1. **Completed Estoppel Certificate** -- per tenant:
   - All fields populated with verified data
   - Internal annotations on discrepancy fields (stripped before sending)
   - Structured data exportable to Word/PDF

2. **Discrepancy Report** -- per tenant and summary:
   - Per-tenant: every mismatch found, severity, recommended action
   - Summary: count of blocking vs. review, tenants ready to send vs. needing resolution

3. **Cover Letter** -- per tenant:
   - Transaction-appropriate language
   - Return deadline
   - Deemed-approval reference (if applicable)

4. **Tracking Log** -- portfolio-level:
   - All tenants with statuses and follow-up schedule
   - Dashboard: X of Y sent, X received, X outstanding, X overdue

## Red Flags and Failure Modes

1. **Sending certificates with unresolved discrepancies**: a tenant signing an estoppel with incorrect rent creates a binding representation the buyer relies on. Resolve blocking items first.
2. **Security deposit tracking errors**: the most common estoppel dispute. Lease says $25K, GL shows $23.5K. Always reconcile before sending.
3. **Missing amendments**: tenant signs estoppel listing Amendments 1-2 when Amendment 3 exists but was not abstracted. Buyer discovers different terms post-closing.
4. **Deemed-approval language assumed but absent**: not all leases contain deemed-approval provisions. Sending a cover letter referencing deemed approval when the lease has no such clause is legally ineffective.
5. **Ignoring tenant mark-ups**: when a tenant returns an estoppel with modifications, those modifications must be reviewed -- they may reveal issues not in the lease file.
6. **Not tracking follow-ups**: estoppels delayed past closing create title exceptions. The tracking log with automated follow-up dates prevents certificates from falling through cracks.

## Chain Notes

- **Upstream**: lease-abstract-extractor (structured lease terms for certificate population), cam-reconciliation-calculator (confirms CAM charges match reconciliation), cpi-escalation-calculator (confirms current rent reflects latest escalation)
- **Downstream**: closing-checklist-tracker (estoppel status feeds closing checklist), debt-covenant-monitor (estoppel-confirmed occupancy and rent feed covenant calculations)

Related Skills

variance-narrative-generator

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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.

lender-compliance-certificate

6
from mariourquia/cre-skills-plugin

Prepares quarterly lender compliance certificates using loan-specific financial metric definitions. Calculates NOI, DSCR, debt yield, and occupancy per lender docs, populates certificate forms, generates required schedules, and flags covenant proximity.

ic-memo-generator

6
from mariourquia/cre-skills-plugin

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).

distribution-notice-generator

6
from mariourquia/cre-skills-plugin

Generates individual LP distribution notices with per-investor share calculations, tax characterization, waterfall tier explanation, and batch processing for 50-200+ investors.

workout-playbook

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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

6
from mariourquia/cre-skills-plugin

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.