The simplest architecture would have been to upload every invoice to a backend and process it there.
I deliberately avoided that for the standard workflow.
Invoices may contain personal or commercially sensitive information, so PDF and UBL processing happens directly in the browser.
That means: