DocTriage animated explainer — how documents move from intake to a triage recommendation How it works — animated explainer

DocTriage — AI Document-Validation Pipeline for No-Interest Microloan Assessments

Python Docker vLLM Local LLM Inference OCR & Document AI Decision Tables n8n SQLite

An AI pipeline that reads and validates microloan application documents against codified eligibility rules, producing an auditable recommendation for a caseworker to decide — privacy by design. Built for an Australian no-interest loan (NILS) provider.

May 2026 — Validation Phase

Running against synthetic applicants while decision tables are tuned against human-reviewer outcomes

8
Document Categories Validated
4
Triage Outcomes
100%
Local Inference — No Data Leaves
Human
Makes Every Final Decision

See It Running

The n8n workflows processing a complete loan application end to end — document intake, classification, extraction, rule evaluation, and the triage recommendation landing in the review console.

Live demo — n8n workflows processing a loan application Live demo — n8n workflows processing a loan application

Every applicant shown is synthetic. Client identifiers and eligibility thresholds are redacted.

Inside the System

The review console, the orchestration workflows, and the document pack a single applicant submits.

Overview

DocTriage is a document-processing and decision-support system that automates the intake and eligibility checking of loan applications for a community no-interest lending program — NILS, the Australian not-for-profit microfinance model. A caseworker opens a structured, cited result instead of a folder of raw PDFs.

The Problem

Caseworkers manually review a large document pack per applicant — identity documents, income statements, bank statements, rent ledgers, utility bills, credit reports, and a supplier quote for the item being financed — against a detailed eligibility handbook. The work is slow, repetitive, and error-prone, and it is the bottleneck between an application arriving and a decision being made. Every hour spent re-reading a PDF is an hour not spent with the applicant.

Architecture & Technical Design

The pipeline is a set of containerised services chained by an n8n orchestrator:

  1. Native-text PDF extractor: digit-perfect text extraction from PDFs that carry a real text layer. No GPU required, and no OCR error introduced where none is needed.
  2. Vision-OCR service: a GPU-backed vision model for images, screenshots, and scanned PDFs with no text layer. The orchestrator routes per file type and checks the service is warm before starting a batch.
  3. Document classification: each file in the pack is identified by type, then handed to the field extractor matched to that type.
  4. Rules & triage API: extracted fields are evaluated against the program's eligibility criteria, encoded as versioned decision tables. Each rule cites its source in the lending handbook, so any outcome can be traced back to the policy that produced it.
  5. Confidence grounding: every extracted value is verified against the document's own text. Anything the system cannot ground is flagged for human confirmation rather than trusted silently.
  6. Review console: the caseworker sees the triage outcome, the per-category findings, the extracted values beside their source documents, and an explicit list of what still needs a human.
  7. Evaluation store: system decisions are compared against the human reviewer's decisions, so accuracy is measured rather than assumed.

Key Design Decisions

  • It never auto-approves. The system produces a recommendation and the evidence behind it. The lending decision belongs to a person, and the interface says so on every case: “Automated recommendation only — the final decision is yours.”
  • Rules live in decision tables, not in prompts. Eligibility criteria are versioned data, not model behaviour. They can be reviewed, diffed, and audited by the people who own the policy — and changing a rule does not mean re-engineering a prompt.
  • Grounding over trust. An extracted value that cannot be matched back to text in the source document is surfaced as low-confidence rather than passed downstream. The failure mode is “ask a human”, not “guess confidently”.
  • Privacy is architectural, not procedural. Inference runs locally; real applicant data never leaves the environment. Development and testing run entirely on synthetic applicants, and only de-identified evaluation data is persisted. Structured identifiers are masked by default in the console and revealed only on an explicit click.
  • Serial by design. The parser holds a single GPU model slot, so applicants and documents are processed one at a time. Running them in parallel only queues work and risks timeouts — throughput came from removing redundant OCR, not from fan-out.
  • Failures degrade, they don't abort. A document that cannot be read produces an explicit “unknown” entry and routes to human review. One bad file never takes down the whole applicant's run.

What the Caseworker Gets

A triage outcome — proceed, request documents, decline, or waitlist — with human-readable reasons, a per-category breakdown of what passed and what needs checking, and a “needs human review” list. Each finding links to the document and the extracted value behind it, so verifying the system is faster than redoing its work.

Status

Validation phase. The pipeline runs end to end on synthetic applicants while the decision tables are tuned against real human-reviewer outcomes held in the evaluation store.

Project Information

Project Type

Client Engagement

An Australian no-interest loan (NILS) provider

Timeline

May 2026 — Present (validation phase)

Role

AI Engineer & Pipeline Architect

Confidentiality

The client is not named, and eligibility thresholds, infrastructure details and internal identifiers are redacted from every screenshot and video on this page. Applicants shown are synthetic.

Technologies Used

Python Docker vLLM Local LLM Inference Vision OCR Document AI Decision Tables Rules Engine n8n SQLite FastAPI CRM Integration

Skills Demonstrated

  • Document AI & OCR Pipelines
  • Self-Hosted LLM Inference
  • Auditable Rules Engineering
  • Privacy-by-Design Architecture
  • Human-in-the-Loop System Design
  • Workflow Orchestration (n8n)

Technical Highlights

Auditable Decision Tables

Eligibility criteria encoded as versioned decision tables rather than prompt text. Every rule cites its source in the lending handbook, so an outcome can always be traced back to the policy behind it.

Grounded Extraction

Each extracted value is verified against the document's own text. Low-confidence values are escalated for human confirmation instead of flowing silently into a decision.

Privacy by Design

Inference runs locally and real applicant data never leaves the environment. Development runs on synthetic applicants, and structured identifiers stay masked in the console until explicitly revealed.

Two Extraction Paths

Native-text PDFs go through a digit-perfect extractor with no GPU and no OCR error. Images and scans route to a vision model. Both produce the same contract, so the triage layer never knows the difference.

Human in the Loop

Four triage outcomes with cited reasons and an explicit needs-review list. The system never auto-approves — it prepares the decision, a caseworker makes it.

Measured, Not Assumed

An evaluation store compares system decisions against human-reviewer decisions on the same cases, so accuracy is tracked over time rather than claimed once.

Back to All Projects