Six stages, no manual intervention
Between input and target system lie six stages. Each passes its state to the next, each leaves a journal entry — and none requires manual operation. What fails does not block the rest of the batch.
Inspect input and reserve documents
The run inspects the input channel and takes at most five documents per pass. Each is reserved for 60 seconds via Blob lease — that is the automatic traffic controller: two parallel runs never grab the same document, and if a run crashes, the document becomes available again automatically after the lease expires.
Classify, split, label CLASSIFIER
Only the first pages go to the classifier. For each recognized subdocument, its pages are written as a separate PDF to the output container — into a path made up of classifier name and document type — and given two metadata values: the recognized category and its confidence. On success, the source is released and deleted; the lease is actively extended in the meantime because classification can take longer than its deadline.
Find model RECOGNIZER
Extraction finds its model on its own: from the storage path it reads the classifier name, from the Blob metadata the document type — and thus selects exactly the recognition model configured for this combination. This handoff is the actual transfer point between the modules and the topic of page 06. What happens if no model exists for the recognized document type is covered on Missing Model.
Analyze and map to target fields
The document goes to the model engine — classic trained field extraction or an analyzer authorized by NexoGraph Document Processing. Fields and table cells are mapped to the configured target field names and stored as the result record; raw JSON and the original are moved to the analysis container. A content hash per document acts as a savings brake: if the same content appears again, the stored result is reused instead of being analyzed again.
Deliver to all destinations
The result is sent simultaneously to all registered endpoint adapters — document management and any number of REST targets on equal footing. Unconfigured targets report cleanly as "skipped", expected errors report as "failed"; none of them overturns the run. Each adapter writes its own journal stage.
Finish — or leave it repeatable
The document and analysis JSON move to final/ — but only if no destination marked as mandatory has failed. Otherwise everything remains in place and can be repeated via POST /RetryEndpoint without re-analysis. The run, not a single adapter, decides on storage.