Datalumina

Getting started

The architecture

The target system in one picture, the hybrid extraction idea, and the boundaries the build will respect.

Before touching Azure, get the shape of the system into your head. Everything in the video builds toward this picture, and every setup page provisions one piece of it.

daveebbelaar/invoice-review0:09:29

The system in one picture

A finance administrator uploads a document in the React interface. The FastAPI backend sends it to Azure for extraction, deterministic rules check the result against Northstar's policy, and the prepared review comes back to a human:

Hybrid extraction

The Azure box hides the most interesting decision in the project. Two services read every document independently:

  • Azure AI Document Intelligence is the primary extractor. Its prebuilt invoice and receipt models return typed fields with a confidence score per field.
  • Azure OpenAI plays a supporting role. It classifies the document, fills fields the primary extractor missed, and suggests a general ledger account.

A model output never decides anything on its own. Deterministic Python merges the two extractions, validates VAT numbers and totals, and applies Northstar's policy rules. The human reviewer sees the evidence, the checks, and where every value came from, and she makes the call.

The boundaries

The build keeps a few boundaries visible from the first commit, and they are worth naming now:

  • Provider adapters normalize Azure responses before the data reaches the rest of the app
  • Business rules stay separate from model extraction, in plain testable Python
  • Routes own HTTP concerns, a service owns orchestration, and a repository owns database access
  • Configuration is read through one settings module per side, backed by .env files

None of this exists yet on the main branch, and that is the point. The starter contains the brief, the sample documents, and the project configuration. The video builds the rest inside these boundaries.

Checkpoint

You should be able to sketch the flow from upload to review decision, and explain:

  • Why there are two extractors and which one is primary
  • What deterministic code is responsible for, as opposed to the models
  • Where the human sits in the flow

On this page