Preview before mutation
A statement importer should identify the account, date range, row count, and likely format before changing the ledger. That gives the user a chance to stop a bad parse early.
Reconcile deterministically
Checksums, dates, amounts, and account context are more reliable than filenames. Existing transactions should be matched or skipped explicitly, not inserted and cleaned up later.
Return a report, not a mystery
A successful import should say what was imported, skipped as duplicate, classified automatically, sent to review, or rejected. Auxiliary merchant-memory updates should never erase the main result.