HMDA and 1071 Data Validation

AI for HMDA compliance: six agents, and what each may never do

AI for HMDA compliance works when it is narrow: Botminds’ HMDA and 1071 Data Validation splits the check of every HMDA field against the loan file into six AI agents: two readers, a recomputer, a matcher, an edit runner and a monitor. Each carries a hard limit, and none of them can change the register, sign it or file it.

Updated · 14 min read

AI for HMDA compliance, done properly, means checking every reportable field on every loan/application register (LAR) line against the page in the loan file it came from, with the examiners’ tolerances applied, before the register is filed. That is hard because a register of a few thousand applications holds hundreds of thousands of field values, the sources are scattered across the many documents in each loan file, and examiners test against the file, not against the system of record. Botminds’ HMDA and 1071 Data Validation exists to do that check on every line rather than a sample, and to hand people only the fields that disagree.

It does the work with six specialist AI agents rather than one model. A register reader works out which fields apply, a loan file reader finds each field’s source page, a rate spread and geocode checker recomputes the two fields that must be computed, a field matcher compares with tolerances, a filing edit runner runs the FFIEC edits, and an error-rate monitor counts what was found. Each agent has one thing it may never do. People make every change to the register.

The six agents of HMDA and 1071 Data Validation, and where people take over

  1. Agent

    Register reader

    Reads each new or changed application from the origination systems and builds its LAR row. Notes which fields apply: a denial has no rate spread.

    Never: writes to the origination system.

  2. Agent

    Loan file reader

    Finds the document and page each field comes from, and extracts the value exactly as printed.

    Never: guesses. A missing value is marked “no source”.

  3. Agent

    Rate spread and geocode checker

    Recomputes rate spread from the APR and the APOR table for the lock date, and geocodes the address to its census tract.

    Never: reports a spread where Regulation C says NA.

  4. Agent

    Field matcher

    Compares register with source under the FFIEC tolerances and the bank’s procedure, and writes up each break.

    Never: edits a value, or counts a tolerance difference as an error.

  5. A person decides

    HMDA data manager

    Corrects and signs each break with a reason, or keeps the register value and signs the reason for keeping it.

  6. A person decides

    Second reviewer

    Confirms every correction to ethnicity, race or sex before it stands.

  7. Agent

    Filing edit runner

    Runs the FFIEC syntactical, validity, quality and macro-quality edits on the corrected register and drafts the explanations.

    Never: files the register.

  8. Agent

    Error-rate monitor

    Counts errors as first entered by field, branch and officer, estimates the exam odds and traces causes.

    Never: names a cause without the applications behind it.

  9. A person decides

    Compliance testing manager

    Sees every kept value and signs off the register before a person files it.

The readers, the recomputer and the matcher run on every application, nightly for new ones and in full at quarter end. Green steps are decisions only a named person can make.

Why HMDA validation needs six agents, not one AI model

Because the check is six different jobs with six different ways of failing, and a single model doing all of them can fail silently at any one. Reading a LAR row, finding a page in a 200-page file, recomputing a rate spread, judging a difference, running a published edit set and counting errors draw on different inputs and need different kinds of rigour.

The worst failure in this work is a plausible value. A model asked to “check the income” that cannot find the underwriter’s worksheet will often find a number somewhere else in the file, and the check passes on the wrong evidence. Split the work, and the agent that reads the file is not the agent that judges it, so a value with no source page arrives at the matcher marked “no source” instead of disguised as a match. It is the maker–checker separation lending already applies to people, applied to software.

The split also matches how the examiner works. The FFIEC HMDA Examiner Transaction Testing Guidelines compare the LAR with the loan file field by field, and for a register of 501 to 100,000 lines four errors in one field among a sample of 79 mean that field is corrected and resubmitted across the whole register. The examiner is counting field-level disagreements with the file, so that is the unit each agent works in. When the CFPB sued Freedom Mortgage in 2023, it alleged that 51 errors found in an initial review of 159 files led to a resubmission correcting 35 different data fields, over 174,000 entries touching nearly 20 percent of the company’s applications. Errors at that scale come from processes, not from one bad file.

