Classification before extraction
Before extracting anything, Extract runs a lightweight classification pass on each page: is this a bank statement, invoice, receipt, or a generic table, and does it look scanned. That classification picks which extraction prompt runs next, so a bank statement gets bank-statement-tuned column targets (date, description, debit, credit, balance) while an unrelated table gets the generic-table prompt, which explicitly avoids forcing data into a financial schema it doesn't fit.