Graam is your credit analyst. Hand it a loan tape and it does what a diligence analyst does on a bid: reads the tape, checks every property against the county record, scores the servicers against the agency book, sizes a structure to S&P criteria and sets it against Fitch, and names the loans to look at, with a reason for each. It does that in two minutes, and every number it writes can be traced to the table it came from.
This post shows one run. The tape is synthetic, built on real parcels, with problems planted in it so the result could be graded. The loans are fiction, the properties are real, and Graam was not told which loans had something wrong with them. The whole instruction was one sentence: “Run due diligence on this loan tape.”
Sign up, upload a tape of your own, and ask the same question.
1. The tape
302 residential loans, $112.0 million of current balance, Texas and Arizona. Every loan term on it is made up: balance, rate, FICO, LTV, documentation, occupancy, appraisal, pay history. Every property on it is a real parcel from the public assessment rolls of Maricopa County and five Texas counties, with its real street address, ZIP and county market value. No owner name appears anywhere. A fictional loan is attached to a public record, not to a person.
The synthetic side was not random. 54 of the loans were planted with a specific problem, the kind a diligence team is paid to find: an appraisal far above what the county thinks the house is worth, an owner-occupied loan where the owner of record gets mail somewhere else, a company on title behind an owner-occupied borrower, layered credit, a payment shock six months out, a rolling delinquency, an early payment default on a prime borrower. One loan is a trap, built to look like an absentee owner but to be innocent. The answer key stayed on this side of the upload.
| Metric | Value |
|---|---|
| Loans | 302 |
| Current balance | $112,014,650 |
| WA coupon | 7.97% |
| WA FICO | 726 |
| WA LTV | 72.05% |
| WA DTI | 37.83% |
2. The question
The instruction was that one sentence, with the file attached. Graam read the tape's headers and values, mapped the columns itself, chose the tape-diligence skill, and ran it. The skill is a fixed procedure over typed primitives, so the arithmetic is the same on every run; the model's job is to read the tape, to judge each flagged loan on its own facts, and to write the prose. The run took two minutes end to end.
3. Property verification
Each address on the tape was normalized and matched to the county parcel index on street address and ZIP. Where exactly one parcel matched, the county's record came back with it: market value, the owner's mailing address, whether the owner of record is a company or a trust, and the last recorded sale where the county publishes one.
| Population | Loans |
|---|---|
| Loans on the tape | 302 |
| Matched to one parcel | 301 |
| No address on the tape | 0 |
| Address, no parcel found | 1 |
| Ambiguous (2+ parcels) | 0 |
| Matched with a comparable county value | 301 |
| Appraisal >= 1.5x county value | 13 |
| Owner-occupied, absentee owner | 10 |
| Owner-occupied, company owner | 4 |
| Unit count / type mismatch | 0 |
301 of 302 loans matched exactly one parcel. One address found no parcel. None was ambiguous. From there, three checks ran on the matched set.
Appraisal against the county market value
13 loans were appraised at 1.5x or more of the county's market value. On this tape a normal appraisal sits within about a quarter of the county figure; these sit at roughly double.
| Loan | County | Appraisal | County market value | Ratio |
|---|---|---|---|---|
| LT-2026-0213 | Denton | $799,000 | $383,263 | 2.08x |
| LT-2026-0056 | Maricopa | $1,394,000 | $678,600 | 2.05x |
| LT-2026-0194 | Maricopa | $979,000 | $485,800 | 2.02x |
| LT-2026-0281 | Collin | $1,031,000 | $521,000 | 1.98x |
| LT-2026-0205 | Maricopa | $606,000 | $306,300 | 1.98x |
| LT-2026-0026 | Maricopa | $948,000 | $501,500 | 1.89x |
| LT-2026-0045 | Fort Bend | $1,668,000 | $907,090 | 1.84x |
| LT-2026-0058 | Bexar | $1,179,000 | $668,480 | 1.76x |
| LT-2026-0233 | Bexar | $744,000 | $428,780 | 1.74x |
| LT-2026-0248 | Maricopa | $724,000 | $422,000 | 1.72x |
| LT-2026-0057 | Maricopa | $1,248,000 | $746,000 | 1.67x |
| LT-2026-0235 | Maricopa | $496,000 | $298,500 | 1.66x |
| LT-2026-0140 | Collin | $1,190,000 | $738,046 | 1.61x |
Occupancy against the owner of record
10 owner-occupied loans sit on parcels whose owner receives mail at a different address, and 4 owner-occupied loans sit on parcels whose owner of record is a company. Neither is proof of anything on its own. A recent purchase can show the seller's mailing address until the roll catches up, and a borrower can move a house into an LLC after closing. Both are questions for the seller.
| Loan | County | Signal |
|---|---|---|
| LT-2026-0004 | Denton | Owner mailing address differs from the property |
| LT-2026-0085 | Maricopa | Owner mailing address differs from the property |
| LT-2026-0108 | Maricopa | Owner mailing address differs from the property |
| LT-2026-0118 | Collin | Owner mailing address differs from the property |
| LT-2026-0133 | Maricopa | Owner mailing address differs from the property |
| LT-2026-0139 | Maricopa | Owner mailing address differs from the property |
| LT-2026-0159 | Fort Bend | Owner mailing address differs from the property |
| LT-2026-0199 | Bexar | Owner mailing address differs from the property |
| LT-2026-0204 | Bexar | Owner mailing address differs from the property |
| LT-2026-0234 | Maricopa | Owner mailing address differs from the property |
| LT-2026-0051 | Maricopa | Owner of record is a company |
| LT-2026-0076 | Collin | Owner of record is a company |
| LT-2026-0174 | Bexar | Owner of record is a company |
| LT-2026-0224 | Maricopa | Owner of record is a company |
4. The loans to look at
Property flags are one input. 85 of 302 loans met at least one screen across valuation, occupancy, layered credit, payment shock and delinquency. Each of those was then judged on its own facts, one loan at a time, and tiered: 19 High, 60 Watch, 6 Dismissed. The judgment is a model call, but it can only read the loan's fields and the county record; it cannot invent a fact that is not on the row. Three of the High tier, with the reason as written:
| Loan | Tier | Confidence | Reason |
|---|---|---|---|
| LT-2026-0010 | High | 1.00 | 60+ days delinquent now (current_status=120+, pay_history_12m=XXXXCCCC369F); repeat delinquency (pay_history_12m=XXXXCCCC369F); early payment default (loan_age_months=9, pay_history_12m=XXXXCCCC369F) |
| LT-2026-0126 | High | 1.00 | DSCR below 1.0 (dscr=0.94); 60+ days delinquent now (current_status=60, pay_history_12m=CCCCCCCCC336); repeat delinquency (pay_history_12m=CCCCCCCCC336) |
| LT-2026-0051 | High | 0.94 | layered credit risk (fico=726, ltv_pct=87.7, dti_pct=42.8, purpose=Cash-Out Refi, documentation=Bank Statement 12M, reserves_months=6); occupancy misrepresentation (occupancy_per_tape=Owner Occupied, owner_type=company, loan_age_months=27) |
The trap was loan LT-2026-0004: owner-occupied, the owner's mail goes elsewhere, and the loan is a purchase that closed three months before the as-of date. The absentee screen fired, as it should. The per-loan judgment then read the loan age and the purpose and dismissed it with the note “no listed concern applies” at 0.74 confidence. That is the behaviour a diligence analyst would want: raise it, look at it, let it go.
5. Scoring the run against the answer key
Because the problems were planted, the run can be graded. The table below is every kind of planted problem, how many were on the tape, and how many the report surfaced. Surfaced means the loan carried the matching flag in the property section, or sat in the High or Watch tier with that concern named.
| Planted problem | On the tape | Surfaced |
|---|---|---|
| Appraisal above county value | 10 | 10 |
| Appraisal above a recent recorded sale | 3 | 3 |
| Owner-occupied, owner mails elsewhere | 8 | 8 |
| Owner-occupied, owner is a company | 4 | 4 |
| Credit and performance plants (seven kinds) | 24 | 24 |
| Same property under two loan ids (pairs) | 2 | 0 |
| Trap: absentee mail on a 3-month-old purchase | 1 | Dismissed |
25 of 25 property plants and 24 of 24 credit plants were surfaced, and the trap was dismissed. The one miss is honest: two parcels appear on the tape twice under different loan ids, once with the street suffix spelled out, and the report did not say so. There is no duplicate-property check in the skill today. There will be.
The report also raised loans the answer key calls clean: 1 more absentee owner, and 33 loans in the Watch or Dismissed tiers, 21 of them for layered credit near the thresholds. 2 reached High: each is currently 30 days late on the tape, and the judgment placed them there at confidences among the lowest in the tier. Those are not errors. The absentee flag is a real fact about a real parcel, and the layered-credit loans sit near the thresholds by construction. A screen that never fires on an unplanted loan would be tuned to the answer key, not to the tape.
6. The rest of the report
The property section is the one this tape was built to test, but the report is a diligence package, not a property check. In the same run:
Stratifications
| FICO | Loans | Balance | % of balance |
|---|---|---|---|
| 620-659 | 18 | $6,313,489 | 5.64% |
| 660-699 | 57 | $21,977,322 | 19.62% |
| 700-739 | 117 | $41,593,951 | 37.13% |
| 740-779 | 85 | $30,847,738 | 27.54% |
| 780+ | 25 | $11,282,150 | 10.07% |
| Total | 302 | $112,014,650 | 100.00% |
| LTV | Loans | Balance | % of balance |
|---|---|---|---|
| <=60% | 34 | $9,298,668 | 8.30% |
| 60-70% | 113 | $38,446,281 | 34.32% |
| 70-80% | 101 | $40,659,970 | 36.30% |
| 80-90% | 51 | $22,096,995 | 19.73% |
| 90-95% | 3 | $1,512,735 | 1.35% |
| Total | 302 | $112,014,650 | 100.00% |
| Documentation | Loans | Balance | % of balance |
|---|---|---|---|
| Full Doc | 75 | $25,680,227 | 22.93% |
| DSCR | 64 | $25,516,672 | 22.78% |
| Bank Statement 12M | 68 | $23,512,108 | 20.99% |
| WVOE | 19 | $8,895,270 | 7.94% |
| P&L | 22 | $7,760,506 | 6.93% |
| Bank Statement 24M | 21 | $7,556,604 | 6.75% |
| 1099 | 19 | $7,264,484 | 6.49% |
| Asset Depletion | 14 | $5,828,778 | 5.20% |
| Total | 302 | $112,014,650 | 100.00% |
Servicer scorecard
The tape names its servicers inconsistently, as tapes do: the same company appears under a trade name, a legal name and a d/b/a. Graam resolved each to its name in Freddie Mac's loan-level book and compared cure rates against what each servicer's credit mix predicts. Three of the servicers are special servicers that receive delinquent transfers, so a raw delinquency comparison would rank them backwards; they are judged on cure rate only. The servicers are named on the tape and in the report; they are lettered here.
| Servicer | % of balance | Role | 30-day cure, actual vs expected |
|---|---|---|---|
| Servicer A | 15.0% | special (receives delinquent transfers) | 26.3% vs 41.4% |
| Servicer B | 14.0% | special (receives delinquent transfers) | 29.0% vs 41.9% |
| Servicer C | 12.5% | primary | 45.0% vs 41.8% |
| Servicer D | 12.4% | primary | 39.4% vs 45.4% |
| Servicer E | 10.2% | primary | 38.6% vs 40.8% |
| Servicer F | 9.6% | no agency benchmark | — |
| Servicer G | 9.2% | primary | 44.0% vs 42.4% |
| Servicer H | 6.2% | special (receives delinquent transfers) | 29.0% vs 41.9% |
| Servicer I | 5.5% | special (receives delinquent transfers) | 19.1% vs 41.3% |
| Servicer J | 5.4% | primary | 45.0% vs 41.8% |
Rating-agency credit enhancement
S&P and Fitch required credit enhancement by rating, computed from the tape under each agency's published residential criteria.
| Rating | S&P required CE | Fitch required CE |
|---|---|---|
| AAA | 30.40% | 33.68% |
| AA | 20.72% | 25.02% |
| A | 13.18% | 15.86% |
| BBB | 7.46% | 8.71% |
| BB | 5.41% | 5.05% |
| B | 3.30% | 3.04% |
Indicative capital structure
Sized to S&P's required credit enhancement for this pool and run through the cashflow engine at 20% CPR, 2% CDR and a 31.07% loss severity, the S&P B-rating severity for this pool. It is indicative, not a bid: the retained first-loss bond is $3,696,483 and the retained IRR at a par purchase is 15.19%.
| Class | Rating | Balance | % of pool | CE | Coupon | WAL (yrs) |
|---|---|---|---|---|---|---|
| A1 | AAA | $77,962,196 | 69.60% | 30.40% | 5.958% | 1.95 |
| A2 | AA | $10,843,018 | 9.68% | 20.72% | 6.426% | 6.59 |
| A3 | A | $8,445,905 | 7.54% | 13.18% | 6.965% | 10.34 |
| M1 | BBB | $6,407,238 | 5.72% | 7.46% | 7.576% | 4.25 |
| B1 | BB | $2,296,300 | 2.05% | 5.41% | 9.138% | 6.98 |
| B2 | B | $2,363,509 | 2.11% | 3.30% | 11.467% | 10.40 |
| B3 | NR | $3,696,483 | 3.30% | 0.00% | 15.212% | 17.36 |
Break-even CDR by class
The constant default rate at which each class takes its first dollar of writedown, with the cumulative net loss that implies, set against each agency's loss coverage at that rating.
| Class | Rating | Break-even CDR | Cum net loss at break-even | S&P loss coverage | Fitch loss coverage | Status |
|---|---|---|---|---|---|---|
| A1 | AAA | — | — | 30.40% | 33.68% | no writedown at or below 60% CDR |
| A2 | AA | 46.79% | 22.58% | 20.72% | 25.02% | breakeven (approximate: solver bracketed the onset) |
| A3 | A | 22.12% | 16.01% | 13.18% | 15.86% | breakeven (approximate: solver bracketed the onset) |
| M1 | BBB | 11.26% | 10.47% | 7.46% | 8.71% | breakeven |
| B1 | BB | 8.03% | 8.15% | 5.41% | 5.05% | breakeven |
| B2 | B | 5.21% | 5.75% | 3.30% | 3.04% | breakeven |
| B3 | NR | 0.00% | 0.00% | — | — | first loss: written down at any CDR above 0% |
Writedowns by scenario
| CDR | Cum net loss | Collateral WAL | A1 | A2 | A3 | M1 | B1 | B2 | B3 |
|---|---|---|---|---|---|---|---|---|---|
| 0.00% | 0.00% | 4.23 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% |
| 2.00% | 2.45% | 3.91 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 28.32% |
| 5.00% | 5.56% | 3.51 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% | 94.95% |
| 10.00% | 9.62% | 2.97 | 0.00% | 0.00% | 0.00% | 0.00% | 63.82% | 100.00% | 100.00% |
7. What is underneath
None of the numbers above were computed by a language model. The address match is a query against the county parcel tables; it returns a typed result with the parcel id, the value frame and the owner signals, or it returns nothing. The stratifications, the credit-enhancement ladders and the servicer comparison are primitives that return typed objects. The per-loan judgment is a model call, but it is handed one loan's facts and asked for a tier and a reason, and the reason has to name the fields it used. The prose at the end is written by a model that is handed the tables, and every figure it writes is checked against them before it reaches the page.
That is why the run can be scored. There is a table for every claim, and the claim is a reference to the table.
8. One of five things
Tape diligence is one of the things Graam does. The same system reconstructs a deal's cashflow model from its prospectus, forecasts prepayments and defaults from loan data, organizes a desk's deals and remittances into a library it can search and monitor, structures a new deal to rating criteria, and saves a desk's own process as a skill that reruns on every new file.
To see this one for yourself: sign up, upload a tape, and ask for due diligence. Then ask it about the appraisals it flags.