The Stack That Looks Right and Operates Wrong
The sensible-looking way to build a mortgage AI stack is to buy the best tool for each job. The best document-extraction engine, the best income-analysis tool, the best conditions engine, the best pre-close QC product, each one chosen on its own merits. On a feature comparison this wins every time, because every box is filled by the strongest option in its category. Then it goes into production and the operation gets slower in a way the feature comparison never predicted, and the reason is not any one tool. It is what lives in the gaps between them.
Each of those tools keeps its own copy of the loan. The extraction tool has its version of the borrower's income figure. The income tool has its own. The QC tool reads a third copy out of the loan origination system. None of them is wrong on its own terms, and they do not agree, because they were populated at different moments from different inputs by systems that cannot see each other. The work of making them agree does not belong to any vendor. It falls to your staff, and it is the cost nobody put on the purchase order.
Reconciliation Is the Tax You Pay Per File, Forever
The reconciliation tax is easy to miss because it does not look like technology cost. It looks like a processor spending twenty minutes confirming that the income number the extraction tool pulled matches the one the income tool calculated matches the one now sitting in the loan origination system. It looks like a QC reviewer re-keying a figure because the QC tool could not read it from the system the income tool wrote to. It looks like a closing team catching, by hand, that a fee moved in one system and did not carry to another. Every one of those is a person doing the integration the stack did not do, and it happens on every file, which makes it the most expensive kind of cost, the kind that scales linearly with volume and never goes away.
The deeper problem is that reconciliation done by hand is reconciliation done on a sample of attention. A processor confirms the figures they think to check and trusts the ones they do not, so the mismatches that matter are the ones nobody looked at. A stack that requires manual reconciliation is a stack that is wrong in exactly the places the humans ran out of time to verify, and in a mortgage those places have names: a qualifying income that disagrees between two systems is a credit-decision input that is wrong somewhere, and a fee that carried in one system and not another is a disclosure that is about to be inaccurate.
When the Systems Disagree, HMDA Does Not Care Whose Fault It Is
The point where the fractured stack stops being an efficiency problem and starts being a regulatory one is reporting. The loan application register a lender files under HMDA has to be accurate, and the data fields it requires, action taken, rate spread, the pricing and underwriting data, are compiled from the same systems that disagree with each other, under Regulation C at 12 CFR 1003.4. When the extraction tool, the income tool, and the loan origination system hold three versions of a figure, the number that lands on the LAR is whichever one the reporting process happened to read, and if that is not the number the decision was actually made on, the register is wrong.
That is not a theoretical exposure. HMDA data is examined against a resubmission standard, and error rates above the threshold the FFIEC and CFPB apply force a lender to scrub and refile the register, which is expensive and visible. A stack that holds multiple unreconciled copies of a loan is a stack with a structural HMDA-integrity problem, because the data flowing into the LAR was never guaranteed to be the data the loan was decided on. The lender that files clean is the one where there is one authoritative version of each figure, and a stack of best-of-breed tools is, by construction, the opposite of that.
The Audit Trail You Cannot Assemble From Eight Logs
The second regulatory failure of the fractured stack is the one that surfaces at an exam or in a fair-lending review, and it is worse because you cannot fix it after the fact. When a supervisor asks how a specific decision was made on a specific loan, the answer has to be a single coherent record: what the file said, what rule applied, what the system concluded, and why. In a best-of-breed stack that record does not exist in one place. The extraction tool logged what it read. The income tool logged what it calculated. The QC tool logged what it flagged. The decision that tied them together happened in a human's head or across a handoff that nobody logged, and reconstructing it means stitching eight vendors' logs into a story after the question is already being asked.
Fair-lending testing makes this sharper, because the question there is not about one loan, it is whether similar borrowers were treated similarly across the whole book. Answering it requires a consistent, queryable record of how every decision was made, and a stack that scatters the decision across eight systems cannot produce one. You end up testing what you can assemble rather than what actually happened, which is a weaker position than having no automation at all, because now the gaps are inside systems you were told would help. SR 11-7, the model-risk guidance from the Federal Reserve and the OCC, is explicit that data quality and integrity are part of governing a model, and a decision assembled from models that each hold their own copy of the inputs is a decision whose data lineage no one can fully attest to.
Shared State Is the Thing You Are Actually Buying
The alternative is not a worse tool in each box. It is one live model of the loan that every function reads from and writes to, so there is exactly one version of the income figure, one version of each condition and its state, one version of each fee and the clock it runs against. A condition created by underwriting is visible to the document function in the same instant, because there is only one of it. There is no reconciliation step because there is nothing to reconcile, and there is no stitching of logs at exam time because every action wrote to the same record with its reasoning and its citation attached.
This is the part of the architecture that does not show up on a feature comparison and decides whether the operation actually gets faster. Shared state removes the per-file reconciliation tax, gives HMDA one authoritative figure to report, and produces the single coherent decision record an examiner and a fair-lending test both need. The individual functions still have to be good, a shared model of a loan full of bad extractions is not an improvement, but good functions on a shared model are a different class of system from good functions on eight private copies, because the second one makes you pay, on every file, for the integration it left undone.
The Trade You Are Really Making
Best-of-breed is a real strategy and it is the right one in domains where the tools do not have to agree about a shared object. A mortgage is not that domain. The tools are all describing the same loan, and the moment they each keep their own description, the lender inherits the job of making the descriptions match and the exposure when they do not. The license fees were never the cost. The cost was the reconciliation work on every file and the regulatory records you could not assemble because no system held the whole decision.
At Sei we built on one live model of the loan rather than a set of tools precisely because the regulated version of this problem is not about feature strength, it is about whether there is a single authoritative version of the loan that reporting and audit can rest on. A lender weighing a stack of point solutions should price the integration tax and the fractured audit trail into the comparison, because those are the two costs that do not appear on the quote and the two that an examiner eventually does. The question that decides the buy is not which tool is best in its box. It is whether, after you assemble them, there is one loan or eight.

Ramkumar Venkataraman
CTO & Co-Founder