Do regulators allow AI in HMDA compliance?

Yes: no rule forbids it, and the regulators use it themselves on the same kind of task. What no rule changes is who answers for the data. Regulation C still requires an authorized representative with knowledge of the data to certify the register’s accuracy and completeness, and the bona fide error defence still depends on “procedures reasonably adapted to avoid such an error”. An AI check is one of those procedures, not a substitute for the person who signs.

The supervisors’ own use is the closest precedent. The GAO found that NCUA, the CFTC and the Federal Reserve use AI to help detect errors or outliers in data submitted by financial institutions; NCUA predicts Call Report values, flags those outside the predicted range and asks the credit union to review and correct them. That is the pattern this page describes, pointed the other way: the lender’s agents flag, the lender’s people decide.

The expectations come from existing frameworks rather than an AI rule. The Treasury’s 2024 report recommends that firms check AI use cases “for compliance with existing laws and regulations before deployment” and periodically re-evaluate them. In May 2026 the Federal Reserve’s Vice Chair for Supervision said banks “are relying on existing risk-management frameworks to guide their use of AI”, and that the Fed, OCC and FDIC had amended their model risk guidance to clarify that it does not apply to generative or agentic AI. For an HMDA check, that puts the weight on outcome testing the bank designs itself, set out in how to validate an AI model that checks HMDA data.

The register reader: which HMDA fields apply to this application

The register reader decides what “every field” means for each application before anything is compared. It reads new and changed applications nightly from the mortgage and commercial origination systems, one row per application, and builds each row in the federal filing format.

The number of fields that apply depends on what happened to the application. In the solution’s sample register, a denied purchase carries 86 applicable fields, an originated loan 94 and a withdrawal 61. A denial has no rate spread to report; a withdrawal has no property value relied on. Getting this wrong in either direction is costly: checking a field that does not apply produces false breaks, and skipping one that does leaves an error for the examiner to find.

Its limit is the simplest of the six and the one an IT architect asks about first: it is read-only on the origination systems. It never writes back to the loan origination system, and nothing downstream does either. Corrections live on the register, signed by a person, and a finding about the upstream process goes to the people who own it.

The loan file reader: a source page for every field, or “no source”

The loan file reader finds, for each field, the one document and page that is the source of truth, and extracts the value exactly as it appears there. That is most of the manual work it replaces: the hours a reviewer spends opening loan files in several systems to find the right page.

Take a sample application from the solution’s fictional lender, Kestrel Valley Bank: Marcus and Dana Ellery’s $412,000 home purchase, denied for debt-to-income. The loan file reader opened 31 documents and 212 pages and found a source page for all 86 applicable fields. The sources it works from are the ones an examiner would pull: the application, the credit decision, the adverse action notice, the Closing Disclosure, the appraisal, the rate lock, the underwriter’s income worksheet, the demographic addendum and, for small-business applications, the tax return. Which page each field comes from is set out field by field in the map of HMDA key fields to their source documents.

The choice of page is often the whole question. Income is the gross annual income the lender relied on, so its source is the underwriter’s worksheet, not the application. The action taken date for a denial is, under this bank’s procedure, the date on the adverse action notice, not the date a status changed in the origination system. Property value comes from the appraisal, not the purchase contract.

Its limit: it never guesses. When it cannot find a value, the field is marked “no source” and goes to a person as a gap, which is itself a finding, because a field with no support in the file is one the examiner cannot verify either.

All 86 fields on one denied application, each with the document it was checked against

A dialog titled All 86 fields, Marcus and Dana Ellery, listing each field with its register value, its source document and a result: action taken date breaks against the adverse action notice, application date is within tolerance against the loan application, and the other fields shown match.
Sample lender Kestrel Valley Bank (fictional data). The list proves the check covers every applicable field, not only the ones that fail: action taken is checked against the credit decision, denial reason and action taken date against the adverse action notice, loan type and purpose against the application.

The rate spread and geocode checker: recompute, don’t trust

