Skip to content

Invoice data extraction

Accounts payable for mid-size distributors · Interactive prototype with sample data, solo

Updated

Before

Clerks typed each invoice into the accounting system by hand.

After

Each invoice becomes structured fields beside its PDF, and the clerk checks only the unsure ones.

How it works
  1. 1Person:Clerk

    Uploads a PDF, or a supplier system sends it to the API.

  2. 2Software:Extraction service

    Reads the document and returns the fields with a confidence for each.

  3. 3Software:Service

    Checks that totals add up and required fields exist.

  4. 4Person:Clerk

    Reviews flagged fields next to the PDF preview.

    Software:Service

    Exports the approved data to the accounting system.

Always on

  • Totals are checked before anything is exported.
  • Every document keeps its history and its extracted fields.
  • API keys are managed in settings and can be revoked.

Problem

Invoices arrive as PDFs in many layouts. Someone reads each one and retypes it, which is slow and error-prone.

Diagnosis

Layout rules per supplier never end. The reader has to understand the document, and flag what it is unsure about.

Options I weighed

  1. How are invoice fields read?

    Chosen

    A language model with a fixed output schema

    Handles new layouts with no setup. Cost: a model call for every invoice.

    • Rejected

      Template rules per supplier

      Breaks on every new supplier and every layout change.

  2. What happens when the AI is unsure?

    Chosen

    Unsure fields go to a person for review

    The clerk checks only the flagged fields, next to the PDF.

    • Rejected

      Post everything automatically

      One wrong amount in the ledger costs more than a quick check.

Solution

Upload a PDF, see extracted fields with a confidence each beside the document, review the flagged ones and export. An API page documents the single call. Built on sample invoices.

Interface
  • Next.js
  • React
  • Tailwind CSS
  • Radix UI
  • Recharts
Delivery
  • Vitest
  • Cloudflare Pages