Document matrix AI: how to check every cell, not just the grid
Matrix, tabular review or review table: documents in rows, questions in columns. How to review hundreds of AI-filled cells without re-reading the documents.
Key takeaways
- A document matrix puts documents in rows and questions in columns, and AI fills every cell.
- The grid is the easy part. Ten leases by 80 terms is 800 answers nobody will re-read.
- Every cell needs a page, a highlighted passage and an explicit "not in the document".
- Review by risk: decision columns, low confidence and blanks first, then a sample of the rest.
Finance and legal AI tools have converged on the same layout. Some call it a matrix, others a tabular review or a review table. Documents go in the rows, questions go in the columns, and the AI fills every cell. It turns a stack of leases, credit agreements or filings into something you can sort, filter and compare.
Filling the grid is now routine. Trusting it is not. This post is about the part that decides whether a matrix saves time: checking the cells.
What a document matrix is
A document matrix asks the same questions of many documents at once. Each column is a question or a field, such as the expiration date, the leverage covenant or the change of control clause. Each row is one document. Each cell is the answer for that document.
Typical uses:
- Lease abstraction across a portfolio: dates, rent steps, expense structure, options.
- Credit agreement review: pricing, maturity, covenants and baskets side by side.
- Contract due diligence: assignment, change of control, exclusivity and liability caps across a data room.
- Financial statements: the same line items pulled from ten annual reports.
The grid is the easy part
Count the cells. Our CRE lease demo holds 10 leases, 951 pages in all, with 80 terms abstracted from each. That is 800 answers. No one re-reads 951 pages to confirm them, which was the point of using AI in the first place.
The trouble is that a wrong cell looks exactly like a right one. A date from the wrong clause is still a well-formed date. A rent figure from an earlier draft schedule is still a plausible number. The grid gives every answer the same tidy box, whether it came from the operative clause or from a recital three pages earlier.
So the useful question about any matrix tool is not how many documents it can fill. It is how long it takes to confirm one cell.
What every cell should carry
| In the cell | Why it matters |
|---|---|
| A normalized value | Dates as dates and amounts as numbers, so the column sorts and filters |
| The page | A pointer to the file alone sends the reviewer back to page one |
| The location on the page, highlighted | Long clauses and dense tables make a page number alone slow to check |
| The source passage | The exact words the value was taken from, readable without opening the PDF |
| A confidence score or status | Tells the reviewer where to look first |
| An explicit "not in the document" | An empty cell could mean absent, missed or failed |
With all six, checking a cell is one click and a glance: the value on one side, the highlighted passage on the other.
Where matrix cells go wrong
- A nearby clause instead of the right one. Commencement and rent commencement are different dates. In the BarkBox lease in our demo they are eighteen months apart.
- The base document instead of the amendment. A later amendment can change the rent, the term or the parties. The matrix should show the value that governs now.
- A defined term taken at face value. "Consolidated EBITDA" in one credit agreement is not the same as in the next one.
- Period and unit slips. Monthly against annual rent, thousands against millions, fiscal year against trailing twelve months.
- A list squeezed into one cell. Three renewal options become "yes", and the notice windows disappear.
- A blank that hides a miss. "No change of control clause" and "the model did not find one" look identical unless the tool says which it is.
A review routine for a large grid
- Check the columns that drive the decision first. Expiration and options in a lease portfolio, covenants and maturity in a loan book.
- Then the low-confidence cells and the blanks. They are where misses concentrate.
- Sort each column and look at the outliers. A lease that expires in 1938 or a margin of 45% stands out once the column is sorted.
- Spot-check a sample of the rest. A few cells per column shows whether a question was understood the same way across documents.
- Fix the question, not only the cell. If one column is wrong in several rows, rewrite the column and run it again.
- Record what was checked. A reviewed mark on each cell is the evidence that the grid was checked, not only filled.
The same triage applies to any AI review that produces more answers than one person can read. We cover it in more detail in Human-in-the-loop AI review.
Try it on the matrix demos
CiteLLM Extract fills the grid from the fields you define and keeps the page, the location, the passage and a confidence score attached to every value. The matrix demos show it on public documents, ten per set:
- CRE leases: a lease abstract where every term opens at its clause.
- Credit agreements: pricing, maturity, covenants and baskets.
- 10-K filings: income statement, balance sheet and cash flow.
- Contracts: renewal, termination, exclusivity, liability and more.
- CMBS loan agreements: loan purchase and co-lender agreements.
Click any value and the PDF opens at its page with the source highlighted. The demos are a quick way to judge what checking a cell should feel like, before you run a matrix on your own documents.
Frequently asked questions
Is a document matrix the same as data extraction?
It is extraction across many documents at once, laid out as a table. Each column is a field or question, each row is a document, and each cell should keep its source.
How many cells do I need to check?
Check every cell in the columns that drive the decision, every low-confidence cell and every blank. For the rest, a sample per column shows whether the question was read the same way across documents.
What should a cell show when the answer is not in the document?
An explicit not-in-the-document result, distinct from an empty cell, so a reviewer can tell an absent clause from a missed one.