Two HMDA fields cannot be checked by looking them up, because no page in the file holds the right answer: rate spread and census tract. The checker recomputes both and hands the matcher a value to compare.

Rate spread under Regulation C is the difference between the loan’s APR and the average prime offer rate (APOR) for a comparable transaction as of the date the rate was set. The common errors are mechanical: the adjustable-rate APOR table used for a fixed loan, or the application date used instead of the lock date. The checker takes the APR and the lock date from the file, picks the table for the loan type, and recomputes. Its limit is a rule of the regulation itself: it never reports a rate spread where Regulation C says NA, as for the Ellery denial.

Census tract is geocoded from the property address and compared with the register. The usual failure is a tract taken from a prior census vintage. Regulation C treats an incorrect tract as a bona fide error only if the institution maintains procedures reasonably adapted to avoid it (12 CFR 1003.6(b)(2)), so a recorded, independent geocode on every application is the procedure, not an extra. The Ellery address resolves to tract 42041011802, which matches.

The field matcher: FFIEC tolerances and your HMDA procedure as rules

The field matcher compares each register value with its source and decides one of three things: match, difference within tolerance, or break. It is the only agent that judges, and it judges by written rules: the examiners’ tolerances and the bank’s own HMDA procedure.

The tolerances come from the transaction testing guidelines. They list four allowances, and every other field must agree exactly. The matcher applies them as the examiner would, which matters in both directions: a one-day difference in the application date is not an error and should not consume a reviewer’s time, while a seven-day difference in the action taken date is, however reasonable it looks.

The FFIEC tolerances, written as the field matcher’s rules

What the examiner allowsHow the matcher applies it
Application date

What the examiner allows: Three calendar days or less.

How the matcher applies it: Up to 3 days is closed with a note and not counted. The bank can tighten it, never loosen it.

Action taken date

What the examiner allows: Three calendar days or less, provided the data does not land in the wrong calendar year.

How the matcher applies it: Same 3 days, and a difference that crosses a year end is a break whatever its size.

Loan amount

What the examiner allows: One thousand dollars or less.

How the matcher applies it: Up to $1,000 is within tolerance; anything more is a break.

Income relied on

What the examiner allows: Rounding errors to the nearest thousand only.

How the matcher applies it: Rounding is tolerated. A different income relied on (a bonus the underwriter excluded) is a break.

Rate spread, ethnicity, race, sex, denial reasons and the rest

What the examiner allows: No tolerance listed.

How the matcher applies it: Exact match required.

Source: FFIEC HMDA Examiner Transaction Testing Guidelines, paragraph 9

The bank’s procedure supplies the rest. Kestrel Valley’s sample procedure says a denial is reported on the date of the adverse action notice, that income is the gross income relied on from the underwriting worksheet, and that rate spread is recomputed from the lock date. Each is a setting the bank owns, each change applies from the next run, and each is kept as a new version of the rules, so an examiner can see which rule a given break was judged under. The tolerances can only be tightened; the screen refuses anything looser than the examiners allow.

The matcher’s rules are the bank’s settings, and the examiners’ tolerances are a ceiling

The Settings screen: a Tolerances panel marked FFIEC transaction testing, may only be tightened, with 3 days for application and action taken dates, $1,000 for loan amount, rounding for income and exact for rate spread, demographics and denial reasons; a panel of where each field comes from under HMDA procedure v7; the sign-off chain; and a message reading 3 days is the examiners’ tolerance, it can only be tightened.
Sample lender (fictional people). Left, the tolerances; right, where each field comes from under the bank’s procedure; below, who signs corrections, who confirms demographic changes and who signs off before filing.

When a field breaks, the matcher writes it up so that a person can decide in one look, without reopening the file.

What every break carries when it reaches a person

  1. The register value

    What the LAR says now, as entered.

  2. The loan file value

    What the source page says, exactly as printed there.

  3. The difference

    In days, dollars or categories, set against the tolerance for that field.

  4. The rule

    The line of Regulation C, the FFIEC guideline or the bank’s procedure that decides it.

  5. The page

    The document and page, opened beside the break with the value highlighted.

  6. A likely cause

    Why the two differ, where the file shows it: a bonus excluded, a status date used for a decision date.

