Audit Multi-Document Onboarding Packs Against Checklists
Accepts an array of uploaded documents, rapidly classifies each document into its financial/legal taxonomy category, maps them onto required checklist slots, and outputs an audit report showing satisfied slots, missing items, and document cross-consistency.
Instant execution
Run this verification workflow directly. For instant zero-auth testing with deterministic fixture data, include the Stp-Sandbox: true header.
curl -X POST "https://www.stipple.sh/v1/check-pack?scheme=lending_prequal" \
-H "Authorization: Bearer stp_live_your_key_here" \
-F "files=@passport.pdf" \
-F "files=@recent_payslip.pdf" \
-F "files=@bank_statement_90days.pdf"Expected JSON response
The engine returns deterministic findings with evidence traces, confidence bounds, and recommended actions:
{
"scheme": "lending_prequal",
"complete": false,
"completion_percentage": 66.7,
"slots_required": ["primary_identity", "income_verification", "bank_statement_90_days"],
"slots_satisfied": ["primary_identity", "income_verification"],
"missing_slots": ["bank_statement_90_days"],
"classified_documents": [
{
"filename": "passport.pdf",
"classified_type": "australian_passport",
"matched_slot": "primary_identity",
"confidence": 0.99
},
{
"filename": "recent_payslip.pdf",
"classified_type": "payslip",
"matched_slot": "income_verification",
"confidence": 0.96
}
]
}Measured benchmark
Dataset measured
36 documents across 6 financial classes — 21 payslips, then 3 each of salary certificate, PAYG summary, bank statement, tax invoice, and receipt.
What was measured
Document classification and routing precision
Result
100% correct class assignment (36 of 36), with zero false routes and zero abstentions.
Statistical bound
95% Wilson lower bound 82.4% on routing precision. Per-class lower bounds run 43.9%–84.5%, because most classes carry only 3 samples.
Read this before the number: Read the sample size before the score. 36 documents over 6 classes is small: the point estimate is perfect, but the lower bounds are wide and this is not yet evidence of accuracy at scale. Slot matching itself is deterministic once each file is classified. Median classification latency is 2.2s per document.
AI agent prompt & MCP tool usage
When configuring autonomous agents (Claude Desktop, Cursor, Hermes), use this verified prompt pattern:
You are an onboarding intake assistant.
1. When an applicant uploads files, call check_pack(scheme="lending_prequal", urls=[...])
2. If complete is false, generate a friendly email requesting specifically the missing slots (e.g. "We received your passport and payslip, but still require your 90-day bank statement").Input parameters & headers
| Field | Type | Required | Description |
|---|---|---|---|
| files | array of files (multipart) | Required | All document files comprising the onboarding bundle. |
| scheme | string | Optional | Named scheme: "income_proof", "lending_prequal", or "rental_application". Omit it and send a `requirements` checklist instead for an ad-hoc pack. |
| custom_checklist | array of strings | Optional | Ad-hoc required slots if not using a pre-defined scheme. |
Diagnostic signals & failed checks
Each check reports exactly what it tested and what evidence it found. High severity signals trigger an escalated risk band:
A mandatory checklist requirement was not met by any uploaded document.
Multiple documents satisfied the same slot (e.g. 2 different bank statements).
Production considerations & edge cases
- Bundled PDFs (All-in-one scans): When an applicant scans passport + payslip into a single 3-page PDF, enable page-splitting in the query params to evaluate pages independently.
Related workflows
Take it to production
The snippets above run against the sandbox with Stp-Sandbox: true — no key, no credits, fixture data. Drop that header and the call is real, which needs a key.
Every key gets a free weekly allowance. Past that, prepaid credit packs cover it, and Errors & limits says what happens when you run out.