Skip to main content
PreviewAgent Builder is currently in preview and may change before general availability.
In this tutorial, you build a document processing pipeline that verifies customer onboarding documents against application data. The pipeline receives uploaded files (ID card, proof of address, salary slip), classifies each document, extracts structured data, compares it to what the applicant declared, and routes discrepancies to a human reviewer. What you will build:
  • A file upload UI that accepts multiple documents
  • A document classification workflow that identifies each document type using AI
  • A fan-out extraction pipeline that routes each type to a specialized extractor
  • An AI reconciliation step that compares extracted data against application data
  • Business rules that flag mismatches (name, address, income)
  • A human review task for documents with discrepancies
  • A summary generation step that produces a verification report
AI node types used: Document Understanding, Extract Data from File, Text Understanding, Text Generation Patterns demonstrated: Fan-out extraction, AI comparison and reconciliation

Architecture overview

The pipeline processes documents in four phases: upload, classify and extract, reconcile, and review. Workflow breakdown:

Prerequisites

Before starting, make sure you have:
  • Access to a FlowX Designer workspace with AI Platform enabled
  • Familiarity with creating processes, workflows, and UI flows in FlowX
  • A project with the Documents Plugin configured (for file uploads)

Data model

Define the following data model keys in your process. These keys hold the application data submitted by the customer and the results produced by the AI pipeline.
Define these keys under your process data model before building the workflows. The AI nodes and business rules reference these paths at runtime.

Step 1: Build the classification and extraction workflow

Create a workflow named classifyAndExtract. This workflow receives a single document file path, classifies the document type, and then routes to the appropriate extraction branch. This implements the fan-out extraction pattern.

1.1 Add the classification node

Add a Document Understanding node as the first node after the Start node. This node accepts the document file directly and classifies it.
Use Document Understanding here, not Text Understanding — the text nodes accept text input only, while the document nodes work on the uploaded file itself.
Instructions:
Response schema:
Response Key: classificationResult

1.2 Add the Condition node

Add a Condition node after the Document Understanding node. Configure branches based on the document_type value:
The Else branch handles UNKNOWN documents. Use a Script node to return a structured error so the parent process can flag the document for manual classification.

1.3 Configure type-specific extraction nodes

Each branch contains an Extract Data from File node with a prompt and schema tailored to that document type.
Extraction Method: LLM Model (handles varied ID layouts, photos, and security features)Instructions:
Response schema:
Response Key: extractedData
Choose the extraction method based on the document characteristics. LLM Model provides the highest accuracy for complex layouts but costs more per page. See Extract Data from File for a comparison of the methods.

1.4 Add the End Flow node

Add an End Flow node where all branches converge. Set the body to pass results back to the parent process:

Step 2: Build the reconciliation workflow

Create a workflow named reconcileData. This workflow compares the extracted document data against the applicant’s declared data. This implements the AI comparison and reconciliation pattern.

2.1 Add the comparison node

Add a Text Understanding node that receives both the extracted data and the application data.
The Instructions field is static — the node rejects ${...} references inside it. Pass dynamic values through the Context section instead; the node receives them alongside the instructions.
Instructions:
Context: reference the following process data so the node receives it at runtime:
  • ${extraction.classifiedDocs} — the extracted document data
  • ${applicant} — the applicant’s declared data
Response schema:
Response Key: reconciliationResult

2.2 Add the End Flow node


Step 3: Build the summary generation workflow

Create a workflow named generateSummary with a single Text Generation node. Instructions:
Context: reference the following process data:
  • ${applicant} — applicant data
  • ${extraction.classifiedDocs} — extraction results
  • ${reconciliation} — reconciliation results
  • ${review.reviewerNotes} — reviewer notes (if any)
Response Key: summaryReport End Flow body:

Step 4: Build the BPMN process

Create a process named documentVerify that orchestrates the full pipeline using the workflows you built.
1

Add a User Task for file upload

Add a User Task node after the Start Event. This task presents the file upload UI to the user.Configure the task with:
  • Task name: Upload documents
  • Assignment: Assigned to the initiating user
Attach a UI Flow (built in Step 5) that allows uploading multiple files.
2

Loop through uploaded documents

For each uploaded document, trigger the classifyAndExtract workflow. Add a Send Message Task node with a Start Integration Workflow action.Input mapping:
Add a Receive Message Task node to capture the extraction output. In the node’s Data Stream, set the Key Name to extraction.classifiedDocs[index].
For multiple documents, repeat the Send/Receive pattern for each file, or use a loop structure with an exclusive gateway that iterates until all files are processed.
3

Trigger the reconciliation workflow