One break, written up: $148,000 on the register, $135,000 relied on

A break panel for Income in thousands: register 148 as entered, loan file 135 from the underwriting income worksheet, $13,000 apart with a tolerance of rounding only, an explanation that the underwriter excluded a $13,000 bonus with under two years of history, the Regulation C rule, and buttons Correct to 135, Keep register value and Open page.
Sample application (fictional data). The 47% debt-to-income on the register already used $135,000; the income field did not. The matcher proposes nothing on its own: the buttons belong to the data manager.

The matcher’s limit is that it never edits. It can say the register is wrong and show why; it cannot change a value. Across the sample lender’s third quarter, 1,846 applications produced 214 breaks: 37 were differences within tolerance, closed with a note, and 177 needed a person.

The filing edit runner and the error-rate monitor: valid is not accurate

A register can pass every FFIEC filing edit and still fail transaction testing, because the edits check the register against itself and the examiner checks it against the file. The last two agents cover both: one runs the edits, the other measures what the file check found.

The filing edit runner

The 2026 Filing Instructions Guide defines four types of edit. Syntactical edits check format and filing year; validity edits check that each field holds a valid value; both must be fixed before the register can be submitted. Quality edits flag values that are unusual for a field or a combination of fields, and macro-quality edits flag a register whose overall pattern is unusual; for both, the filer either corrects the values or confirms they are accurate. The runner runs all four on the corrected register and drafts the explanations.

Quality edits are where a person’s confirmation matters, since the value is often true. On the sample register all 5,318 lines passed the syntactical and validity edits, macro-quality passed, and three quality edits needed a person: an applicant aged 92, a 7.12 rate spread on a second-lien home equity loan, and a $1,640,000 loan on a one-to-four-unit property. Each was confirmed against its page. The runner’s limit is that it never files: the register goes to the compliance testing manager for sign-off, and a person submits it.

The edits run on the corrected register; the unusual-but-true values are confirmed by a person

A Filing edits card: syntactical edits 0 failed, validity edits 5,318 records 0 failed, quality edits 3 to confirm, macro-quality edits passed, waiting for Glen Whitaker for register sign-off before filing, then three confirmed quality edits (applicant age above 90, rate spread above 6.5 points, loan amount above $1.5 million on 1 to 4 units) and a button Send to Glen Whitaker for sign-off.
Sample register, 5,318 applications (fictional data). Each confirmed quality edit names the page that supports it. The last step is a person: register sign-off before filing.

The error-rate monitor

The monitor counts errors as first entered, before anyone corrected them, by field, branch and loan officer, and turns those counts into the question an examiner’s sample will answer: would 79 randomly drawn applications contain four errors in any one field? On the sample register as first entered, the screen’s cautious estimate is 37 in 100, which counts every field across all 79 files; run through the examiner’s full two-stage rule, it is about 29 in 100. How both are computed from the published sample sizes and thresholds is the subject of how examiners test HMDA data.

Which fields would trigger a resubmission: the monitor’s estimate on the sample register

Any field
37 in 100
Income
23 in 100
Action taken date
12 in 100
Rate spread
4 in 100
Ethnicity, race, sex
1 in 100
Our estimate, computed on the fictional sample register as first entered: the chance that a 79-application exam sample finds four or more errors in a field (501 to 100,000 lines tier). It is a model of a sample register, not a measured result.Source: Sample sizes and thresholds: FFIEC Transaction Testing Guidelines

The monitor also looks for causes, under its own limit: it never names a cause without the applications behind it. On the sample register, one branch carried 41 of the year’s 127 action-taken-date errors, and in 38 of those 41 the register held the date the file was moved to a Suspended status, four to twelve days before the credit decision. The finding went to that branch’s loan operations lead with all 41 applications attached. The guidelines give examiners the power to direct changes to procedures for errors capable of repetition even below the resubmission threshold, so a cause found and fixed before the exam is worth more than the corrections themselves. The branch case is told in full in the root-cause case study.

