How to reconcile a rent roll with AI

A method for AI on a commercial rent roll: extract it into a fixed template, tie it to the T-12 and leases, and hand the analyst a short list of gaps.

King & Company

In short

AI is useful on a rent roll when it does three jobs in order: pull the seller's rent roll into your own fixed template with a source page on every row, run written tie-out checks against the T-12, the offering memorandum, and the lease abstracts, and produce a short exceptions list for the analyst. The checks should be arithmetic that runs the same way every time, and the analyst decides which gaps matter and which go back to the seller.

To reconcile a rent roll with AI, have the model extract the seller's rent roll into your own fixed template, run a set of written checks that compare it to the T-12, the offering memorandum, and the leases, and hand the analyst a short list of exceptions with the source page for each. The analyst then decides which gaps are ordinary timing differences and which are questions for the listing broker.

This article is the detailed version of the rent roll step in our guide to underwriting commercial real estate faster with AI. It is written for the analyst or associate who receives a rent roll on a new deal and spends the first morning getting it into shape.

Why does rent roll reconciliation take so long by hand?

Every property management system exports a rent roll differently. One puts each tenant on a single row, another spreads a tenant across several rows for base rent, recoveries, and parking, and a PDF export often has merged cells and page breaks in the middle of a tenant. Before anyone can check the numbers, someone has to get the document into a shape the team's model accepts.

The checking is the valuable part. An experienced analyst knows that the rent roll should roughly match the rental income on the T-12, that the square footage should agree with the offering memorandum, and that the largest tenants' rents should match their leases. On a busy week that checking competes with the retyping, and the retyping usually wins.

Step one: define your template before you touch the seller's file

The model needs a fixed target. Write down the columns your underwriting model expects, in order, with a one-line definition of each. A typical office or retail set looks like this:

ColumnDefinition to write down
Suite or unitAs shown on the rent roll, with no renumbering
TenantLegal name if stated, otherwise the name shown
Square feetRentable square feet, and say so if the rent roll shows usable
Lease start and expiryDates as stated, in one date format
Base rentAnnual amount, with the monthly figure converted if needed
Rent per square footCalculated by your formula, never copied from the seller
RecoveriesSeparate from base rent, with the recovery type if stated
EscalationsNext step date and amount, if the rent roll shows them
OptionsRenewal, termination, or expansion, if the rent roll shows them
Source pageThe page of the seller's document this row came from

The definitions are what make the output consistent. "Rent" means different things on different rent rolls, and a model that has been told your team means annual base rent excluding recoveries will separate them for you. The same applies to vacant suites, which should appear as rows with a blank tenant and not be dropped.

Multifamily rent rolls need different columns (unit type, market rent, in-place rent, concessions, move-in date, lease end), but the principle is the same.

Step two: extract into the template, with a source page on every row

Give the model the rent roll and the template, and tell it to fill one row per suite or unit, record the page each row came from, and leave a cell blank and say so when the document does not state a value. Anthropic's guidance on reducing hallucinations recommends both restricting the model to the documents provided and allowing it to say it does not know. A blank cell with a note takes a minute to resolve. A plausible invented escalation date is much harder to find later.

Before any comparison runs, check the extraction itself with two numbers the model cannot argue with: the row count against the count of suites on the source, and the column totals against any totals the rent roll prints. If either is off, the extraction is fixed before anything else happens.

When the seller sends the rent roll as an Excel file, read it as data and copy the values into your own clean workbook. Anthropic's documentation for Claude for Excel warns that files from external sources "can contain hidden instructions that manipulate the add-in," and a seller's workbook is an external file.

Step three: run the tie-out checks as written arithmetic

This is the reconciliation itself, and it is the part that should not depend on the model's judgment. Write each check as a formula in the workbook or as a short script, so it runs the same way on every deal and an analyst can read exactly what it compares.

  • Rent roll against T-12. Annualized base rent from the rent roll beside rental income on the T-12, with the dollar and percentage difference.
  • Square footage against the offering memorandum. Total rentable square feet from the rent roll beside the figure the OM states.
  • Occupancy. Occupied square feet divided by total, beside the occupancy the OM states.
  • Suite count. Rows in your template beside the number of suites the seller's document reports.
  • Rent per square foot outliers. Any suite more than a set percentage above or below the property's average, listed with the tenant name.
  • Expirations. Every lease expiring inside your hold period, with tenant, square feet, and share of total rent, whether or not the OM mentions it.
  • Leases against the rent roll. For the largest tenants, base rent, expiry, and options from the lease abstract beside the same fields on the rent roll.

The last check is where most of the value is, and it depends on having abstracts. If your team abstracts leases with AI, the method in how to abstract a commercial lease with AI produces abstracts with page citations that this check can use directly.

Step four: read the exceptions list, not the whole rent roll

The output the analyst actually reads is a short list. Each line names the check, shows the two numbers and the difference, and points to the source page on each side. A clean rent roll might produce three or four lines. A messy one might produce twenty, which is itself useful to know on day one.

A failed check is a question, not a finding. Sellers' documents disagree for ordinary reasons: a rent roll dated after the T-12 period, a tenant in free rent, a suite that changed hands mid-year. The model can suggest a likely explanation for each gap, and the analyst decides whether it holds, which gaps go back to the listing broker, and which change the underwriting.

WorkWho does it
Extracting the rent roll into your templateAI, with a source page per row
Row count and total checks on the extractionWritten checks
Tie-outs against the T-12, OM, and leasesWritten checks
Suggesting a likely reason for each gapAI, marked as a suggestion
Deciding which gaps matterAnalyst
Questions back to the sellerAnalyst or broker
Sign-off before the numbers enter the modelAnalyst

Where should this live: a chat window, Excel, or a packaged skill?

A team can start in a chat window on a business plan by uploading the rent roll and pasting the template and instructions. That works for a trial and becomes inconsistent across a team, because every analyst pastes a slightly different version.

Once the method holds up on a few deals, the template, definitions, and checks belong in one place that everyone uses. In Claude, that is a packaged skill, which we describe in Claude skills for commercial real estate. The checks themselves are better as formulas in a master workbook or a short script inside the skill, because written arithmetic gives the same answer every time.

How to test it before the team relies on it

Pick three deals your team has already reconciled by hand, ideally one clean, one messy, and one multifamily or mixed-use if you do both. Run the method on each and compare two things: whether it found the exceptions the analyst found, and whether it found any the analyst missed. Then look at the time, including the time spent reviewing the output. If the method misses something an analyst caught, write a new check for it, which is how the check list gets better.

Rent roll reconciliation is one of the workflows we build with brokerage and investment teams, against their own template and their own deals. If you want to walk through yours, you can get in touch.

Common questions

Can AI read a rent roll PDF and put it into Excel?

Yes, for most rent rolls exported from a property management system. Give the model a fixed list of columns, one row per suite or unit, and require the source page for every row. Have it leave a cell blank and say so when the document does not state a value, then check the row count and totals against the PDF.

What should a rent roll be reconciled against?

At minimum, the T-12 rental income line, the square footage and occupancy stated in the offering memorandum, and the lease abstract or lease for each of the largest tenants. Each comparison should show the difference, so the analyst sees the size of the gap and not only that one exists.

Can I use Claude or ChatGPT for rent roll reconciliation?

Either can do the extraction and draft the comparison on a business plan, as long as the checks themselves are written down as formulas or a script and not left to the model's judgment each time. The reconciliation is only as dependable as the template and the checks your team defines.

Is there a standard commercial rent roll template?

There is no single industry standard, which is part of why reconciliation takes so long. The template that matters is your own: the columns your underwriting model expects, with a written definition of each, such as whether rent is monthly or annual and whether it includes reimbursements.

How long does AI rent roll reconciliation take?

We do not quote a general figure, because it depends on the property type, the number of suites, and how clean the seller's files are. Test the method on three rent rolls your team has already reconciled by hand and compare both the time and the exceptions it found.

Tell us where the time is going

King & Company embeds with your team and builds the AI workflows, skills, and integrations around the work you already do. Describe the work your team would rather not be doing, and we will come back with how we would approach it.