Add another Send Message Task with a Start Integration Workflow action pointing to the reconcileData workflow.Input mapping:
Add a Receive Message Task node. In the node’s Data Stream, set the Key Name to reconciliation.
4

Add a business rule for validation

Add a Business Rule action (JavaScript) to perform deterministic validation checks that supplement the AI reconciliation.
Business rules provide deterministic, auditable checks. Use them alongside AI reconciliation to catch issues the LLM might miss, such as expired documents or missing required document types.
5

Add the routing gateway

Add an Exclusive Gateway after the business rule. Configure two branches:
6

Add the human review task

Add a User Task node for manual review. The reviewer sees:
  • Uploaded documents (viewable in a File Preview component)
  • Extracted data side-by-side with declared data
  • The exception report from reconciliation
  • Validation flags from the business rule
The reviewer submits a decision:
  • Approve — continue to summary
  • Reject — end process with rejection status
  • Request re-upload — loop back to the upload step
Store the decision in review.reviewerDecision and any notes in review.reviewerNotes.
7

Trigger the summary generation workflow

After both the auto-approve and human-review-approve paths converge, add a Send Message Task to trigger the generateSummary workflow.Input mapping:
Add a Receive Message Task. In the node’s Data Stream, set the Key Name to summary.
8

Add the End Event

Add an End Event after the summary is received. The process instance now contains the full verification report at summary.report.

Step 5: Build the upload UI

Create a UI Flow with a page for document upload.
1

Create the UI Flow

Go to UI Flows in the project sidebar and create a new UI Flow named documentUpload.
2

Add an upload component

Add a File Upload component to the page. Configure it to:
  • Accept multiple files
  • Restrict file types to PDF, JPG, PNG
  • Map uploaded file paths to documents.uploadedFiles
3

Add applicant data display

Add form fields (read-only) that display the applicant’s declared data from applicant. This gives context to the person uploading documents.
4

Add a submit button

Add a Button component labeled Submit documents. Configure it to save the data and advance the User Task.
For the human review step, create a second UI Flow page that displays the extracted data, reconciliation results, and exception report alongside the original documents. Use a side-by-side layout so the reviewer can compare easily.

Step 6: Build the review UI

Create a second page in the UI Flow for the human review task. The review page should include:
Use conditional visibility to highlight rows with MISMATCH or CRITICAL status in the reconciliation table. This draws the reviewer’s attention to the issues that need their judgment.

Testing

1

Test classification in isolation

Open the classifyAndExtract workflow and use Run Workflow with a test file. Upload sample documents one at a time and verify the classification output.
2

Test extraction accuracy

For each document type, compare the extracted fields against the actual document content. Check that:
  • Names are captured correctly (including accented characters)
  • Dates are in the expected YYYY-MM-DD format
  • Numeric values (salary, postal code) are accurate
  • Null is returned for missing fields (not hallucinated values)
3

Test reconciliation with known mismatches

Prepare test data with deliberate mismatches:
Upload an ID card with the name “Jonathan Smith” and a salary slip showing a net salary of 4200. Verify the reconciliation output flags:
  • Name variation as WARNING
  • Income discrepancy (16%) as WARNING
4

Test the business rule

Verify the JavaScript business rule catches:
  • Expired ID documents
  • Missing required document types
  • Income discrepancy above 10%
  • CRITICAL exceptions from reconciliation
Test edge cases: all documents valid (auto-approve path), one missing document (review path), expired ID (review path).
5

Test the full end-to-end flow

Run the complete documentVerify process:
  1. Upload three documents (ID, proof of address, salary slip)
  2. Verify classification and extraction complete
  3. Check the reconciliation report
  4. If routed to review, complete the reviewer task
  5. Verify the summary report is generated
Test both the auto-approve path (all documents match) and the human review path (with discrepancies).

What you learned

In this tutorial, you built a document processing pipeline that demonstrates several key patterns:
  • Fan-out extraction — classifying documents by type and routing each to a specialized extraction node with tailored prompts and schemas
  • AI reconciliation — comparing AI-extracted data against application data with structured exception reports
  • Hybrid AI + business rules — combining AI-driven comparison with deterministic validation (expired documents, missing types, income thresholds)
  • Human-in-the-loop — routing edge cases to a reviewer while auto-approving clean results
  • Workflow composition — building modular workflows for classification, reconciliation, and summary generation, then orchestrating them from a BPMN process

Next steps

Fan-out extraction pattern

Scale the classification and extraction pattern to dozens of document types

AI comparison and reconciliation

Deep-dive into the reconciliation pattern with threshold tuning

Extract Data from File

Configure extraction strategies, image extraction, and signature detection

AI node types

Reference for all AI node types available in Agent Builder
Last modified on July 8, 2026