The line no agent crosses: read-only, no edits, no filing

Each agent has one limit of its own, and three limits bind all six: no agent changes a value on the register, confirms a demographic correction, or signs off the register for filing. Those are the decisions an examiner holds a named person accountable for, so they stay with named people.

Each agent’s own limit, and the three all six share

Limits matrix: six HMDA validation agents and the action each is forbidden to takeThe register reader may not write to the origination system. The loan file reader may not supply a value the file does not show. The rate spread and geocode checker may not report a rate spread where Regulation C says NA. The field matcher may not count a difference inside tolerance as an error. The filing edit runner may not submit the register. The error-rate monitor may not name a cause without the applications behind it. None of the six may change a value on the register, confirm an ethnicity, race or sex correction, or sign off the register for filing.Register readerLoan file readerSpread & geocodeField matcherFiling edit runnerError-rate monitorITS OWN LIMITWrite to the originationsystem it reads fromSupply a value the filedoes not showReport a spread whereRegulation C says NACount a within-tolerancedifference as an errorSubmit the registerName a cause without theapplications behind itALL SIX: ONLY A PERSON MAYChange a value onthe registerConfirm a correction toethnicity, race or sexSign off the registerfor filingforbiddennot its job
A filled mark means the agent is forbidden to do it. The shared band is the authority boundary: agents find, compare and draft; people correct, confirm and sign.

The decisions people keep are concrete. The HMDA data manager either corrects a break and signs it with a reason, or keeps the register value and signs a reason for that, such as “the document is wrong, a corrected copy is requested”; a kept value is shown to the compliance testing manager at sign-off. Every correction keeps its before, after, evidence page, reason, signer and time, and the list exports for the examiner.

Demographic fields get a second person for a reason the enforcement record makes plain. In 2023 the CFPB ordered Bank of America to pay a $12,000,000 civil money penalty after finding that some loan officers recorded “information not provided” without asking applicants for their race, ethnicity and sex. Those fields are what fair-lending analysis of HMDA data rests on, so no correction to ethnicity, race or sex stands until a second reviewer confirms it.

For an architecture review, two further properties matter. The register reader is read-only on the origination systems, and a register value changes only through a correction a named person signs with a reason. And agent findings and human decisions are recorded separately, so the audit trail can always say which a given change was.

One HMDA application’s run, step by step

Followed end to end, the Ellery application shows how the six divide the work and where it stops for a person. The run reads the row, opens the file, recomputes, matches, and then waits.

One denied purchase through the agents: the Ellery application

86

fields that apply to a denied purchase

Register reader

31

documents, 212 pages, opened

Loan file reader

0

fields left without a source page

Loan file reader

2

breaks; 83 match, 1 within tolerance

Field matcher

Sample application from a fictional lender’s register. Rate spread was NA for a denial and the address geocoded to tract 42041011802, both matching the register.

The two breaks are the instructive part. The register holds 03/14/2026 as the action taken date: the day the origination system moved the file to Suspended for missing conditions. The credit decision was signed on 03/20 and the adverse action notice is dated 03/21/2026. Seven days is outside the tolerance, and the bank’s procedure reports a denial on the notice date, so the matcher breaks the line and cites both the procedure and the notice page. The income break is the bonus: $148,000 on the register, $135,000 relied on by the underwriter.

Neither break is corrected by an agent. The data manager opens each, reads the page, corrects both and signs each with a reason; the application is then clean, and the quarter’s open breaks fall from 48 to 46. The application date, one day off the signed application, never reached her at all.

The run log ends where the agents’ authority does: “waiting for” a named person

A panel titled Run on this record listing each agent’s step on the Ellery application: register reader, 86 fields apply to a denied purchase; loan file reader, 31 documents, 212 pages, a source page for 86 of 86 fields; rate spread and geocode checker, rate spread NA for a denial, address in tract 42041011802; field matcher, 83 fields match; action taken date breaks, register 03/14, adverse action notice 03/21, 7 days; income breaks, register $148,000, income worksheet $135,000; and finally waiting for Renata Okafor, 2 corrections to sign.

