- Build and train a custom document processing model
- Understand structured vs unstructured documents
- Extract invoice data and store in Dataverse
- Implement confidence score checks
| Prebuilt (Invoice) | Custom Document Processing | |
|---|---|---|
| Training needed | No | Yes (min 5 samples) |
| Works on | Standard invoices | Any structured document |
| Flexibility | Fixed fields | You define fields |
Trainer insight: In 90% of enterprise projects, teams start with prebuilt, then discover their forms are non-standard and need custom models. Build custom from Day 1 if your documents vary.
- Structured — Fixed layout (tax forms, standard invoices)
- Semi-structured — Variable layout, consistent fields (POs, receipts)
- Unstructured — No fixed layout (contracts) → use Prompt/GPT instead
- Text, Number, Date, Selection mark (checkboxes), Table (rows & columns), Signature
- Minimum 5 samples; recommended 15-20 for good accuracy
- Include variation — different vendors, fonts, page counts
- Label every field in every sample
- Include documents with some missing fields (real-world has gaps)
- Use 15+ sample documents — 5 is minimum but gives poor accuracy
- Include document variations — different layouts, fonts, formats
- Log confidence scores — if confidence < 80%, route to manual review
- Version your models — keep old version until new one is validated in production
- Test with unseen documents — never test only with training samples
- Handle multi-page docs — test with 2-page and 3-page documents
Accounts payable receives 50+ invoices daily from multiple vendors. Build a model to extract: Vendor, Invoice number, Date, Due date, Line items, Total — and store in Dataverse.
- make.powerapps.com → AI Builder → Models → + New model
- Select: Document processing → Get started
Add these fields:
| Field | Type |
|---|---|
| VendorName | Text |
| InvoiceNumber | Text |
| InvoiceDate | Date |
| DueDate | Date |
| TotalAmount | Number |
| LineItems | Table (Description, Qty, UnitPrice, LineTotal) |
For each document:
- Highlight text → select matching field
- For tables: use Table mode, draw box around entire table, map columns
- Label ALL fields on ALL documents
- Train → wait 15-30 min
- Quick test with unseen invoice → verify fields and confidence scores
- Confidence target: > 90% per field
- Publish when satisfied
Trigger: File created in SharePoint /Invoices-Inbox
Step 1: Get file content
Step 2: AI Builder — Extract information from documents
Model: your custom model
Step 3: Condition — confidence > 0.8?
YES → Dataverse Add row (Invoices table)
NO → Email AP team for manual review
Step 4: Apply to each (LineItems)
Dataverse Add row (InvoiceLineItems table)
- Upload test invoice to SharePoint
- Check Dataverse Invoices table → verify record created
- Check InvoiceLineItems → verify each line item row
Project: Invoice Automation System Business value: Eliminates manual data entry for 50+ invoices/day (~12.5 hours/week saved)