When you a parse job is initiated, LendPathway runs a multi-step pipeline that turns raw PDFs into structured, analyzed financial data. This page explains exactly what happens at each step.
All uploaded files are pulled from storage. Only PDF files are accepted — any other file type (images, spreadsheets, Word docs, etc.) is immediately marked as failed.
Each PDF is sent to an AI model that reads the document and identifies what kind of financial document it is. Classification runs in parallel — all PDFs are classified at the same time.The classifier can identify these document types:
Documents that don’t match any type are marked Unsupported.
Of these, four have full parsing pipelines: Bank Statement, Credit Report, Tax Form, and Loan Application. The others (Receipt, Photo ID, Voided Check, etc.) are classified and stored but not parsed further.
Based on classification, LendPathway runs the appropriate parser for each document type — in parallel. If you upload a mix of bank statements, a credit report, and a loan application, all three pipelines run simultaneously.
Account ledgers — every distinct bank account across all documents (account name, account number, bank name, routing number)
Each account is assigned a unique ID. This step establishes the map of accounts that the rest of the pipeline uses.If no bank accounts are found at all, the parse fails here.After this step, two things happen immediately:
The book name is updated to the extracted business name
AI Deep Research is kicked off in the background (more on this below)
Only runs when there are 2 or more bank statement PDFs.The AI compares all statements and identifies redundant documents — complete duplicates or documents that are subsets of another (e.g. someone uploaded both a full 3-page statement and a 1-page summary of the same month). Redundant documents are marked as failed and removed before transaction extraction, preventing double-counted data.
For each remaining statement (in parallel), the AI extracts every individual transaction:
Date
Description
Amount
Type (credit or debit)
This is the most computationally intensive step. If a document is too large for a single extraction call (hits token limits), LendPathway automatically falls back to chunked extraction — pulling transactions in batches of ~100 at a time, up to 20 chunks, and merging the results. Each chunk receives context about where the previous chunk left off to avoid gaps.
The extracted metadata and transactions are merged together into ledgers. A ledger is one account’s data within one statement document — its starting balance, ending balance, and list of transactions. A single PDF can produce multiple ledgers if it contains multiple accounts.
After assembly, LendPathway reconciles each ledger independently (all ledgers in parallel). This is the mathematical verification step.The formula:Starting Balance + Sum of All Credits − Sum of All Debits = Computed Ending BalanceThe computed ending balance is compared against the ending balance printed on the statement. If they match, the ledger is reconciled — meaning the extracted transactions are a mathematically faithful representation of the bank’s own records.If it doesn’t reconcile on the first check, LendPathway enters a retry loop (up to 3 attempts). On each attempt, the AI receives:
The original PDF (ground truth)
The current list of extracted transactions as a CSV
The current discrepancy amount and direction (too high or too low)
If the statement has multiple accounts, a note about which account is being reconciled
The AI compares the extracted transactions against the PDF and can make three types of corrections:
Flip a transaction’s type — if a credit was mistakenly extracted as a debit (or vice versa), flip it
Remove a transaction — if a duplicate or nonexistent transaction was extracted
Add a missing transaction — if a transaction visible in the PDF wasn’t extracted
The AI is instructed to only make corrections it can clearly verify in the PDF. It will never fabricate transactions to force the math to work. If the extraction looks correct but the math still doesn’t add up (e.g. the bank’s own statement has an internal discrepancy), the AI gives up and explains why.After corrections are applied, the balance is rechecked. If it’s within $0.05, the ledger is reconciled. If not, the next attempt runs. After 3 failed attempts (or if the AI gives up), the ledger is marked not reconciled with an explanation of what went wrong.Reconciliation is skipped entirely if the starting or ending balance couldn’t be extracted from the statement.
After reconciliation, all transactions across all ledgers are assigned a global sequential ID (1, 2, 3, …) and then tagged. Tagging runs three parallel processes simultaneously:AI Loan Tagging — The AI classifies transaction groups into debt/loan types:
Tag
Display Name
merchant_cash_advance
Merchant Cash Advance
bank_loan
Bank Loan
factoring
Factoring
credit
Credit Card
lease
Lease
auto
Auto Loan
mortgage
Mortgage
buy_now_pay_later
Buy Now Pay Later
debt_collection
Debt Collection
Each transaction can have at most one loan tag.AI Core Tagging — The AI classifies transaction groups into activity categories. The AI receives business identity and account context to make accurate calls (e.g. knowing the business name helps identify internal transfers vs external payments):
Tag
Display Name
internal_transfer
Internal Transfer
owner_transaction
Owner Transaction
payment_processor
Payment Processor
bank_fee
Bank Fee
bank_interest
Bank Interest
reversal
Reversal
cash
Cash
A transaction can have multiple core tags.Deterministic Pattern Tagging — Rule-based regex matching (no AI involved) that identifies:
Tag
Display Name
check
Check
wire
Wire
peer_to_peer
P2P
stop_payment
Stop Payment
nsf
NSF
overdraft
Overdraft
NSF and overdraft tags are only applied to debits. A transaction can have multiple deterministic tags.All three tag types are then merged onto each transaction: loan tag first (if any), then core tags, then deterministic tags.
Positions are detected from the loan-tagged transactions. There are two methods depending on loan type:MCA Positions (AI-based) — For Merchant Cash Advance transactions, an AI model matches transaction groups to known funders from your org’s funder registry. Each position gets a funder name, loan type, and the set of transaction IDs that belong to it. Funders from your registry include metadata like favicon, contact info, and website.Other Loan Positions (algorithmic) — For all other loan types (Bank Loan, Factoring, Auto, Lease, Mortgage, Debt Collection, Buy Now Pay Later), positions are detected using text similarity clustering. Transaction descriptions are compared using TF-IDF (a text similarity algorithm) and grouped into clusters. Each cluster becomes a position.
Two background tasks run during the pipeline and are collected at the end:AI Deep Research — Started immediately after account metadata extraction (Step 1). Uses the extracted business name, address, phone, and principal names to search the web and verify the business’s legitimacy. Runs in the background during the entire rest of the pipeline. The result is the “AI Deep Research” card on the Bank Statements tab.Tampering Analysis — Started after reconciliation (Step 6). Examines the PDF metadata of every uploaded document — producer, creator application, creation dates, modification dates — and looks for signs of fabrication or programmatic generation (e.g. all PDFs having identical metadata, timestamps that are impossibly close together, or creation tools not typically used by banks). Runs in the background during tagging and position detection. The result is the “Tampering Analysis” card on the Bank Statements tab.Both tasks are best-effort. If either one fails, the parse still completes normally.
Book — A container for one deal or submission. A book holds one or more uploaded documents and the parsed results. When you upload files and click Parse, you’re parsing a book.Document — A single uploaded PDF file. Gets classified into a document type (bank statement, credit report, etc.) during parsing.Ledger — One bank account within one statement period. A single PDF can produce multiple ledgers if it contains data for multiple accounts. Each ledger has a starting balance, ending balance, and a list of transactions. Reconciliation happens at the ledger level — each ledger is independently verified.Account — A bank account that spans across statement periods. After parsing, LendPathway merges all ledgers for the same account into a single unified transaction history. If you upload 12 monthly statements for the same checking account, you get 12 ledgers but 1 account.Position — A detected debt relationship with a specific lender. For example, if the parser identifies regular payments to “Prime Funding LLC,” it creates a position grouping those transactions together with a funder name, loan type, total disbursed, and total paid.Tag — A label applied to a transaction that identifies what type of activity it represents. Tags are applied automatically during parsing and can be manually edited afterward. A transaction can have multiple tags (e.g. a wire payment to a lender could be tagged both “Wire” and “Merchant Cash Advance”).Reconciliation — The process of mathematically verifying that extracted transactions match the bank’s own records. Starting balance plus the sum of all transaction amounts should equal the ending balance. A reconciled ledger means the data is accurate to within $0.05 of what the bank reported.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Pathway","colors":{"primary":"#18181B","light":"#71717A","dark":"#09090B"},"logo":{"light":"https://mintcdn.com/pathwaysystemsllc/EqTVwzDE0uyQObpe/logo/Full_Logo_WhiteBG_LP.svg?fit=max\u0026auto=format\u0026n=EqTVwzDE0uyQObpe\u0026q=85\u0026s=6678212a7b7c4cf56b3d288b3dd33864","dark":"https://mintcdn.com/pathwaysystemsllc/EqTVwzDE0uyQObpe/logo/Full_Logo_DarkBG_LP.svg?fit=max\u0026auto=format\u0026n=EqTVwzDE0uyQObpe\u0026q=85\u0026s=9274e43a6e1063a160478f2847bcd673"},"favicon":"https://mintcdn.com/pathwaysystemsllc/EqTVwzDE0uyQObpe/logo.png?fit=max\u0026auto=format\u0026n=EqTVwzDE0uyQObpe\u0026q=85\u0026s=111e1969b99bae33ba05c7ca49274195","background":{},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Open App","href":"https://app.lendpathway.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/lendpathway"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"pathwaysystemsllc","hasAudioNarration":false,"actualSubdomain":"pathwaysystemsllc","customDomains":["docs.lendpathway.com"],"gitSource":{"type":"github","owner":"lend-pathway","repo":"jack","deployBranch":"staging","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad859efdbb4b0101ca365b0","collectionId":"c8402bf9-7d93-420f-adbc-327490bba712","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad859efdbb4b0101ca365b0"},"entitlements":{},"buildId":"6ad859efdbb4b0101ca365b0","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Documentation","count":19},{"language":"default","tag":"API Reference","count":14},{"language":"default","tag":"Platform","count":10},{"language":"default","tag":"Endpoints","count":7},{"language":"default","tag":"Changelog","count":6},{"language":"default","tag":"Cookbook","count":4},{"language":"default","tag":"Overview","count":3},{"language":"default","tag":"Books","count":2},{"language":"default","tag":"Getting started","count":2},{"language":"default","tag":"Parser","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"how-parsing-works","slug":"/how-parsing-works","pageMetadata":{"title":"How Parsing Works","icon":"lightbulb","description":null,"href":"/how-parsing-works"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,OptimizedImage,Table,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`When you a parse job is initiated, LendPathway runs a multi-step pipeline that turns raw PDFs into structured, analyzed financial data. This page explains exactly what happens at each step.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-pipeline`,children:_jsx(_components.strong,{children:`The Pipeline`})}),`\n`,_jsx(_components.p,{children:`Every parse follows this sequence:`}),`\n`,_jsx(Heading,{level:`3`,id:`1-load-documents`,children:_jsx(_components.strong,{children:`1. Load Documents`})}),`\n`,_jsxs(_components.p,{children:[`All uploaded files are pulled from storage. Only `,_jsx(_components.strong,{children:`PDF files`}),` are accepted — any other file type (images, spreadsheets, Word docs, etc.) is immediately marked as failed.`]}),`\n`,_jsx(Heading,{level:`3`,id:`2-classify-each-document`,children:_jsx(_components.strong,{children:`2. Classify Each Document`})}),`\n`,_jsxs(_components.p,{children:[`Each PDF is sent to an AI model that reads the document and identifies what kind of financial document it is. Classification runs `,_jsx(_components.strong,{children:`in parallel`}),` — all PDFs are classified at the same time.`]}),`\n`,_jsx(_components.p,{children:`The classifier can identify these document types:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Type`}),_jsx(_components.th,{style:{textAlign:`left`},children:`What it looks for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Bank Statement`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Transactions, deposits, withdrawals, account balances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Credit Report`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Experian / Equifax / TransUnion, credit scores, tradelines`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Tax Form`}),_jsx(_components.td,{style:{textAlign:`left`},children:`IRS forms (1040, 1065, 1120, 1120-S, Schedule C, Schedule E, K-1, etc.)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Loan Application`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Application form for financing`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Receipt`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Purchase receipt, business expense`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`DecisionLogic`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Report from `,_jsx(_components.a,{href:`http://decisionlogic.com`,children:`decisionlogic.com`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`AR Report`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Accounts receivable report`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Photo ID`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Government-issued ID (driver’s license, passport)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Voided Check`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Bank check showing account details`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Documents that don’t match any type are marked `,_jsx(_components.strong,{children:`Unsupported`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`Of these, four have full parsing pipelines: `,_jsx(_components.strong,{children:`Bank Statement`}),`, `,_jsx(_components.strong,{children:`Credit Report`}),`, `,_jsx(_components.strong,{children:`Tax Form`}),`, and `,_jsx(_components.strong,{children:`Loan Application`}),`. The others (Receipt, Photo ID, Voided Check, etc.) are classified and stored but not parsed further.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-run-type-specific-pipelines`,children:_jsx(_components.strong,{children:`3. Run Type-Specific Pipelines`})}),`\n`,_jsxs(_components.p,{children:[`Based on classification, LendPathway runs the appropriate parser for each document type — `,_jsx(_components.strong,{children:`in parallel`}),`. If you upload a mix of bank statements, a credit report, and a loan application, all three pipelines run simultaneously.`]}),`\n`,_jsxs(Frame,{caption:`Document Classification`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=b0d9e5e16d3417a7b640cda9b5d42a1b`,alt:`Screenshot2026 03 08at5 16 16AM`,title:`Screenshot2026 03 08at5 16 16AM`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`3414`,width:`3414`,\"data-og-height\":`1966`,height:`1966`,\"data-path\":`images/Screenshot2026-03-08at5.16.16AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=05b6b13c4679316ad8144327b8ba8814 280w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=f87f270cbce6ea6f8af98da17c1f880e 560w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=e0dd519cfe1c7b999806e0f3c561edc5 840w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=71a817fcb073c4c40e990b3a94cc140b 1100w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=956cd74a627b754852c65ed34dab67d4 1650w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.16.16AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=18aa973b271b5fa554302066b3a39c14 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=8095560951be6216050c757a1c8b4fac`,alt:`Screenshot2026 03 08at5 16 16AM`,title:`Screenshot2026 03 08at5 16 16AM`,className:`dark:mint-hidden`,\"data-og-width\":`3420`,width:`3420`,\"data-og-height\":`1968`,height:`1968`,\"data-path\":`images/Screenshot2026-03-08at5.17.18AM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=280\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=ec6e9f8fa21aa02081fd94895856c35e 280w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=560\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=d1971fd9de715f6b6a87e81836a0c16e 560w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=840\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=4742bcc695712d64903384258326b87e 840w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=e6648b78ed0635958c9b80500cfecc4c 1100w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=feb478b328955ab2fb7fd5faa5aa1406 1650w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at5.17.18AM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=3097f94714ce696b218b2dd2e60e10f0 2500w`})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`bank-statement-pipeline`,children:_jsx(_components.strong,{children:`Bank Statement Pipeline`})}),`\n`,_jsx(_components.p,{children:`The bank statement pipeline is the most complex. Here’s what happens inside it, step by step.`}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-—-account-metadata-extraction`,children:_jsx(_components.strong,{children:`Step 1 — Account Metadata Extraction`})}),`\n`,_jsxs(_components.p,{children:[`The AI reads `,_jsx(_components.strong,{children:`all bank statement PDFs together`}),` in a single call and extracts:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Business identity`}),` — business name, address, phone, tax ID`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Principals`}),` — owner names, roles, addresses, phone numbers`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Account ledgers`}),` — every distinct bank account across all documents (account name, account number, bank name, routing number)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Each account is assigned a unique ID. This step establishes the map of accounts that the rest of the pipeline uses.`}),`\n`,_jsx(_components.p,{children:`If no bank accounts are found at all, the parse fails here.`}),`\n`,_jsx(_components.p,{children:`After this step, two things happen immediately:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`book name`}),` is updated to the extracted business name`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`AI Deep Research`}),` is kicked off in the background (more on this below)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-—-statement-metadata-extraction`,children:_jsx(_components.strong,{children:`Step 2 — Statement Metadata Extraction`})}),`\n`,_jsx(_components.p,{children:`For each individual PDF (in parallel), the AI extracts statement-level metadata:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Statement start and end dates`}),`\n`,_jsx(_components.li,{children:`Starting and ending balances, per account`}),`\n`,_jsx(_components.li,{children:`Which accounts appear in this specific document`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This is also where LendPathway figures out the date range for the book (e.g. “3 accounts, Jan 2024 to Dec 2024”).`}),`\n`,_jsx(Heading,{level:`3`,id:`step-3-—-duplicate-detection`,children:_jsx(_components.strong,{children:`Step 3 — Duplicate Detection`})}),`\n`,_jsx(_components.p,{children:`Only runs when there are 2 or more bank statement PDFs.`}),`\n`,_jsxs(_components.p,{children:[`The AI compares all statements and identifies `,_jsx(_components.strong,{children:`redundant documents`}),` — complete duplicates or documents that are subsets of another (e.g. someone uploaded both a full 3-page statement and a 1-page summary of the same month). Redundant documents are marked as failed and removed before transaction extraction, preventing double-counted data.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-4-—-transaction-extraction`,children:_jsx(_components.strong,{children:`Step 4 — Transaction Extraction`})}),`\n`,_jsx(_components.p,{children:`For each remaining statement (in parallel), the AI extracts every individual transaction:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Date`}),`\n`,_jsx(_components.li,{children:`Description`}),`\n`,_jsx(_components.li,{children:`Amount`}),`\n`,_jsx(_components.li,{children:`Type (credit or debit)`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This is the most computationally intensive step. If a document is too large for a single extraction call (hits token limits), LendPathway automatically falls back to `,_jsx(_components.strong,{children:`chunked extraction`}),` — pulling transactions in batches of ~100 at a time, up to 20 chunks, and merging the results. Each chunk receives context about where the previous chunk left off to avoid gaps.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-5-—-assembly`,children:_jsx(_components.strong,{children:`Step 5 — Assembly`})}),`\n`,_jsxs(_components.p,{children:[`The extracted metadata and transactions are merged together into `,_jsx(_components.strong,{children:`ledgers`}),`. A ledger is one account’s data within one statement document — its starting balance, ending balance, and list of transactions. A single PDF can produce multiple ledgers if it contains multiple accounts.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-6-—-reconciliation`,children:_jsx(_components.strong,{children:`Step 6 — Reconciliation`})}),`\n`,_jsx(_components.p,{children:`After assembly, LendPathway reconciles each ledger independently (all ledgers in parallel). This is the mathematical verification step.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`The formula:`})}),`\n`,_jsx(_components.p,{children:`Starting Balance + Sum of All Credits − Sum of All Debits = Computed Ending Balance`}),`\n`,_jsxs(_components.p,{children:[`The computed ending balance is compared against the ending balance printed on the statement. If they match, the ledger is `,_jsx(_components.strong,{children:`reconciled`}),` — meaning the extracted transactions are a mathematically faithful representation of the bank’s own records.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`If it doesn’t reconcile on the first check`}),`, LendPathway enters a retry loop (up to `,_jsx(_components.strong,{children:`3 attempts`}),`). On each attempt, the AI receives:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The original PDF (ground truth)`}),`\n`,_jsx(_components.li,{children:`The current list of extracted transactions as a CSV`}),`\n`,_jsx(_components.li,{children:`The current discrepancy amount and direction (too high or too low)`}),`\n`,_jsx(_components.li,{children:`If the statement has multiple accounts, a note about which account is being reconciled`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The AI compares the extracted transactions against the PDF and can make three types of corrections:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Flip`}),` a transaction’s type — if a credit was mistakenly extracted as a debit (or vice versa), flip it`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remove`}),` a transaction — if a duplicate or nonexistent transaction was extracted`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Add`}),` a missing transaction — if a transaction visible in the PDF wasn’t extracted`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The AI is instructed to only make corrections it can clearly verify in the PDF. It will never fabricate transactions to force the math to work. If the extraction looks correct but the math still doesn’t add up (e.g. the bank’s own statement has an internal discrepancy), the AI gives up and explains why.`}),`\n`,_jsxs(_components.p,{children:[`After corrections are applied, the balance is rechecked. If it’s within $0.05, the ledger is reconciled. If not, the next attempt runs. After 3 failed attempts (or if the AI gives up), the ledger is marked `,_jsx(_components.strong,{children:`not reconciled`}),` with an explanation of what went wrong.`]}),`\n`,_jsxs(_components.p,{children:[`Reconciliation is `,_jsx(_components.strong,{children:`skipped entirely`}),` if the starting or ending balance couldn’t be extracted from the statement.`]}),`\n`,_jsxs(Frame,{children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=89c62179f1449540b640bbf7fb17590f`,alt:`Screenshot2026 03 08at4 34 52PM`,title:`Screenshot2026 03 08at4 34 52PM`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`3420`,width:`3420`,\"data-og-height\":`1968`,height:`1968`,\"data-path\":`images/Screenshot2026-03-08at4.34.52PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=0bde475232568110f712325170d75bb2 280w, https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=915384bf7e41f01fb43c2d9c70ac2009 560w, https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=b7f8a305393700ffddbd6e78feb08d7b 840w, https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=9c22dc1faec53375bfcd7421203673db 1100w, https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=55a9fd51ff70ba88da8c37eac6d2ad5b 1650w, https://mintcdn.com/pathwaysystemsllc/nwoeIZ_XUIUwVIWz/images/Screenshot2026-03-08at4.34.52PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nwoeIZ_XUIUwVIWz\u0026q=85\u0026s=fb340af74a6d8cccaf1fb06a85e44de6 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=68945c40a7104218e56d2f04c6054028`,alt:`Screenshot2026 03 08at4 34 52PM`,title:`Screenshot2026 03 08at4 34 52PM`,className:`dark:mint-hidden`,\"data-og-width\":`3420`,width:`3420`,\"data-og-height\":`1970`,height:`1970`,\"data-path\":`images/Screenshot2026-03-08at4.35.38PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=1a8c8c66c9bb05dd9d8186d1dca16a98 280w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=6f75e98f2390270d875108db15eb70af 560w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=623cfeba59d8a2514ef6f917e343aacb 840w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=9921ce5692a6875aa398edec40d176c0 1100w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=e359e6ade942fd9de9c8fc44daafdfee 1650w, https://mintcdn.com/pathwaysystemsllc/SeWPxB1yNoBkn_3r/images/Screenshot2026-03-08at4.35.38PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=SeWPxB1yNoBkn_3r\u0026q=85\u0026s=2a12823455114c5050a13af40828d49d 2500w`})]}),`\n`,_jsx(Heading,{level:`3`,id:`step-7-—-tagging`,children:_jsx(_components.strong,{children:`Step 7 — Tagging`})}),`\n`,_jsx(_components.p,{children:`After reconciliation, all transactions across all ledgers are assigned a global sequential ID (1, 2, 3, …) and then tagged. Tagging runs three parallel processes simultaneously:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`AI Loan Tagging`}),` — The AI classifies transaction groups into debt/loan types:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Tag`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Display Name`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`merchant_cash_advance`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Merchant Cash Advance`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`bank_loan`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Bank Loan`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`factoring`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Factoring`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`credit`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Credit Card`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`lease`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lease`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`auto`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Auto Loan`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`mortgage`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Mortgage`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`buy_now_pay_later`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Buy Now Pay Later`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`debt_collection`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Debt Collection`})]})]})]}),`\n`,_jsx(_components.p,{children:`Each transaction can have at most one loan tag.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`AI Core Tagging`}),` — The AI classifies transaction groups into activity categories. The AI receives business identity and account context to make accurate calls (e.g. knowing the business name helps identify internal transfers vs external payments):`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Tag`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Display Name`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`internal_transfer`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Internal Transfer`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`owner_transaction`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Owner Transaction`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`payment_processor`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Payment Processor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`bank_fee`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Bank Fee`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`bank_interest`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Bank Interest`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`reversal`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Reversal`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`cash`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Cash`})]})]})]}),`\n`,_jsx(_components.p,{children:`A transaction can have multiple core tags.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Deterministic Pattern Tagging`}),` — Rule-based regex matching (no AI involved) that identifies:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Tag`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Display Name`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`check`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Check`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`wire`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Wire`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`peer_to_peer`}),_jsx(_components.td,{style:{textAlign:`left`},children:`P2P`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`stop_payment`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Stop Payment`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`nsf`}),_jsx(_components.td,{style:{textAlign:`left`},children:`NSF`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`overdraft`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Overdraft`})]})]})]}),`\n`,_jsx(_components.p,{children:`NSF and overdraft tags are only applied to debits. A transaction can have multiple deterministic tags.`}),`\n`,_jsx(_components.p,{children:`All three tag types are then merged onto each transaction: loan tag first (if any), then core tags, then deterministic tags.`}),`\n`,_jsx(Heading,{level:`3`,id:`step-8-—-position-detection`,children:_jsx(_components.strong,{children:`Step 8 — Position Detection`})}),`\n`,_jsx(_components.p,{children:`Positions are detected from the loan-tagged transactions. There are two methods depending on loan type:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`MCA Positions (AI-based)`}),` — For Merchant Cash Advance transactions, an AI model matches transaction groups to known funders from your org’s funder registry. Each position gets a funder name, loan type, and the set of transaction IDs that belong to it. Funders from your registry include metadata like favicon, contact info, and website.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Other Loan Positions (algorithmic)`}),` — For all other loan types (Bank Loan, Factoring, Auto, Lease, Mortgage, Debt Collection, Buy Now Pay Later), positions are detected using text similarity clustering. Transaction descriptions are compared using TF-IDF (a text similarity algorithm) and grouped into clusters. Each cluster becomes a position.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-9-—-background-analysis`,children:_jsx(_components.strong,{children:`Step 9 — Background Analysis`})}),`\n`,_jsx(_components.p,{children:`Two background tasks run during the pipeline and are collected at the end:`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`AI Deep Research`}),` — Started immediately after account metadata extraction (Step 1). Uses the extracted business name, address, phone, and principal names to search the web and verify the business’s legitimacy. Runs in the background during the entire rest of the pipeline. The result is the “AI Deep Research” card on the Bank Statements tab.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tampering Analysis`}),` — Started after reconciliation (Step 6). Examines the PDF metadata of every uploaded document — producer, creator application, creation dates, modification dates — and looks for signs of fabrication or programmatic generation (e.g. all PDFs having identical metadata, timestamps that are impossibly close together, or creation tools not typically used by banks). Runs in the background during tagging and position detection. The result is the “Tampering Analysis” card on the Bank Statements tab.`]}),`\n`,_jsx(_components.p,{children:`Both tasks are best-effort. If either one fails, the parse still completes normally.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`key-concepts`,children:_jsx(_components.strong,{children:`Key Concepts`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Book`}),` — A container for one deal or submission. A book holds one or more uploaded documents and the parsed results. When you upload files and click Parse, you’re parsing a book.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Document`}),` — A single uploaded PDF file. Gets classified into a document type (bank statement, credit report, etc.) during parsing.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Ledger`}),` — One bank account within one statement period. A single PDF can produce multiple ledgers if it contains data for multiple accounts. Each ledger has a starting balance, ending balance, and a list of transactions. Reconciliation happens at the ledger level — each ledger is independently verified.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Account`}),` — A bank account that spans across statement periods. After parsing, LendPathway merges all ledgers for the same account into a single unified transaction history. If you upload 12 monthly statements for the same checking account, you get 12 ledgers but 1 account.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Position`}),` — A detected debt relationship with a specific lender. For example, if the parser identifies regular payments to “Prime Funding LLC,” it creates a position grouping those transactions together with a funder name, loan type, total disbursed, and total paid.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tag`}),` — A label applied to a transaction that identifies what type of activity it represents. Tags are applied automatically during parsing and can be manually edited afterward. A transaction can have multiple tags (e.g. a wire payment to a lender could be tagged both “Wire” and “Merchant Cash Advance”).`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Reconciliation`}),` — The process of mathematically verifying that extracted transactions match the bank’s own records. Starting balance plus the sum of all transaction amounts should equal the ending balance. A reconciled ledger means the data is accurate to within $0.05 of what the bank reported.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"How Parsing Works","icon":"lightbulb","description":null,"href":"/how-parsing-works"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The Pipeline","slug":"the-pipeline","depth":2,"children":[{"title":"1. Load Documents","slug":"1-load-documents","depth":3,"children":[]},{"title":"2. Classify Each Document","slug":"2-classify-each-document","depth":3,"children":[]},{"title":"3. Run Type-Specific Pipelines","slug":"3-run-type-specific-pipelines","depth":3,"children":[]}]},{"title":"Bank Statement Pipeline","slug":"bank-statement-pipeline","depth":2,"children":[{"title":"Step 1 — Account Metadata Extraction","slug":"step-1-—-account-metadata-extraction","depth":3,"children":[]},{"title":"Step 2 — Statement Metadata Extraction","slug":"step-2-—-statement-metadata-extraction","depth":3,"children":[]},{"title":"Step 3 — Duplicate Detection","slug":"step-3-—-duplicate-detection","depth":3,"children":[]},{"title":"Step 4 — Transaction Extraction","slug":"step-4-—-transaction-extraction","depth":3,"children":[]},{"title":"Step 5 — Assembly","slug":"step-5-—-assembly","depth":3,"children":[]},{"title":"Step 6 — Reconciliation","slug":"step-6-—-reconciliation","depth":3,"children":[]},{"title":"Step 7 — Tagging","slug":"step-7-—-tagging","depth":3,"children":[]},{"title":"Step 8 — Position Detection","slug":"step-8-—-position-detection","depth":3,"children":[]},{"title":"Step 9 — Background Analysis","slug":"step-9-—-background-analysis","depth":3,"children":[]}]},{"title":"Key Concepts","slug":"key-concepts","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"pathwaysystemsllc","siteName":"Pathway","title":"How Parsing Works - Pathway","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T19:31:33.820Z","originalFileLocation":"how-parsing-works.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Pathway\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"How Parsing Works - Pathway\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Pathway\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lendpathway.com/how-parsing-works\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://pathwaysystemsllc.mintlify.app/_mintlify/api/og/v2?division=Parser\u0026amp;title=How+Parsing+Works\u0026amp;theme=114967f167e5de3895a82eb5\u0026amp;signature=f765a4cbee0a5dc36223cba7ebbe8993c8112af66e671abfd234640e50d293bb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"How Parsing Works - Pathway\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://pathwaysystemsllc.mintlify.app/_mintlify/api/og/v2?division=Parser\u0026amp;title=How+Parsing+Works\u0026amp;theme=114967f167e5de3895a82eb5\u0026amp;signature=f765a4cbee0a5dc36223cba7ebbe8993c8112af66e671abfd234640e50d293bb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/pathwaysystemsllc/CdprBm5A1HURPOhl/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Pathway\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#18181B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lendpathway.com/how-parsing-works\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/how-parsing-works.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lendpathway.com/#organization\",\"name\":\"Pathway\",\"url\":\"https://docs.lendpathway.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/pathwaysystemsllc/EqTVwzDE0uyQObpe/logo/Full_Logo_WhiteBG_LP.svg?fit=max\u0026auto=format\u0026n=EqTVwzDE0uyQObpe\u0026q=85\u0026s=6678212a7b7c4cf56b3d288b3dd33864\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lendpathway.com#website\",\"name\":\"Pathway\",\"url\":\"https://docs.lendpathway.com\",\"publisher\":{\"@id\":\"https://docs.lendpathway.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lendpathway.com/how-parsing-works#webpage\",\"url\":\"https://docs.lendpathway.com/how-parsing-works\",\"name\":\"How Parsing Works\",\"dateModified\":\"2026-10-14T19:31:33.820Z\",\"isPartOf\":{\"@id\":\"https://docs.lendpathway.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lendpathway.com/how-parsing-works#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lendpathway.com/how-parsing-works#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pathway\",\"item\":\"https://docs.lendpathway.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Parsing Works\",\"item\":\"https://docs.lendpathway.com/how-parsing-works\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.lendpathway.com/how-parsing-works#article\",\"headline\":\"How Parsing Works\",\"name\":\"How Parsing Works\",\"url\":\"https://docs.lendpathway.com/how-parsing-works\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lendpathway.com/how-parsing-works#webpage\"},\"dateModified\":\"2026-10-14T19:31:33.820Z\",\"publisher\":{\"@id\":\"https://docs.lendpathway.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lendpathway.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Pathway\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Pathway","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting started","icon":"rocket","pages":[{"title":"Welcome to LendPathway","icon":"angle-right","href":"/getting-started"},{"title":"Quickstart","icon":"rocket-launch","href":"/getting-started/quickstart"}]},{"group":"Platform","icon":"atom-simple","pages":[{"group":"Books","icon":"book-open-cover","pages":[{"title":"What is a Book","href":"/platform/books/books"},{"title":"Bank Statements \u0026 ISO App","href":"/bank-statements"}]},{"group":"Intake \u0026 Inbox","icon":"inbox","pages":[{"title":"Inbox","icon":"envelope","href":"/platform/inbox"},{"title":"Originators \u0026 Originator Groups","icon":"at","href":"/platform/originators"}]},{"title":"Spreadsheet Gallery","icon":"file-spreadsheet","href":"/platform/spreadsheets"},{"title":"Funder Registry","icon":"hand-holding-dollar","href":"/platform/funder-registry"},{"title":"Integrations","icon":"plug","href":"/platform/integrations"},{"title":"Baselayer","icon":"shield-check","href":"/platform/baselayer"},{"title":"Chat engine","icon":"robot","href":"/platform/chat-engine"},{"title":"Salesforce Connector","icon":"cloud","href":"/platform/salesforce-connector"}]},{"group":"Use cases","icon":"question","pages":[{"title":"For Brokers","href":"/use-cases/brokers"},{"title":"For Lenders","description":"How lenders use Pathway to screen, underwrite, and price deals.","href":"/use-cases/lenders"}]},{"group":"Parser","icon":"eye","pages":[{"title":"How Parsing Works","icon":"lightbulb","href":"/how-parsing-works"},{"title":"Supported Document Types ","description":"Document types Pathway can read and parse.","icon":"file-lines","href":"/platform/parser/supported-documents"}]},{"group":"Partner programs","icon":"handshake","pages":[{"title":"Ramp referrals","sidebarTitle":"Ramp","icon":"https://docs.lendpathway.com/images/ramp/ramp-mark.svg","href":"/platform/partner-programs/ramp"},{"title":"How the Ramp integration works","sidebarTitle":"How Ramp works","icon":"https://docs.lendpathway.com/images/ramp/ramp-mark.svg","href":"/platform/partner-programs/ramp-integration"}]},{"group":"Technical Reference","icon":"computer","pages":[{"title":"A Look Inside the Parser","href":"/pathway-internals/white-paper"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"How Parsing Works - Pathway","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-COGkNuA6.js","DynamicMarkdown-85clUA0i.js","zoom-image-lightbox-BZxD9MAj.js","lightbox-handle-r17bVUz3.js"]}