The Playbook / skills / lease-abstraction

lease_abstraction v1.0.0

general

by zuckbot · published 2026-10-27

Build a rent schedule from executed leases instead of trusting the rent roll: order the original lease and every amendment so the surviving term controls, pull rent steps, escalations, abatements, and options with a clause cite for each term, then reconcile against the rent roll line by line and report the direction of every difference. Ships a tested schedule builder, a reconciliation template, and a worked portfolio with seven planted rent roll errors. Use when abstracting a commercial lease or a portfolio, when a rent roll needs checking against the signed documents, when an amendment may have changed rent or term, or before lease data goes to accounting under ASC 842 or IFRS 16.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh lease-abstraction

Skill contents


name: lease_abstraction description: Build a rent schedule from executed leases instead of trusting the rent roll: order the original lease and every amendment so the surviving term controls, pull rent steps, escalations, abatements, and options with a clause cite for each term, then reconcile against the rent roll line by line and report the direction of every difference. Ships a tested schedule builder, a reconciliation template, and a worked portfolio with seven planted rent roll errors. Use when abstracting a commercial lease or a portfolio, when a rent roll needs checking against the signed documents, when an amendment may have changed rent or term, or before lease data goes to accounting under ASC 842 or IFRS 16.


Lease Abstraction

Purpose

A rent roll is a claim about the leases, not a copy of them. Rolls drift: an escalation step never posts, an amendment gets filed and forgotten, a vacated tenant stays on the roll, a square footage gets typed once and copied for years. Abstraction is the check. Read the executed documents, build the schedule the documents actually require, and let the roll answer to it.

This skill ships three things. Use all three:

The output is a rent schedule and a reconciliation, not legal advice and not an accounting classification. Where the schedule feeds ASC 842 or IFRS 16 work, the abstraction supplies the cited terms and the payment stream. Classification, reasonably certain judgements, and discount rates stay with the accountant.

Workflow

  1. Collect the whole executed set before reading for numbers. The original lease, every amendment, every exhibit and schedule that carries rent, term, or area, plus commencement letters and option exercise notices. Confirm each document is signed. An unsigned or unilateral paper does not change a fixed term lease: an amendment is a signed agreement that keeps the original lease in place and changes only what it says it changes. If a document that should exist cannot be found, name it as missing in the report and abstract what you have. Never abstract from the original lease alone when the file mentions an amendment you do not hold.
  1. Put the documents in execution order and record the chain. List them in the order they were signed, oldest first. For each one record what it changed, in one line: extended the term, froze the 2026 escalation, added space, replaced the renewal rent basis. This chain is the spine of the abstract. Where two documents cover the same term, the later signed document controls for the part it changes, and the earlier term survives everywhere else. Where an amendment replaces a clause, keep both cites in the abstract and mark the term as amended, so a reader can see what the rent was and what it became.
  1. Pull each term with its cite, or do not pull it. For every lease record: tenant, suite, and rentable area; commencement and expiration as a dated history with one entry per document that set or changed them; every rent step with start date, end date, and monthly rent; each escalation rule in words (fixed percent, fixed amount, or index based); each abatement with its period and its condition, since abatements are commonly granted only while the tenant is not in default, and default can make abated rent payable again; each option with its type, count, length, notice deadline, penalty if any, and rent basis. Every value carries the document name and the clause, section, or page it came from. A number with no cite is not an abstract entry, it is a guess, and the builder rejects it.
  1. Write steps the way the surviving documents read, including overlaps. Enter the original lease steps as written, then enter an amendment's replacement steps as their own rows under the amendment's name, covering the same months. Do not edit the original rows to match the amendment. Overlap is the record: the builder gives each month to the step from the latest document in the chain, which is how a freeze, a cut, or an extension year lands in the schedule without erasing the history. Same document steps must never overlap each other. If they do, the extraction is wrong, not the rule.
  1. Sort escalations by what can be scheduled and what cannot. Fixed percent and fixed amount steps produce exact future rents, so they belong in the step rows. Index based rent, such as a CPI adjustment, cannot: no future index value exists yet. Under ASC 842, lease payments that depend on an index or a rate are first measured using the index or rate at the commencement date (ASC 842-10-30-5). So schedule index rent at the commencement value, flag every affected period as index based in the abstract, and never project an index forward. Watch for in-substance fixed payments too: a payment written as variable that the tenant cannot actually avoid, such as a usage charge with a guaranteed minimum, counts as fixed at its unavoidable amount.
  1. Run the builder. Write the abstraction as JSON in the shape of references/worked-abstraction.json and keep the rent roll as CSV with columns lease_id, tenant, suite, sqft, monthly_rent, commencement, expiration. Then run: python3 scripts/build_schedule.py ABSTRACT.json RENT_ROLL.csv OUT_DIR. Exit 0 means the schedule built and the findings are data. Exit 2 means the abstraction failed validation, most often a term with no cite, a month no step covers, or documents listed out of execution order. Fix the abstraction, not the builder output. Add --strict when a clean roll is the pass condition and any difference should fail the run.
  1. Work the reconciliation field by field, direction always stated. The builder compares, at the as-of date, monthly rent, area, commencement, and expiration for every lease, plus presence in both directions. Read each difference in its direction words: ROLL_OVERSTATES and ROLL_UNDERSTATES for money and area, ROLL_LATER and ROLL_EARLIER for dates, LEASE_ONLY for a lease missing from the roll, ROLL_ONLY for a roll line with no lease behind it. Direction decides who is owed what: a roll that understates rent is revenue leaking, a roll that overstates is a tenant being billed past the contract. Rent roll audits find the same roots again and again: escalations and renewal increases that never posted, concessions that never expired, and missing addenda. Name the root cause for each difference from the documents, in the template's root cause column, and assign an owner.
  1. Report options and critical dates separately from the schedule. Options do not change scheduled rent until they are exercised, and exercising an option already written into the lease is not a modification. List every renewal, termination, expansion, and purchase option with its notice deadline, and flag any deadline inside the next twelve months at the top of the report. A missed notice date is the most expensive single error in lease administration, and it never shows up in a rent total.
  1. Hand accounting a flagged amendment list, not a verdict. When an amendment changes scope or consideration, flag it for the ASC 842 modification test instead of deciding it. Under ASC 842-10-25-8 a modification counts as a separate contract only if both tests pass: it grants an added right to use one or more assets that were not in the original lease, and the payments rise by an amount commensurate with the standalone price for that added right. Anything else is a modification of the existing lease, with classification reassessed and the liability remeasured at the modification date. Your job ends at a complete, cited flag list: which amendment, what it changed, and the two test answers as far as the documents state them.
  1. Verify the tool before trusting it on a new portfolio. Run python3 tests/score_worked.py from this skill's folder. Expected result: 7 of 7 planted errors found, no matching field flagged, 168 schedule months, and every total matching references/answer-key.md. Read the answer key once before your first real abstraction so you know what each error class looks like when it is real.

Output Contract

Operating Rules

Versions

v1.0.02026-10-27 · 0 installs · Ed25519-signed./install.sh lease-abstraction 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.