Read the last line. The run does not end in “corrected”; it ends with two corrections waiting for the data manager’s signature.

Sample application (fictional data). Each step names the agent that took it and what it found; the timings beside the steps are illustrative and not a speed claim.

What should a bank ask before using AI for HMDA compliance?

Ask how each way an AI check can fail is caught, because the failures are specific and each one has a control a vendor can show. A general claim of accuracy answers none of them. The table pairs the five failure modes we see in this work with the control that answers each, and with what to ask to see on one of your own records.

Five ways AI for HMDA compliance can fail, and the control that answers each

FailureWhat it looks likeThe controlAsk to see
A plausible value from the wrong pageIncome taken from the application because the worksheet was not found; the check passes on the wrong evidence.The reader names one source page per field from your procedure, or marks the field “no source”.A field with no source page, and where it went.
A looser tolerance than the examiner’sA four-day date difference closed as acceptable; errors that count are hidden.Tolerances fixed at the FFIEC limits, tightenable only, each change a new rule version.An attempt to loosen one, refused.
A value changed without a personThe register quietly “fixed”; no one can say who decided or why.Agents have no write access; only a signed correction with a reason changes a value.The corrections list for one record.
A cause named without evidenceA branch or officer blamed on a pattern no one can check.Root-cause findings carry the records behind them.A finding, with its records opened.
Silent driftA new document template or model version and detection falls, unnoticed.Re-measured recall on seeded errors each quarter, and on any change.Last quarter’s seeded-error result.
Our classification of failure modes in AI-assisted HMDA review, with the controls HMDA and 1071 Data Validation uses. The same questions apply to any product.

Two limits belong in the answer as well, because no AI removes them. A field check sees only the records it is given, so applications that never reached the register still need reconciling against the pipeline. And where a fact was never written down, such as a demographic question that was not asked on a phone call, no page in the file can settle it: the control there is monitoring how often each officer records “not provided”, which the error-rate monitor counts by officer and branch.

The same agents run, unchanged in shape, on a practice register for Section 1071 small-business lending, whose compliance date under the CFPB’s revised rule is 1 January 2028. There the loan file reader’s critical page is often a business tax return, because verified gross annual revenue decides whether an application is covered at all; the practice register is covered in Section 1071 readiness under the 2026 rule.

Questions people ask

Does the AI change our HMDA data?

No agent changes the register or the origination system. A register value changes only through a correction a named person signs with a reason; otherwise the value is kept with a signed reason.

What happens when the agent cannot find a value in the loan file?

The field is marked “no source” and routed to a person. The loan file reader is not permitted to infer a value from elsewhere in the file, because a field the file cannot support is one an examiner cannot verify.

How do we know the agents are finding the errors?

By testing them the way model risk would test any model: seeded errors, measured detection and false alarms, and a check of source coverage. That framework is set out in how to measure HMDA validation accuracy.

Does checking every field replace the pre-filing edits?

No; it runs them too. The FFIEC edits prove the register is internally consistent and are required to submit, but they do not compare a value with the loan file, which is what an examiner does.

Will AI replace the HMDA data manager?

No; it changes the job from finding errors to deciding them. In the sample quarter the agents raised 214 breaks on 1,846 applications and closed 37 as within tolerance; the other 177 needed a person to correct and sign, or to keep the value with a reason. The certification, the demographic second review and the sign-off stay with named people.

What does an AI HMDA check need from the bank?

Three things it already has: the written HMDA procedure, a read-only register extract from the origination systems, and access to the loan files. The procedure matters most, because each rule that decides a reported value, such as which date a denial is reported on, becomes a setting the matcher cites in every break. The sequence is in our HMDA reporting software buyer’s plan.

HMDA and 1071 Data Validation.
See it on your own files.

An agentic solution from Botminds. Every HMDA field, and from 2028 every small-business 1071 field, checked against the loan file before it is filed. Book a demo, or explore how it works.