USE CASE

Extract invoices from email into a table you check

Invoice extraction is a data-entry job with a check step. The goal is not "AI reads PDFs". The goal is a table where every row can be traced back to the message it came from, and where a missing field stops the row instead of shipping a guess.

Decide the columns before the first run

Write the columns you need for reconciliation, not everything an invoice might contain. A practical set is vendor, invoice number, invoice date, amount, currency, due date, and the source message.

Add a status column from day one: extracted, needs review, approved. Status is what makes the table usable by someone other than the person who built it.

Pull the attachment, keep the message

Each row should keep the message ID and the attachment name. When a number looks wrong, you need to open the original email, not a copy of a copy.

Handle the three common shapes separately: the invoice in the body, the invoice as a PDF attachment, and the invoice behind a vendor portal. The third one needs a sign-in, which is a manual step by design.

Read the fields, then flag the gaps

Ask AI to fill the row from the attachment and leave a cell empty when the field is missing. An empty cell is a signal; a guessed amount is a liability.

Then run the checks that catch most errors: the amounts add up, the invoice number is not a duplicate, the date is not in the future, and the currency matches the vendor. A row that fails a check goes to review, not to the books.

Review in one sitting

Batch review beats piecemeal review. Open the review queue once a day, sort by amount and due date, and approve in bulk where the checks pass.

Keep the reason for each manual correction. After a month, the corrections show you which vendor format needs a new rule, and which field is consistently missing.

Where this breaks

Extraction breaks on scanned invoices, multi-page tables, and vendors that change their layout. It also breaks when one mailbox mixes customer mail with vendor mail.

Split the mailbox by sender domain before you add more rules. Then add one rule per broken layout instead of one prompt that tries to handle everything.

How to run it on Sigla

Keep the mailbox, the extracted table, and the source messages in one workspace. Ask AI to process a batch, then review the flagged rows in the render view. When the format is stable, add a scheduled task that runs the extraction and leaves the review to you.

For the sorting layer, read the AI email triage workflow. For the finance side, the AI investment research workflow shows how the same evidence habit applies to research notes.

FAQ

Can AI read scanned invoices?

Only after OCR, and even then the table layout often breaks. Flag scans for manual review instead of trusting the first extraction.

What should I do when a field is missing?

Leave it empty and send the row to review. A missing due date is information; a guessed due date is a payment error.

Is the source email kept?

Yes. Keep the message ID and attachment name with every row so any number can be traced back to the original message.

Can it match invoices to payments?

It can propose a match from amount and date. Confirm the match yourself before it changes a balance.

Next step

Pick one vendor, extract ten invoices, and check the rows against the original messages before you widen the batch.

SIGLA DESKTOP

Download Sigla and run this workflow on your desktop.

Windows · macOS (Apple silicon and Intel). Download first, then start from a request or a template.