The safe way to use AI on a T-12 and rent roll is to let it read the documents and write only your model's input cells: unit mix, rents, vacancy and each expense line. Your normalisation rules get applied on the way in, and then you check the inputs yourself. Your Excel model keeps its own formulas, tabs and assumptions, so the NOI, DSCR and refi numbers come from the math you already trust. The AI reads. Your model underwrites.
This playbook walks through that on a made-up 24-unit property, from the raw PDFs to the question "what moved on the refi". It covers the discrepancies worth a broker call, and it compares the tools built for this job as of September 2026.
Why is every broker's T-12 a different shape?#
Because nobody produces a T-12 for you. A self-managing seller exports one from QuickBooks. A management company prints one from Yardi or AppFolio. A broker retypes both into their own layout for the offering memorandum (OM). Expense categories don't line up. "Repairs" may include a roof patch. Management may be missing because the owner did it. Twelve months may really be eleven.
Your model is the constant. It has the amortisation grid, the waterfall, the sensitivity table and the conventions your lender or partners have already reviewed. That is why "just let AI build the model" answers the wrong question. A newly generated model is a second model to audit.
A chat window is good at reading a document and bad at producing a model you can audit. So split the job.
What is rule zero for AI in an underwriting model?#
Inputs only. Before any document is read, write down what the agent may touch:
- A named list of input cells. For example
Inputs!C6:C30for income and expenses, andRentRoll!B8:H31for the units. Nothing else is a destination. - Constants only. If a cell that looks like an input holds
=Assumptions!C4, it is a link, not an input. Overwriting it breaks the chain without any visible error. - A copy, not the master. The agent writes a new file named after the deal. The master template is never opened for writing.
- Formula text identical before and after. Compare the text, not the results. If any formula string changed, discard the copy.
The companion guide, how to get AI to fill your existing Excel model without breaking a formula, covers the mechanics: the formula comparison, links that look like inputs, manual calculation mode and the _xlfn. trap.
Worked example: a fictional 24-unit property#
Everything below is invented for illustration. The folder holds three files as they arrived: the broker's OM (a PDF), a rent roll (a scan), and a T-12 exported from the seller's bookkeeping.
Unit mix from the rent roll#
| Type | Units | In-place rent | Monthly |
|---|---|---|---|
| 1 bed / 1 bath | 8 | $1,150 | $9,200 |
| 2 bed / 1 bath | 12 | $1,400 | $16,800 |
| 3 bed / 2 bath | 4 | $1,650 | $6,600 |
| Total | 24 | $32,600 |
Gross potential rent at in-place rents is $391,200 a year. The rent roll shows two units without a tenant on the snapshot date, so physical occupancy is 22 of 24, or 91.7%.
Vacancy from the T-12#
The T-12 shows $359,904 of rental income collected. Against $391,200 of potential rent, that is an economic loss of exactly 8.0%. That covers vacancy, concessions and bad debt together. Economic vacancy is what goes in the model, not the OM's occupancy figure.
Other income (laundry and fees) is $10,800, so effective gross income is $370,704.
Opex, as reported#
| Line | T-12 as reported |
|---|---|
| Property taxes | $38,400 |
| Insurance | $21,600 |
| Utilities (water, sewer, trash, common electric) | $31,200 |
| Repairs & maintenance | $34,800 |
| Management | $0 |
| General & admin | $6,100 |
| Total | $132,100 |
On the seller's numbers, NOI is $238,604. Nobody should underwrite that number as it stands.
How do you normalise a T-12 on the way in?#
You give the agent your rules once, in plain words, and it applies them line by line. It writes the normalised figure into the input cell and a note of what it changed. For this deal the rules are:
- Management at 3% of EGI. The seller self-manages, so $0 becomes $11,121.12.
- Owner's repairs and capital items come out of repairs & maintenance. The ledger behind the T-12 shows an $11,500 boiler replacement (capital, not operating) and $6,300 the seller spent renovating a unit to show buyers. R&M drops from $34,800 to $17,000, about $708 a unit.
- One-time items come out. G&A includes $2,900 of appraisal and loan fees from the seller's own refinance. G&A drops from $6,100 to $3,200.
- Taxes and insurance are flagged, not changed. The model's assumptions tab handles the tax reassessment and the insurance quote. The agent writes the trailing figures and notes the gap.
| Line | Reported | Normalised | Rule |
|---|---|---|---|
| Taxes | $38,400 | $38,400 | flagged for reassessment |
| Insurance | $21,600 | $21,600 | |
| Utilities | $31,200 | $31,200 | |
| Repairs & maintenance | $34,800 | $17,000 | boiler and owner's renovation out |
| Management | $0 | $11,121.12 | 3% of EGI |
| General & admin | $6,100 | $3,200 | refinance fees out |
| Total opex | $132,100 | $122,521.12 | |
| NOI | $238,604 | $248,182.88 |
Notice that normalising moved NOI up, because the one-time items outweighed the added management fee. That happens. A rule set is not a thumb on the scale in either direction. It's the same treatment on every deal, which is the point of writing it down.
Reserves are not on this list. In this model they sit in the assumptions tab at a per-unit rate, so the agent never touches them. That's rule zero doing its job.
Then the human step: open the filled copy, recalculate, and check the input cells against the source documents. Start with the lines a rule changed.
What moved on the refi at 75% LTV?#
This should be a question you ask, not a model you rebuild. Save two versions of the filled copy: one with the seller's figures and one normalised. Recalculate both in Excel, then ask the agent to compare the outputs and name the inputs that caused each difference.
In this example, with a 6.5% cap rate and a 6.25% loan on 30-year amortisation (the annual debt constant is about 7.39%), the comparison goes like this:
| Seller's T-12 | Normalised | |
|---|---|---|
| NOI | $238,604 | $248,182.88 |
| Value at 6.5% cap | $3,670,831 | $3,818,198 |
| Loan at 75% LTV | $2,753,123 | $2,863,649 |
| DSCR at that loan | 1.17x | 1.17x |
| Loan at 1.25x DSCR | $2,583,480 | $2,687,196 |
The useful answer is not "the loan went up $110,526". It is this: at 75% LTV the deal fails a 1.25x DSCR test either way, so debt service coverage sizes the loan, not LTV. The normalisation adds about $103,700 of proceeds at 1.25x. That comes from $20,700 of capital and one-time items leaving opex (the boiler, the renovation, the refinance fees), less the $11,121 management fee going in. Also, DSCR is the same 1.17x in both columns. When value is NOI over a cap rate, LTV sizing scales the loan with NOI, so the ratio can't move. An agent that reads the model's outputs can say that plainly. A model you rebuild in chat can't, because it isn't your model.
Which discrepancies between the OM, T-12 and rent roll are worth a broker call?#
Ask the agent to reconcile the three documents and list every place they disagree, with the page or line for each. In small multifamily these come up again and again:
- Occupancy. The OM says 96%. The rent roll shows 22 of 24 (91.7%). Ask when the OM figure was taken.
- Rent roll versus collections. The rent roll's annualised rent is $391,200, and the T-12 collected $359,904. An 8% gap is ordinary. A gap that has been widening over the last three months is not.
- Pro forma dressed as actuals. OM income that uses "market" rents, or other income the T-12 never shows (utility billback, pet rent, parking).
- Leases. Leases past their end date (month-to-month), units with no tenant name but a rent, and concessions that appear on the rent roll but not the T-12.
- Missing months. A T-12 with eleven columns, or a month showing no utility bill.
- Taxes. The trailing tax figure against the county's current assessment, and what a sale at your price would do to it.
- Expense categories that don't exist. No management line, no payroll, and an R&M line that's suspiciously low for the building's age.
Each item is a question with a source reference, not a verdict. The call is still yours to make.
Beyond the model: a deal tracker the team opens#
Underwriting one deal is a spreadsheet. Running a pipeline is a list of deals, stages, brokers and documents that three people need to see. In Universe that can be a working app. You describe it (stages from Screening through Underwriting and LOI to Passed, the broker on each deal, diligence documents attached to the deal they belong to), and the agent builds it. It publishes to a <label>.unv.run address that is team-only by default. Apps can have a database, so the tracker keeps its rows.
If you don't want an app, a space's shared board does a lighter version. Each card is a deal assigned to a person or an agent. The agent can add cards and deliver a file to one, but only a person moves a card to Done.
A standing morning job: new listings against your buy box#
The same rules that normalise a T-12 can screen one. A scheduled job, "every weekday at eight", can:
- check the listing sites you use against a written buy box (units, submarket, price per door, year built), in a Chrome profile that's already signed in as you
- put the matches in a sheet with the link, price and a one-line reason
- list the brokers who still owe you a T-12 or rent roll, and draft the follow-up email
Sending waits for you, so the chasers are drafts until you press send. Schedules run on a Mac, so the Mac has to be on. A spare Mac under the desk is the dependable setup, and running agents overnight on a spare Mac covers how. For the signed-in browser, see letting an agent work on sites that need your login.
How do the tools compare?#
Checked against each product's own site in September 2026. Prices change, so confirm before you buy.
| Tool | What it is | Into your own model? | Pricing (as published) | Best fit |
|---|---|---|---|---|
| RealQuant | Excel add-in for CRE underwriting | Yes. It says it "maps extracted data to your proprietary Excel template. Your formulas, structure, and formatting stay untouched" | $199–$799 a seat a month, with monthly credits | Teams doing many deals a month inside Excel |
| Archer | Multifamily underwriting platform | It says rent roll and T-12 parsing, and "your own model loaded in about a minute", with Excel integration | Custom quote, not published | Multifamily shops that want a dedicated platform and a deal database |
| V7 Go | Document workflow platform covering real estate deal analysis, underwriting and lease abstraction | Built as custom workflows | Sales-led, custom | Firms automating many document types at volume |
| Kolena | Document automation, including rent roll analysis and unit-mix summaries | Custom output templates | Not published; demo and free trial | Diligence and lease audit workflows |
| RentRolltoExcel | Rent roll PDF to Excel, Sheets, CSV or JSON | Gives you clean rows to paste into your model | Free for 50 pages; $29 a month Standard | Just the rent roll, cheaply |
| ChatGPT or Claude chat | General chat with file upload | You carry the answer into your model | Your existing plan | Reading and explaining one document |
| Universe | Mac app running agents on your own Claude or ChatGPT plan | The agent writes a copy of your workbook; you recalculate and check it in Excel | Free to start; Pro is $19 a month (pricing) | Small operators who want the documents, rules, tracker and morning job in one place |
When a dedicated CRE tool is the better choice: you underwrite dozens of deals a month, your firm is standardised on one template, and you want extraction tuned to property documents with support behind it. RealQuant or Archer is built for exactly that. If all you need is a rent roll in rows, RentRolltoExcel is cheaper and simpler than any agent.
What mistakes does AI make in small multifamily underwriting?#
Check for these before you trust any fill, whatever tool produced it:
- Reading a subtotal as a line item. "Total operating expenses" gets counted again as an expense.
- Losing the sign.
(2,400)in parentheses is negative. A scan can drop the brackets. - Scheduled rent in place of collected rent. The rent roll's rents are not income.
- Annualising the wrong way. A partial year multiplied by 12 over 11, or a single month times 12.
- Using OM pro forma columns as actuals. Many OMs print both side by side.
- Misreading scanned digits. 3 and 8, 1 and 7. Check totals against the document's own totals.
- Writing over a formula cell because its value looked wrong. Rule zero exists for this one.
- Silently applying no rule. A $0 management line should be noted, not just passed through.
Where Universe fits#
Universe is a Mac app that runs agents such as Claude Code and Codex on your computer, through the Claude or ChatGPT plan you already pay for. It fits this job when the documents arrive as a mess (a PDF, a scan, a forwarded email) and you want your own model, your rules and the pipeline around it in one place.
What it does here:
- The agent works in the folders you give it. It reads the source documents and writes the filled copy next to them, and every step is in a session you can read back.
- Your normalisation rules can be saved as a skill, so every agent doing this job applies them the same way.
- It writes a new file for each deal and never the master, so a bad fill costs you a copy, not the template.
- Rooms in a space let your team and the agent work in one conversation about a deal.
What it is not: a spreadsheet app, or an underwriting platform with its own extraction engine. An .xlsx opens read-only in Universe's panel. You open the filled copy in Excel to recalculate, review and save. What the agent reads is sent to your model provider as part of each turn. If you sign in, what syncs to Universe's cloud is what sharing and your other Macs need. A person still checks the inputs, and that check is not optional.
The use case page is Universe for Real Estate / IB. If this is the job on your desk, download Universe. It runs on Apple silicon or Intel Macs with macOS 13 or later.
Questions#
- Can ChatGPT or Claude underwrite a multifamily deal?
- They can read a T-12 and a rent roll and explain them well. The trouble is the model. A chat answer is numbers in a conversation, or a new spreadsheet the AI built, and neither is the model your lender or partners have already checked. Use AI to read the documents and fill inputs. Let your own Excel model do the underwriting, and check every input it wrote.
- What is the difference between a T-12 and a rent roll?
- A T-12 is the trailing twelve months of income and expenses, usually month by month. A rent roll is a snapshot of every unit on one date: type, tenant, lease dates, rent and deposits. The rent roll tells you what the building should collect. The T-12 tells you what it did collect and spend. Underwriting needs both, and the gap between them is often the most useful number in the file.
- How do I normalise a T-12 for underwriting?
- Replace what will change under your ownership and remove what won't happen again. Common rules: charge management at a set percentage of effective gross income even if the seller self-manages, move capital items like a boiler out of repairs, remove the seller's own renovation or refinance costs, and check taxes against what the county will bill after a sale. Write the rules down once so every deal gets the same treatment.
- Is there AI underwriting software for small multifamily investors?
- Yes, but most of it is priced for teams doing many deals. As of September 2026, RealQuant's Excel add-in starts at $199 a seat a month and V7 Go is priced through sales. RentRolltoExcel has a free tier for rent roll extraction. An owner doing a few 5 to 50 unit deals a year can also use a general desktop agent on the model they already have.
- Should AI write formulas in my underwriting model?
- No. The formulas are the part you've already checked. Give the agent a fixed list of input cells, have it write into a copy of your master, and compare the formula text before and after. If any formula changed, throw that copy away. The AI should do the reading. The spreadsheet should keep doing the math.