PDF extraction › Document
real estate · short document · 318 gold cells · real-source
Mortgage closing disclosure
Gold v3 · imported · labels from llamaindex/ExtractBench · Source PDF ↗ · 5 pages
| System | v3 | Execution | Rows | Pass / fail / missing / extra |
|---|---|---|---|---|
| Codex · GPT-6 Astra · medium effort | 0.984 | completed | 39 / 39 | 313 / 5 / 0 / 0 |
| Codex · GPT-5.6 Sol · medium effort | 0.997 | completed | 39 / 39 | 317 / 1 / 0 / 0 |
| Claude Code · Claude Opus 5 · medium effort | 0.984 | completed | 39 / 39 | 313 / 5 / 0 / 0 |
| Claude Code · Claude Sonnet 5 · medium effort | 0.962 | completed | 39 / 39 | 306 / 12 / 0 / 0 |
Pages





Fields · gold v3 against every system
| Field | Gold · gpt-6-astra · gpt-5.6-sol · claude-opus-5 · claude-sonnet-5 |
|---|---|
| amount_financed | $162,000.00 wrong? |
| annual_percentage_rate | 4.174% wrong? |
| appraised_property_value | null wrong? |
| assumption | will not allow wrong? |
| balloon_payment | NO wrong? |
| borrower_name | Michael Jones and Mary Stone wrong? |
| cash_to_close | $14,147.26 wrong? |
| closing_costs_loan_costs_portion | $4,694.05 wrong? |
| closing_costs_other_costs_portion | $5,018.05 wrong? |
| closing_costs_total | $9,712.10 wrong? |
| closing_date | 4/15/2013 wrong? |
| date_issued | 4/15/2013 wrong? |
| demand_feature | does not have wrong? |
| disbursement_date | 4/15/2013 wrong? |
| escrow_account | will have wrong? |
| estimated_taxes_insurance_assessments | $356.13 wrong? |
| estimated_total_monthly_payment_first_period | $1,050.26 wrong? |
| estimated_total_monthly_payment_second_period | $967.91 wrong? |
| file_number | 12-3456 wrong? |
| finance_charge | $118,830.27 wrong? |
| interest_rate | 3.875% wrong? |
| lender_credits | $0 wrong? |
| lender_name | Ficus Bank wrong? |
| liability_after_foreclosure | state law may protect wrong? |
| loan_amount | $162,000 wrong? |
| loan_id | 123456789 wrong? |
| loan_term | 30 years wrong? |
| loan_type | Conventional wrong? |
| mic_number | 000654321 wrong? |
| monthly_principal_and_interest | $761.78 wrong? |
| negative_amortization | do not have wrong? |
| partial_payments | may accept wrong? |
| prepayment_penalty | YES wrong? |
| prepayment_penalty_detail | As high as $3,240 if you pay off the loan during the first 2 years wrong? |
| product | Fixed Rate wrong? |
| property_address | 456 Somewhere Ave, Anytown, ST 12345 wrong? |
| purpose | Purchase wrong? |
| sale_price | $180,000 wrong? |
| seller_name | Steve Cole and Amy Doe wrong? |
| settlement_agent | Epsilon Title Co. wrong? |
| total_interest_percentage | 69.46% wrong? |
| total_of_payments | $285,803.36 wrong? |
cash_to_close_grid 9 rows · differences
| # | line_label | loan_estimate | final | did_change |
|---|---|---|---|---|
| 0 | Total Closing Costs (J) wrong? | $8,054.00 wrong? | $9,712.10 wrong? | YES wrong? |
| 1 | Closing Costs Paid Before Closing wrong? | $0 wrong? |
- $29.80
gpt-6-astra– $29.80 claude-opus-5– $29.80 claude-sonnet-5– $29.80 wrong? |
YES wrong? |
| 2 | Closing Costs Financed (Paid from your Loan Amount) wrong? | $0 wrong? | $0 wrong? | NO wrong? |
| 3 | Down Payment/Funds from Borrower wrong? | $18,000.00 wrong? | $18,000.00 wrong? | NO wrong? |
| 4 | Deposit wrong? |
- $10,000.00
gpt-6-astra– $10,000.00 claude-opus-5– $10,000.00 claude-sonnet-5– $10,000.00 wrong? |
- $10,000.00
gpt-6-astra– $10,000.00 claude-opus-5– $10,000.00 claude-sonnet-5– $10,000.00 wrong? |
NO wrong? |
| 5 | Funds for Borrower wrong? | $0 wrong? | $0 wrong? | NO wrong? |
| 6 | Seller Credits wrong? | $0 wrong? |
- $2,500.00
gpt-6-astra– $2,500.00 claude-opus-5– $2,500.00 claude-sonnet-5– $2,500.00 wrong? |
YES wrong? |
| 7 | Adjustments and Other Credits wrong? | $0 wrong? |
- $1,035.04
gpt-6-astra– $1,035.04 claude-opus-5– $1,035.04 claude-sonnet-5– $1,035.04 wrong? |
YES wrong? |
| 8 | Cash to Close wrong? | $16,054.00 wrong? | $14,147.26 wrong? | null wrong? |
loan_costs 15 rows · differences
| # | section | line_label | payee | borrower_paid_at_closing | borrower_paid_before_closing | seller_paid_at_closing | seller_paid_before_closing | paid_by_others |
|---|---|---|---|---|---|---|---|---|
| 0 | A. Origination Charges wrong? | 0.25 % of Loan Amount (Points) wrong? | null wrong? | $405.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 1 | A. Origination Charges wrong? | Application Fee wrong? | null wrong? | $300.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 2 | A. Origination Charges wrong? | Underwriting Fee wrong? | null wrong? | $1,097.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 3 | B. Services Borrower Did Not Shop For wrong? | Appraisal Fee wrong? | John Smith Appraisers Inc. wrong? | null wrong? | null wrong? | null wrong? | null wrong? | $405.00 wrong? |
| 4 | B. Services Borrower Did Not Shop For wrong? | Credit Report Fee wrong? | Information Inc. wrong? | null wrong? | $29.80 wrong? | null wrong? | null wrong? | null wrong? |
| 5 | B. Services Borrower Did Not Shop For wrong? | Flood Determination Fee wrong? | Info Co. wrong? | $20.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 6 | B. Services Borrower Did Not Shop For wrong? | Flood Monitoring Fee wrong? | Info Co. wrong? | $31.75 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 7 | B. Services Borrower Did Not Shop For wrong? | Tax Monitoring Fee wrong? | Info Co. wrong? | $75.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 8 | B. Services Borrower Did Not Shop For wrong? | Tax Status Research Fee wrong? | Info Co. wrong? | $80.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 9 | C. Services Borrower Did Shop For wrong? | Pest Inspection Fee wrong? | Pests Co. wrong? | $120.50 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 10 | C. Services Borrower Did Shop For wrong? | Survey Fee wrong? | Surveys Co. wrong? | $85.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 11 | C. Services Borrower Did Shop For wrong? | Title – Insurance Binder wrong? | Epsilon Title Co. wrong? | $650.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 12 | C. Services Borrower Did Shop For wrong? |
Title – Lender’s Title Insurance
claude-sonnet-5Title – Lender's Title Insurance wrong? |
Epsilon Title Co. wrong? | $500.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 13 | C. Services Borrower Did Shop For wrong? | Title – Settlement Agent Fee wrong? | Epsilon Title Co. wrong? | $500.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 14 | C. Services Borrower Did Shop For wrong? | Title – Title Search wrong? | Epsilon Title Co. wrong? | $800.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
other_costs 15 rows · differences
| # | section | line_label | payee | borrower_paid_at_closing | borrower_paid_before_closing | seller_paid_at_closing | seller_paid_before_closing | paid_by_others |
|---|---|---|---|---|---|---|---|---|
| 0 | E. Taxes and Other Government Fees wrong? | Recording Fees wrong? | null wrong? | $85.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 1 | E. Taxes and Other Government Fees wrong? | Transfer Tax wrong? | Any State wrong? | null wrong? | null wrong? | $950.00 wrong? | null wrong? | null wrong? |
| 2 | F. Prepaids wrong? |
Homeowner’s Insurance Premium
claude-sonnet-5Homeowner's Insurance Premium wrong? |
Insurance Co. wrong? | $1,209.96 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 3 | F. Prepaids wrong? | Prepaid Interest wrong? | null wrong? | $279.04 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 4 | F. Prepaids wrong? | Property Taxes wrong? | Any County USA wrong? | $631.80 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 5 | G. Initial Escrow Payment at Closing wrong? |
Homeowner’s Insurance
claude-sonnet-5Homeowner's Insurance wrong? |
null wrong? | $201.66 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 6 | G. Initial Escrow Payment at Closing wrong? | Property Taxes wrong? | null wrong? | $210.60 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 7 | G. Initial Escrow Payment at Closing wrong? | Aggregate Adjustment wrong? | null wrong? |
– 0.01
gpt-5.6-sol- $0.01 claude-sonnet-5– $0.01 wrong? |
null wrong? | null wrong? | null wrong? | null wrong? |
| 8 | H. Other wrong? | HOA Capital Contribution wrong? | HOA Acre Inc. wrong? | $500.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 9 | H. Other wrong? | HOA Processing Fee wrong? | HOA Acre Inc. wrong? | $150.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
| 10 | H. Other wrong? | Home Inspection Fee wrong? | Engineers Inc. wrong? | $750.00 wrong? | null wrong? | null wrong? |
$750.00
claude-sonnet-5null wrong? |
null
claude-sonnet-5$750.00 wrong? |
| 11 | H. Other wrong? | Home Warranty Fee wrong? | XYZ Warranty Inc. wrong? | null wrong? | null wrong? | $450.00 wrong? | null wrong? | null wrong? |
| 12 | H. Other wrong? | Real Estate Commission wrong? | Alpha Real Estate Broker wrong? | null wrong? | null wrong? | $5,700.00 wrong? | null wrong? | null wrong? |
| 13 | H. Other wrong? | Real Estate Commission wrong? | Omega Real Estate Broker wrong? | null wrong? | null wrong? | $5,700.00 wrong? | null wrong? | null wrong? |
| 14 | H. Other wrong? |
Title – Owner’s Title Insurance (optional)
claude-sonnet-5Title – Owner's Title Insurance (optional) wrong? |
Epsilon Title Co. wrong? | $1,000.00 wrong? | null wrong? | null wrong? | null wrong? | null wrong? |
Values are shown after the scorer's normalization. Green: matches gold under the pinned scorer, including per-field normalizers and accepted alternates. Red: differs. Grey: absent on one side.
Extraction schema sent to every system · 178 descriptions contain a literal gold value
The upstream schema descriptions include examples that equal this document's answers in 178 places. All systems received the same schema.
{
"$defs": {
"CashToCloseGridRow": {
"properties": {
"did_change": {
"anyOf": [
{
"enum": [
"YES",
"NO"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Did this change?\u0027 answer for this row, normalized to \u0027YES\u0027 or \u0027NO\u0027. The Cash to Close summary row itself has no YES/NO answer - null there. Null when blank.",
"title": "Did This Change"
},
"final": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Value in the \u0027Final\u0027 column for this row, verbatim with sign/dollar e.g. \u0027$9,712.10\u0027, \u0027- $29.80\u0027. For the \u0027Cash to Close\u0027 row, capture the dollar amount ONLY (e.g. \u0027$14,147.26\u0027); do NOT append the \u0027From / To Borrower\u0027 checkbox text. Do NOT confuse with the \u0027Loan Estimate\u0027 column. Null when blank.",
"title": "Final"
},
"line_label": {
"description": "The row label in the \u0027Calculating Cash to Close\u0027 table, verbatim including any \u0027(letter)\u0027 suffix, e.g. \u0027Total Closing Costs (J)\u0027, \u0027Closing Costs Paid Before Closing\u0027, \u0027Closing Costs Financed (Paid from your Loan Amount)\u0027, \u0027Down Payment/Funds from Borrower\u0027, \u0027Deposit\u0027, \u0027Funds for Borrower\u0027, \u0027Seller Credits\u0027, \u0027Adjustments and Other Credits\u0027, \u0027Cash to Close\u0027 (PURCHASE row set); or \u0027Loan Amount\u0027, \u0027Total Closing Costs (J)\u0027, \u0027Closing Costs Paid Before Closing\u0027, \u0027Total Payoffs and Payments (K)\u0027, \u0027Cash to Close\u0027 (REFINANCE row set). PURCHASE is on page 3, REFINANCE on page 3 (H25E) / page 2 (H25F excerpt). The two doc types have different row sets - emit whatever rows appear. Do NOT confuse with the Closing Cost Details fee lines on page 2.",
"title": "Line Label",
"type": "string"
},
"loan_estimate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Value in the \u0027Loan Estimate\u0027 column for this row, verbatim with sign/dollar e.g. \u0027$8,054.00\u0027, \u0027- $10,000.00\u0027, \u0027$0\u0027. Do NOT confuse with the \u0027Final\u0027 column (immediately to its right). Null when blank.",
"title": "Loan Estimate"
}
},
"required": [
"line_label"
],
"title": "CashToCloseGridRow",
"type": "object"
},
"ClosingCostLine": {
"properties": {
"borrower_paid_at_closing": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dollar amount in the FIRST money column, labeled \u0027Borrower-Paid / At Closing\u0027, for this fee line, verbatim with dollar sign and cents, e.g. \u0027$300.00\u0027. Negative values keep their sign, e.g. \u0027- $0.01\u0027. There are up to five money columns in left-to-right order: [Borrower-Paid At Closing] [Borrower-Paid Before Closing] [Seller-Paid At Closing] [Seller-Paid Before Closing] [Paid by Others]; place each amount strictly under the column it physically sits in. CRITICAL: a value that sits in the \u0027Before Closing\u0027 or \u0027Paid by Others\u0027 column must NOT be put here just because this is the first/most-common column - e.g. on the purchase sample \u0027Appraisal Fee\u0027 $405.00 is in the rightmost Paid by Others column (so this is null), and \u0027Credit Report Fee\u0027 $29.80 is in Before Closing (so this is null). Null when the At Closing column is blank for the row.",
"title": "Borrower Paid At Closing"
},
"borrower_paid_before_closing": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dollar amount in the SECOND money column, labeled \u0027Borrower-Paid / Before Closing\u0027, for this fee line, verbatim e.g. \u0027$29.80\u0027, \u0027$405.00\u0027. This column captures fees the borrower paid prior to the closing date (POC-style). On the purchase sample \u0027Credit Report Fee\u0027 $29.80 is here; on the H25E refinance \u0027Appraisal Fee\u0027 $405.00 and \u0027Credit Report Fee\u0027 $30.00 are here. Do NOT confuse with borrower_paid_at_closing (column to its left) or paid_by_others (far-right column). Null when blank.",
"title": "Borrower Paid Before Closing"
},
"line_label": {
"description": "The BASE NAME of this individual numbered fee line ONLY, e.g. \u0027Application Fee\u0027, \u0027Appraisal Fee\u0027, \u00270.25 % of Loan Amount (Points)\u0027, \u0027Title - Lender\u0027s Title Insurance\u0027, \u0027Recording Fees\u0027, \u0027Prepaid Interest\u0027, \u0027Property Taxes\u0027, \u0027Homeowner\u0027s Insurance\u0027, \u0027Mortgage Insurance\u0027, \u0027Aggregate Adjustment\u0027. Page 2 (Closing Cost Details), the numbered (01, 02, ...) rows under each lettered section. STRIP all of the following so the same line in two documents produces the identical label: (a) the leading line number (01/02/...); (b) the \u0027to \u003cpayee\u003e\u0027 portion (that goes in payee); (c) any inline dollar figures or rate/term descriptors that trail the name on the same row - e.g. for \u0027Homeowner\u0027s Insurance $100.83 per month for 2 mo.\u0027 use \u0027Homeowner\u0027s Insurance\u0027; for \u0027Recording Fees Deed: $40.00 Mortgage: $45.00\u0027 use \u0027Recording Fees\u0027; for \u0027Prepaid Interest ( $17.44 per day from 4/15/13 to 5/1/13 )\u0027 use \u0027Prepaid Interest\u0027; for \u0027Homeowner\u0027s Insurance Premium ( 12 mo.)\u0027 use \u0027Homeowner\u0027s Insurance Premium\u0027; for \u0027Property Taxes ( 6 mo.)\u0027 use \u0027Property Taxes\u0027. Keep only the descriptive fee NAME, not the parenthetical month counts, per-day/per-month amounts, or deed/mortgage breakdowns. EXCEPTIONS - keep these parentheticals because they are part of the printed line NAME, not data: \u00270.25 % of Loan Amount (Points)\u0027 (the \u0027%\u0027 rate IS the line name, keep the exact printed rate e.g. \u0027.5 % of Loan Amount (Points)\u0027 on H25E), and the trailing \u0027(Points)\u0027 / \u0027(optional)\u0027 qualifiers (e.g. keep \u0027Title - Owner\u0027s Title Insurance (optional)\u0027 WITH \u0027(optional)\u0027). Do NOT confuse with section (the lettered header). Do NOT emit subtotal / TOTAL rows as a line_label.",
"title": "Line Label",
"type": "string"
},
"paid_by_others": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dollar amount in the FAR-RIGHT \u0027Paid by Others\u0027 column for this fee line, verbatim e.g. \u0027$405.00\u0027. Page 2, the last money column on the right edge of the table. On the purchase sample the \u0027Appraisal Fee\u0027 $405.00 sits in THIS column (Paid by Others), NOT in any Borrower-Paid column. Do NOT confuse with the seller_paid columns (which are between Borrower-Paid and Paid by Others on a purchase disclosure) or with borrower_paid columns. Null when blank.",
"title": "Paid By Others"
},
"payee": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The recipient of this fee, taken from the \u0027to \u003cname\u003e\u0027 text that follows the fee name on the same row, e.g. \u0027John Smith Appraisers Inc.\u0027, \u0027Epsilon Title Co.\u0027, \u0027Any County USA\u0027. Strip the leading \u0027to \u0027. Page 2 fee rows. Null when the row shows no \u0027to ...\u0027 payee. Do NOT confuse with line_label (the fee name) or with any dollar amount.",
"title": "Payee"
},
"section": {
"description": "The lettered section heading this fee line falls under, copied verbatim INCLUDING the letter and the section title, e.g. \u0027A. Origination Charges\u0027, \u0027B. Services Borrower Did Not Shop For\u0027, \u0027C. Services Borrower Did Shop For\u0027 (in loan_costs); or \u0027E. Taxes and Other Government Fees\u0027, \u0027F. Prepaids\u0027, \u0027G. Initial Escrow Payment at Closing\u0027, \u0027H. Other\u0027 (in other_costs). Found on page 2 (Closing Cost Details). Do NOT confuse with line_label (the individual fee name): section is the bold lettered header, line_label is the numbered (01, 02, ...) row beneath it. Do NOT use the subtotal rows (\u0027D. TOTAL LOAN COSTS\u0027, \u0027I. TOTAL OTHER COSTS\u0027, \u0027Loan Costs Subtotals\u0027) as a section value for a fee line.",
"title": "Section",
"type": "string"
},
"seller_paid_at_closing": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dollar amount in the Seller-Paid \u0027At Closing\u0027 column for this fee line, verbatim e.g. \u0027$450.00\u0027. Page 2. PURCHASE disclosures only have Seller-Paid columns; on REFINANCE disclosures there are no Seller-Paid columns so this is always null. Do NOT confuse with borrower_paid_at_closing. Null when blank or absent.",
"title": "Seller Paid At Closing"
},
"seller_paid_before_closing": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Dollar amount in the Seller-Paid \u0027Before Closing\u0027 column for this fee line, verbatim e.g. \u0027$750.00\u0027. Page 2. PURCHASE only; null on REFINANCE. Null when blank.",
"title": "Seller Paid Before Closing"
}
},
"required": [
"section",
"line_label"
],
"title": "ClosingCostLine",
"type": "object"
}
},
"properties": {
"amount_financed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Amount Financed\u0027 value from the Loan Calculations box (page 5), verbatim e.g. \u0027$162,000.00\u0027, \u0027$148,241.94\u0027. Do NOT confuse with loan_amount (page 1, may differ) or finance_charge. Null if absent.",
"title": "Amount Financed"
},
"annual_percentage_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Annual Percentage Rate (APR)\u0027 from the Loan Calculations box (page 5), verbatim percent e.g. \u00274.174%\u0027, \u00274.543%\u0027. Do NOT confuse with interest_rate (page 1, lower) or total_interest_percentage (TIP). Null if absent.",
"title": "Annual Percentage Rate (APR)"
},
"appraised_property_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Appraised Prop. Value\u0027 value from the Closing Information block (page 1), verbatim e.g. \u0027$180,000\u0027. REFINANCE disclosures only (it replaces \u0027Sale Price\u0027). On a PURCHASE disclosure leave this null and use sale_price. Do NOT confuse with sale_price or loan_amount. Null on purchase / when absent.",
"title": "Appraised Property Value"
},
"assumption": {
"anyOf": [
{
"enum": [
"will allow",
"will not allow"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Assumption option in Loan Disclosures (page 4): \u0027will allow\u0027 (lender will allow assumption) or \u0027will not allow\u0027. In both samples \u0027will not allow\u0027 is checked. Null if not determinable.",
"title": "Assumption"
},
"balloon_payment": {
"anyOf": [
{
"enum": [
"YES",
"NO"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether the loan has a Balloon Payment, from the \u0027Does the loan have these features?\u0027 block (page 1). Normalize to \u0027YES\u0027 or \u0027NO\u0027. Do NOT confuse with prepayment_penalty (row above). Null if absent.",
"title": "Balloon Payment"
},
"borrower_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Borrower\u0027 name(s) from the Transaction Information block (page 1), the name line only, verbatim e.g. \u0027Michael Jones and Mary Stone\u0027. Do NOT include the borrower\u0027s street address that follows on the next lines. Do NOT confuse with seller_name or lender_name. Null if absent.",
"title": "Borrower Name"
},
"cash_to_close": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The headline \u0027Cash to Close\u0027 figure in the \u0027Costs at Closing\u0027 box (page 1), the DOLLAR AMOUNT ONLY e.g. \u0027$14,147.26\u0027, \u0027$29,677.43\u0027. Do NOT append the \u0027From / To Borrower\u0027 checkbox words that may sit beside it. Do NOT confuse with closing_costs_total (the smaller Closing Costs figure), loan_amount, or the page-3 Calculating-Cash-to-Close grid \u0027Cash to Close\u0027 row. Null if absent.",
"title": "Cash to Close"
},
"cash_to_close_grid": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/CashToCloseGridRow"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Rows of the \u0027Calculating Cash to Close\u0027 table (PURCHASE: page 3; REFINANCE H25E: page 3; REFINANCE excerpt H25F: page 2), which compares Loan Estimate vs Final with a \u0027Did this change?\u0027 answer. Emit one object per row. PURCHASE and REFINANCE have different row sets (refinance includes \u0027Loan Amount\u0027 and \u0027Total Payoffs and Payments (K)\u0027; purchase includes \u0027Down Payment/Funds from Borrower\u0027, \u0027Deposit\u0027, \u0027Seller Credits\u0027, etc.) - emit whatever rows the document shows, including the final \u0027Cash to Close\u0027 summary row. Do NOT include the page-2 Closing Cost Details fee lines or the page-3 Summaries of Transactions (K/L/M/N) rows.",
"title": "Calculating Cash to Close Grid"
},
"closing_costs_loan_costs_portion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Loan Costs\u0027 component cited inside the Closing Costs explanatory sentence on page 1 (\u0027Includes $X in Loan Costs + $Y in Other Costs - $Z in Lender Credits\u0027), verbatim e.g. \u0027$4,694.05\u0027, \u0027$3,495.50\u0027. Do NOT confuse with closing_costs_other_costs_portion (the \u0027$Y in Other Costs\u0027 value), closing_costs_total, or lender_credits. Null if absent.",
"title": "Closing Costs - Loan Costs Portion"
},
"closing_costs_other_costs_portion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Other Costs\u0027 component cited inside the Closing Costs explanatory sentence on page 1 (\u0027... + $Y in Other Costs ...\u0027), verbatim e.g. \u0027$5,018.05\u0027, \u0027$2,762.07\u0027. Do NOT confuse with closing_costs_loan_costs_portion (\u0027$X in Loan Costs\u0027) or lender_credits. Null if absent.",
"title": "Closing Costs - Other Costs Portion"
},
"closing_costs_total": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The headline \u0027Closing Costs\u0027 figure in the \u0027Costs at Closing\u0027 box (page 1), verbatim e.g. \u0027$9,712.10\u0027, \u0027$5,757.57\u0027. This is the page-1 summary number. Do NOT confuse with: cash_to_close (the larger Cash to Close figure), loan_amount, or the page-2 \u0027J. TOTAL CLOSING COSTS\u0027 line (which equals this value but is a different field captured inside loan_costs/grid). Equals loan_costs_portion + other_costs_portion - lender_credits. Null if absent.",
"title": "Closing Costs Total"
},
"closing_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Closing Date\u0027 value from the Closing Information block (page 1, top-left), as printed e.g. \u00274/15/2013\u0027. Do NOT confuse with date_issued (line above) or disbursement_date (line below). Null if absent.",
"title": "Closing Date"
},
"date_issued": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Date Issued\u0027 value from the Closing Information block (page 1, top-left), formatted exactly as printed e.g. \u00274/15/2013\u0027 (M/D/YYYY). Do NOT confuse with closing_date or disbursement_date which sit directly below it and may share the same value. Null if absent.",
"title": "Date Issued"
},
"demand_feature": {
"anyOf": [
{
"enum": [
"has",
"does not have"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Demand Feature option in Loan Disclosures (page 4): \u0027has\u0027 a demand feature or \u0027does not have\u0027. In both samples \u0027does not have\u0027 is checked. Null if not determinable.",
"title": "Demand Feature"
},
"disbursement_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Disbursement Date\u0027 value from the Closing Information block (page 1, top-left), as printed e.g. \u00274/15/2013\u0027. Do NOT confuse with closing_date (line above). Null if absent.",
"title": "Disbursement Date"
},
"escrow_account": {
"anyOf": [
{
"enum": [
"will have",
"will not have"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Escrow Account option in the Escrow Account box (page 4): \u0027will have\u0027 an escrow account or \u0027will not have\u0027. In both samples \u0027will have\u0027 is checked. Null if not determinable.",
"title": "Escrow Account"
},
"estimated_taxes_insurance_assessments": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Estimated Taxes, Insurance \u0026 Assessments\u0027 monthly amount from the Projected Payments section (page 1), the \u0027$x a month\u0027 figure, verbatim dollar only e.g. \u0027$356.13\u0027 (omit the trailing \u0027a month\u0027). Do NOT confuse with estimated_total_monthly_payment or the Estimated Escrow line. Null if absent.",
"title": "Estimated Taxes, Insurance \u0026 Assessments"
},
"estimated_total_monthly_payment_first_period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Estimated Total Monthly Payment\u0027 value in the FIRST (left) Projected Payments column (page 1), verbatim e.g. \u0027$1,050.26\u0027 (Years 1-7 on the purchase sample, Years 1-4 on H25E). Do NOT confuse with monthly_principal_and_interest (just the P\u0026I component) or with the second-period column. Null if absent.",
"title": "Estimated Total Monthly Payment (First Period)"
},
"estimated_total_monthly_payment_second_period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Estimated Total Monthly Payment\u0027 value in the SECOND (right) Projected Payments column (page 1), verbatim e.g. \u0027$967.91\u0027 (Years 8-30 on purchase, Years 5-30 on H25E). Do NOT confuse with the first-period column. Null if absent or if there is only one payment column.",
"title": "Estimated Total Monthly Payment (Second Period)"
},
"file_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027File #\u0027 value from the Closing Information block (page 1), verbatim e.g. \u002712-3456\u0027. Do NOT confuse with loan_id (\u0027Loan ID #\u0027) or mic_number (\u0027MIC #\u0027). Null if absent.",
"title": "File Number"
},
"finance_charge": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Finance Charge\u0027 value from the Loan Calculations box (page 5), verbatim e.g. \u0027$118,830.27\u0027. Do NOT confuse with total_of_payments or amount_financed. Null if absent.",
"title": "Finance Charge"
},
"interest_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Interest Rate\u0027 from the Loan Terms table (page 1), verbatim as a percent e.g. \u00273.875%\u0027, \u00274.25%\u0027. Do NOT confuse with annual_percentage_rate (APR, page 5) or total_interest_percentage (TIP). Null if absent.",
"title": "Interest Rate"
},
"lender_credits": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Lender Credits\u0027 amount from the page-1 Closing Costs sentence (\u0027... - $Z in Lender Credits\u0027). ALWAYS take it from the page-1 \u0027Costs at Closing\u0027 sentence and report it as a POSITIVE dollar string WITHOUT a leading minus sign, e.g. \u0027$0\u0027, \u0027$500\u0027 (purchase sample shows \u0027$0\u0027; H25E shows \u0027$500\u0027). Do NOT use the page-2 \u0027Lender Credits\u0027 line form \u0027- $500.00\u0027 and do NOT prepend a \u0027-\u0027 sign. Do NOT confuse with closing_costs_total, the loan/other-costs portions, or Seller Credits. Null if absent.",
"title": "Lender Credits"
},
"lender_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Lender\u0027 name from the Transaction Information block (page 1), verbatim e.g. \u0027Ficus Bank\u0027. Do NOT confuse with settlement_agent or with the Lender column of the page-5 Contact Information table. Null if absent.",
"title": "Lender Name"
},
"liability_after_foreclosure": {
"anyOf": [
{
"enum": [
"state law may protect",
"state law does not protect"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Liability after Foreclosure option in Other Disclosures (page 5): \u0027state law may protect\u0027 you from liability for the unpaid balance, or \u0027state law does not protect\u0027. Purchase sample = \u0027state law may protect\u0027; H25E refinance = \u0027state law does not protect\u0027. Null if not determinable.",
"title": "Liability after Foreclosure"
},
"loan_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Loan Amount\u0027 from the Loan Terms table (page 1, first row), verbatim with dollar e.g. \u0027$162,000\u0027. Do NOT confuse with closing_costs_total, cash_to_close, sale_price, or amount_financed (page 5). Null if absent.",
"title": "Loan Amount"
},
"loan_costs": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ClosingCostLine"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Itemized fee lines under the \u0027Loan Costs\u0027 heading of Closing Cost Details (page 2): sections A (Origination Charges), B (Services Borrower Did Not Shop For), C (Services Borrower Did Shop For). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME. The form pre-prints blank numbered slots (e.g. \u002704\u0027, \u002705\u0027, \u002706\u0027, \u002707\u0027, \u002708\u0027 with nothing after them) - these are EMPTY placeholders and must NOT be emitted as rows. Also do NOT emit: a row whose line_label would be empty/null, the section header rows themselves, per-section subtotals, or the \u0027D. TOTAL LOAN COSTS\u0027 / \u0027Loan Costs Subtotals\u0027 rows. Expected non-empty counts: purchase sample = 15 lines (A:3, B:6, C:6); H25E refinance = 15 lines (A:4, B:6, C:5). Null when the document does not include the Closing Cost Details page (e.g. an excerpt).",
"title": "Loan Costs"
},
"loan_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Loan ID #\u0027 from the Loan Information block (page 1), verbatim e.g. \u0027123456789\u0027. Do NOT confuse with file_number (\u0027File #\u0027) or mic_number (\u0027MIC #\u0027). Null if absent.",
"title": "Loan ID"
},
"loan_term": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Loan Term\u0027 from the Loan Information block (page 1), verbatim e.g. \u002730 years\u0027. Do NOT confuse with the Projected Payments year ranges (e.g. \u0027Years 1-7\u0027). Null if absent.",
"title": "Loan Term"
},
"loan_type": {
"anyOf": [
{
"enum": [
"Conventional",
"FHA",
"VA",
"Other"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Loan Type\u0027 from the Loan Information block (page 1) - the checked box among Conventional / FHA / VA / ____ (Other). Return the checked value as one of \u0027Conventional\u0027, \u0027FHA\u0027, \u0027VA\u0027, \u0027Other\u0027. In both samples \u0027Conventional\u0027 is checked (the box shows \u0027x\u0027). Do NOT confuse with purpose or product. Null if no box is determinable.",
"title": "Loan Type"
},
"mic_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027MIC #\u0027 (Mortgage Insurance Case number) from the Loan Information block (page 1), verbatim e.g. \u0027000654321\u0027, \u0027009874513\u0027. Do NOT confuse with loan_id or file_number. Null if absent.",
"title": "MIC Number"
},
"monthly_principal_and_interest": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Monthly Principal \u0026 Interest\u0027 amount from the Loan Terms table (page 1), verbatim e.g. \u0027$761.78\u0027, \u0027$737.91\u0027. This is the base P\u0026I, NOT the full Estimated Total Monthly Payment (which adds escrow/MI). Do NOT confuse with estimated_total_monthly_payment. Null if absent.",
"title": "Monthly Principal \u0026 Interest"
},
"negative_amortization": {
"anyOf": [
{
"enum": [
"are scheduled",
"may have",
"do not have"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Negative Amortization option in Loan Disclosures (page 4): \u0027are scheduled\u0027 (scheduled neg-am payments), \u0027may have\u0027 (may have neg-am), or \u0027do not have\u0027 (no negative amortization feature). In both samples \u0027do not have\u0027 is checked. Null if not determinable.",
"title": "Negative Amortization"
},
"other_costs": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ClosingCostLine"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Itemized fee lines under the \u0027Other Costs\u0027 heading of Closing Cost Details (page 2): sections E (Taxes and Other Government Fees), F (Prepaids), G (Initial Escrow Payment at Closing), H (Other). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME, INCLUDING the \u0027Aggregate Adjustment\u0027 line under G. The form pre-prints blank numbered slots and partially-blank rows such as \u0027Mortgage Insurance Premium ( mo.)\u0027 / \u0027Mortgage Insurance per month for mo.\u0027 that have a label but NO dollar amount in any column - treat a row as EMPTY and skip it only when it has neither a meaningful fee name nor any amount; a printed fee name with all-blank amounts (like an unused Mortgage Insurance line) should be SKIPPED. Do NOT emit blank numbered placeholders, section header rows, per-section subtotals, or the \u0027I. TOTAL OTHER COSTS\u0027 / \u0027J. TOTAL CLOSING COSTS\u0027 / \u0027Other Costs Subtotals\u0027 rows. Expected non-empty counts: purchase sample = 15 lines (E:2, F:3, G:3 incl. Aggregate Adjustment, H:7); H25E refinance = 8 lines (E:1, F:3, G:3, H:0, and \u0027Aggregate Adjustment\u0027 counted in G). Null when the document omits the Closing Cost Details page.",
"title": "Other Costs"
},
"partial_payments": {
"anyOf": [
{
"enum": [
"may accept",
"may hold",
"does not accept"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The checked Partial Payments option in Loan Disclosures (page 4): \u0027may accept\u0027 partial payments, \u0027may hold\u0027 them in a separate account, or \u0027does not accept\u0027 partial payments. In both samples \u0027may accept\u0027 is checked. Null if not determinable.",
"title": "Partial Payments"
},
"prepayment_penalty": {
"anyOf": [
{
"enum": [
"YES",
"NO"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether the loan has a Prepayment Penalty, from the \u0027Does the loan have these features?\u0027 block of the Loan Terms table (page 1). Normalize to \u0027YES\u0027 or \u0027NO\u0027. Do NOT confuse with balloon_payment (the row below). Null if absent.",
"title": "Prepayment Penalty"
},
"prepayment_penalty_detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The descriptive text beside a YES prepayment penalty, verbatim e.g. \u0027As high as $3,240 if you pay off the loan during the first 2 years\u0027 (strip a leading bullet). Page 1 Loan Terms. Null when prepayment_penalty is NO or no detail text is printed.",
"title": "Prepayment Penalty Detail"
},
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Product\u0027 from the Loan Information block (page 1), verbatim e.g. \u0027Fixed Rate\u0027, \u00275 Year Interest Only, 5/3 Adjustable Rate\u0027. Do NOT confuse with purpose (\u0027Purchase\u0027/\u0027Refinance\u0027) or loan_type (\u0027Conventional\u0027). Null if absent.",
"title": "Product"
},
"property_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Property\u0027 address from the Closing Information block (page 1), full multi-line address joined into one string e.g. \u0027456 Somewhere Ave, Anytown, ST 12345\u0027. Do NOT confuse with the Borrower or Seller mailing addresses in the Transaction Information block. Null if absent.",
"title": "Property Address"
},
"purpose": {
"anyOf": [
{
"enum": [
"Purchase",
"Refinance",
"Construction",
"Other"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Purpose\u0027 from the Loan Information block (page 1), one of \u0027Purchase\u0027, \u0027Refinance\u0027, \u0027Construction\u0027, \u0027Other\u0027 as printed. Do NOT confuse with product (e.g. \u0027Fixed Rate\u0027) or loan_type (\u0027Conventional\u0027). Null if absent.",
"title": "Purpose"
},
"sale_price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Sale Price\u0027 value from the Closing Information block (page 1), verbatim with dollar e.g. \u0027$180,000\u0027. PURCHASE disclosures only. On a REFINANCE disclosure this label is replaced by \u0027Appraised Prop. Value\u0027 - leave sale_price null and use appraised_property_value instead. Do NOT confuse with loan_amount or appraised_property_value. Null on refinance / when absent.",
"title": "Sale Price"
},
"seller_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Seller\u0027 name(s) from the Transaction Information block (page 1), name line only, verbatim e.g. \u0027Steve Cole and Amy Doe\u0027. PURCHASE disclosures only - REFINANCE disclosures have no Seller row, so this is null on refinance. Do NOT include the seller address. Do NOT confuse with borrower_name. Null on refinance / when absent.",
"title": "Seller Name"
},
"settlement_agent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Settlement Agent\u0027 company name from the Closing Information block (page 1), e.g. \u0027Epsilon Title Co.\u0027, \u0027Zeta Title\u0027. Do NOT confuse with lender_name (Ficus Bank) or the Settlement Agent column in the page-5 Contact Information table. Null if absent.",
"title": "Settlement Agent"
},
"total_interest_percentage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Total Interest Percentage (TIP)\u0027 from the Loan Calculations box (page 5), verbatim percent e.g. \u002769.46%\u0027, \u002777.29%\u0027. Do NOT confuse with annual_percentage_rate (APR) or interest_rate. Null if absent.",
"title": "Total Interest Percentage (TIP)"
},
"total_of_payments": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The \u0027Total of Payments\u0027 value from the Loan Calculations box (page 5), verbatim e.g. \u0027$285,803.36\u0027. Do NOT confuse with finance_charge or amount_financed in the same box. Null if absent.",
"title": "Total of Payments"
}
},
"required": [],
"title": "ClosingDisclosureTRID",
"type": "object"
}