You convert a lease PDF (and amendments) into a structured abstract. Manual lease abstraction takes 4-12 hours per document depending on complexity; AI-assisted reduces that to 20-40 minutes of human review on top of a generated draft. The standardization matters as much as the speed — every abstracted lease should fit the same schema so a portfolio can be queried.
lease-{tenant-slug}-{address-slug}/
├── README.md # what each file is and where it goes
├── abstract.json # full schema (Phase 2)
├── abstract.csv # flat row for portfolio rollup
├── abstract.md # human-readable summary
├── critical_dates.ics
├── critical_dates.csv
├── flags.md # ambiguities (Phase 3)
├── source_lease.pdf # original (link, not copy)
└── audit_trail.json # extraction confidence per field
The Markdown summary is a one-pager: parties, premises, term, rent, escalations, options, key flags. Designed for handoff to a broker / attorney / portfolio manager.
VALIDATION: All files render. CSV imports into Excel without column drift.
Never publish a final abstract without incorporating all amendments.
Never fabricate a field. Null is acceptable; invented values are a tort.
Never auto-import to Argus / VTS without reviewer sign-off. Wrong rent schedule = wrong valuation = lawsuit.
Always preserve source citations per field for auditability.
Always run the critical-dates calendar — missing a renewal notice can lose a tenant a premises.
1---2name: lease-abstraction3description: Extract a structured abstract from a commercial lease PDF — tenant/landlord identification, premises description + RSF/USF, lease term + commencement/expiration, renewal options (count, notice windows, fair-market rent reset), base rent schedule + escalations (fixed %, CPI-linked, step-up, percentage rent breakpoints), operating expense structure (NNN, modified gross, full service, base year, expense stops, gross-ups), CAM provisions + caps + audit rights, tenant improvement allowance, security deposit (cash/LOC/burn-down), use restrictions, co-tenancy + exclusivity, assignment/sublet rights, recapture, termination/default provisions, kick-outs, options to expand/contract, holdover, insurance/indemnification, estoppel + SNDA. Outputs a standardized abstract JSON + CSV + Markdown summary + critical-dates calendar (rent escalation alerts at 60/30 days, option exercise windows, expiration alerts). 80-90% reduction in processing time per industry benchmarks. TRIGGER on "lease abstract", "lease abstraction", "CRE 4license: MIT5---67# Commercial Lease Abstraction89You convert a lease PDF (and amendments) into a structured abstract. Manual lease abstraction takes 4-12 hours per document depending on complexity; AI-assisted reduces that to 20-40 minutes of human review on top of a generated draft. The standardization matters as much as the speed — every abstracted lease should fit the same schema so a portfolio can be queried.1011============================================================12=== PRE-FLIGHT ===13============================================================1415- [ ] **Lease document(s)**: original lease PDF + ALL amendments + side letters + work letters. Missing amendments = wrong financial picture.16- [ ] **Lease type**: office, retail, industrial, ground lease, residential (CA Civil Code §1947 differs), medical office, mixed-use. Drives which clauses to expect.17- [ ] **Output schema target**: VTS, Visual Lease, MRI, Yardi, ProLease, Excel template, or generic JSON. Each system has slightly different field names.18- [ ] **Reporting purpose**: lease admin (operational), tenant rep (negotiation prep), landlord acquisition DD, ASC 842/IFRS 16 accounting capture.1920Recovery:2122- Missing amendments: refuse to publish a final abstract; output draft + flag "amendments missing — DO NOT rely on for accounting."23- For complex retail leases (% rent + CAM gross-ups + exclusivity webs), surface complexity to a human reviewer; the abstract is a draft.2425============================================================26=== PHASE 1: DOCUMENT INTAKE + OCR ===27============================================================2829PDF preprocessing:3031- If image-only PDF, OCR via `pytesseract` or AWS Textract (better for table extraction).32- Split lease into named sections (definitions, basic terms, rent, additional rent, options, default, indemnity).33- Extract embedded tables (rent schedule, CAM exhibit) as structured data, not flowed text.3435Persist `lease.text.json` with section anchors so the abstract can cite source page+section per extracted field.3637VALIDATION: Page count > 0, no all-white pages, text extraction confidence per section ≥ 80%.3839============================================================40=== PHASE 2: STANDARDIZED FIELD EXTRACTION ===41============================================================4243Extract into this schema (camelCase JSON):4445```json46{47 "parties": {"tenant": "...", "landlord": "...", "guarantor": "...", "broker": "..."},48 "premises": {"address": "...", "suite": "...", "rsf": 12500, "usf": 11700, "load_factor": 0.068},49 "term": {50 "commencement_date": "2024-04-01",51 "expiration_date": "2034-03-31",52 "term_months": 120,53 "rent_commencement_date": "2024-06-01",54 "free_rent_months": 255 },56 "rent_schedule": [57 {"period": "Year 1", "start": "2024-04-01", "end": "2025-03-31", "monthly_rent_psf": 4.50, "monthly_rent_total": 56250.00, "annual_rent_total": 675000},58 ...59 ],60 "escalations": {"type": "fixed_pct", "pct": 0.03, "annual_review_date": "anniversary"},61 "options": [62 {"type": "renewal", "count": 2, "term_months": 60, "notice_window_months": 12, "rent_basis": "FMR", "rent_floor_pct": null}63 ],64 "additional_rent": {65 "expense_structure": "modified_gross",66 "base_year": 2024,67 "expense_stop_psf": null,68 "tenant_share_pct": 0.085,69 "cap": {"type": "cumulative_5pct_year_over_year", "applies_to": "controllable_only"},70 "gross_up_provision": true,71 "audit_rights": {"window_months": 12, "self_help": false}72 },73 "ti_allowance": {"amount_psf": 75.00, "total": 937500, "unused_treatment": "rent_credit"},74 "security_deposit": {"type": "letter_of_credit", "amount": 250000, "burn_down": [{"month": 36, "to": 125000}, {"month": 60, "to": 0}]},75 "use_restriction": "general office and ancillary uses; no medical, retail, or industrial",76 "co_tenancy": null,77 "exclusivity": null,78 "assignment_sublet": {"consent_standard": "not_unreasonably_withheld", "permitted_transfers": ["affiliates", "merger_consolidation"]},79 "termination_rights": {"tenant_kick_out_year": 7, "notice_months": 12, "termination_fee": "9 months base rent + unamortized TI/commissions"},80 "expansion_rights": {"type": "ROFO", "size_sf": null, "notice": "60 days"},81 "holdover": {"rate_pct_of_holdover": 1.50, "consent_required": false},82 "insurance": {"tenant_liability_minimum": 3000000, "additional_insureds": ["landlord", "property_manager"]},83 "default": {"monetary_cure_days": 5, "non_monetary_cure_days": 30, "late_fee_pct": 0.05, "interest_rate": "prime + 4%"},84 "estoppel_sndaa": {"estoppel_required": true, "snda_attached": true},85 "amendments_incorporated": ["Amendment 1 (2024-09-15)", "Amendment 2 (2025-03-01)"]86}87```8889Every field has a `source` sub-field with `{page, section, confidence}`.9091VALIDATION: Schema fields present (null OK if absent in lease — don't fabricate). Rent schedule sum reconciles to total committed rent over term.9293============================================================94=== PHASE 3: AMBIGUITY & FLAG DETECTION ===95============================================================9697Some lease clauses are inherently ambiguous; flag for human review:9899- **Gross-up provision boundaries**: which expenses can be grossed up to 95%/100% occupancy? Listed expressly or implicit?100- **CAM cap**: cumulative vs annual? Applies to all expenses or controllable only? Taxes/insurance excluded?101- **Tenant share**: pro rata by RSF or fixed percentage? Adjustable on changes to building size?102- **Renewal rent basis**: FMR with floor? Pre-negotiated rate? Greater of (X, Y)?103- **Assignment consent**: "consent not unreasonably withheld" vs absolute discretion vs deemed-consent if no response in N days.104- **Termination fee**: includes unamortized TI? Brokerage commissions? Free rent? At what discount rate?105106Flag each as `{field, ambiguity, suggested_interpretation, reviewer_action}`.107108VALIDATION: At least 1 flag per lease (if zero, the abstraction is too confident and worth a second pass).109110============================================================111=== PHASE 4: CRITICAL DATES CALENDAR ===112============================================================113114Emit a calendar file (`critical_dates.ics` + `critical_dates.csv`) with reminders:115116- Rent escalation date (60-day and 30-day pre-alerts)117- Renewal option exercise window opening + closing (1 year and 6 month pre-alerts)118- Lease expiration (24 / 12 / 6 / 3 month pre-alerts)119- Termination right exercise window (if applicable)120- Expansion/ROFO/ROFR triggers121- Security deposit burn-down dates122- CAM audit window (typically 12 months after year-end statement)123- Estoppel/SNDA delivery deadlines124125VALIDATION: Calendar imports into Google/Outlook/iCal without errors.126127============================================================128=== PHASE 5: ABSTRACT OUTPUTS ===129============================================================130131Final deliverable directory:132133```134lease-{tenant-slug}-{address-slug}/135├── README.md # what each file is and where it goes136├── abstract.json # full schema (Phase 2)137├── abstract.csv # flat row for portfolio rollup138├── abstract.md # human-readable summary139├── critical_dates.ics140├── critical_dates.csv141├── flags.md # ambiguities (Phase 3)142├── source_lease.pdf # original (link, not copy)143└── audit_trail.json # extraction confidence per field144```145146The Markdown summary is a one-pager: parties, premises, term, rent, escalations, options, key flags. Designed for handoff to a broker / attorney / portfolio manager.147148VALIDATION: All files render. CSV imports into Excel without column drift.149150============================================================151=== SELF-REVIEW ===152============================================================153154Score 1–5:155156- **Complete**: All schema fields populated or explicitly null?157- **Robust**: Amendments incorporated? Rent reconciliation passes?158- **Clean**: Markdown summary fits one page? Critical dates calendar correct?159- **CRE-credible**: Would a lease admin or tenant-rep broker accept the abstract as a working draft?160161Common gap: forgetting to incorporate amendments. The "original" lease's rent schedule is often superseded by an amendment.162163============================================================164=== LEARNINGS CAPTURE ===165============================================================166167Append to `~/.claude/skills/lease-abstraction/LEARNINGS.md`:168169## <YYYY-MM-DD> — <asset type, lease length, complexity>170171- **What worked / awkward / patch / verdict.**172173============================================================174=== STRICT RULES ===175============================================================176177- Never publish a final abstract without incorporating all amendments.178- Never fabricate a field. Null is acceptable; invented values are a tort.179- Never auto-import to Argus / VTS without reviewer sign-off. Wrong rent schedule = wrong valuation = lawsuit.180- Always preserve source citations per field for auditability.181- Always run the critical-dates calendar — missing a renewal notice can lose a tenant a premises.
Run npx skillmds@latest add thomasmoreai/lease-abstraction in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Extract a structured abstract from a commercial lease PDF — tenant/landlord identification, premises description + RSF/USF, lease term + commencement/expiration, renewal options (count, notice windows, fair-market rent reset), base rent schedule + escalations (fixed %, CPI-linked, step-up, percentage rent breakpoints), operating expense structure (NNN, modified gross, full service, base year, expense stops, gross-ups), CAM provisions + caps + audit rights, tenant improvement allowance, security deposit (cash/LOC/burn-down), use restrictions, co-tenancy + exclusivity, assignment/sublet rights, recapture, termination/default provisions, kick-outs, options to expand/contract, holdover, insurance/indemnification, estoppel + SNDA. Outputs a standardized abstract JSON + CSV + Markdown summary + critical-dates calendar (rent escalation alerts at 60/30 days, option exercise windows, expiration alerts). 80-90% reduction in processing time per industry benchmarks. TRIGGER on "lease abstract", "lease abstraction", "CRE It is listed under Data & Analytics on SkillMD.
SkillMD's automated safety review verdict for this skill is PASS. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
ThomasMoreAI (@thomasmoreai) published this skill. Their other Agent Skills are listed on their SkillMD profile.