document-extraction
Skill41 starsChanged 18 days agoApache-2.0View on GitHub
Extract structured data from documents (invoices, forms, contracts) using ServiceNow Document Intelligence with extraction template configuration and validation rules
- Sends data out
1 other project uses a version of this.
Adopted by
Most recently taken up by
- ASNNetworks/floh-skillstheir own version, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- ASNNetworks/floh-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository184 other files it gives its agents.
- happy-platform-skillsSkill
- application-scopeSkill
- batch-operationsSkill
- configuration-validationSkill
- deployment-workflowSkill
- generic-crud-operationsSkill
- instance-managementSkill
- schema-discoverySkill
- script-executionSkill
- script-syncSkill
- smart-assessmentSkill
- task-analysisSkill
- task-summarizationSkill
- update-set-managementSkill
- user-provisioningSkill
- workflow-creationSkill
- workspace-insightsSkill
- approval-summarizationSkill
- approval-workflowsSkill
- catalog-builder-aiSkill
- catalog-item-generationSkill
- item-creationSkill
- multi-turn-orderingSkill
- request-fulfillmentSkill
- ui-policiesSkill
- variable-managementSkill
- ci-discoverySkill
- cmdb-search-analysisSkill
- data-qualitySkill
- impact-analysisSkill
- relationship-mappingSkill
- service-graph-diagnosisSkill
- activity-responseSkill
- csm-case-summarizationSkill
- chat-recommendationSkill
- email-recommendationSkill
- csm-kb-generationSkill
- resolution-notesSkill
- csm-sentiment-analysisSkill
- csm-sidebar-summarizationSkill
- csm-suggested-stepsSkill
- trending-topicsSkill
- automated-testingSkill
- business-rulesSkill
- client-scriptsSkill
- code-assistSkill
- code-reviewSkill
- data-importSkill
- debugging-techniquesSkill
- fluent-sdkSkill
- glide-api-referenceSkill
- mcp-server-installationSkill
- mcp-serverSkill
- notificationsSkill
- performance-optimizationSkill
- scheduled-jobsSkill
- scripted-rest-apisSkill
- script-includesSkill
- servicenow-docs-mcpSkill
- test-generationSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 11 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 43
When to use: When you need to process documents at scale (batch invoice processing, contract metadata extraction, form digitization), when …
- Very specific: line 50
Access: Read/write access to sn_doc_intelligence_extraction, sn_doc_template, sn_doc_intelligence_field_map, and sys_attachment tables
- Very specific: line 52
Plugin: Document Intelligence (com.sn_doc_intelligence) must be activated
- Distinctive: line 59
Check which document extraction templates are already configured in your instance.
- Distinctive: line 91
If no template exists for your document type, create one.
- Distinctive: line 179
Create an extraction request to process a document through the pipeline.
- Distinctive: line 316
Create the target record with extracted data:
- Distinctive: line 370
Template per document type: Create separate templates for each document format.
- Distinctive: line 371
Set appropriate thresholds: Start with a confidence threshold of 0.85 and adjust based on error rates.
- Distinctive: line 373
Validation rules: Use regex patterns, reference lookups, and cross-field validation (e.g., total = subtotal + tax) to catch extraction …
- Very specific: line 376
Handle exceptions: Create extraction tasks in sn_doc_intelligence_task for documents that fail extraction, routing them to data entry staff
- Distinctive: line 377
Secure handling: Ensure document attachments comply with data retention policies.
- Distinctive: line 389
Solution: Check document resolution (minimum 300 DPI for OCR).
- Distinctive: line 398
Cause: Document Intelligence engine timeout or processing queue backup
- Very specific: line 399
Solution: Check the sn_doc_intelligence_extraction record for error messages.
- Very specific: line 404
Solution: Before submitting, query sn_doc_intelligence_extraction with source_document=[attachment_sys_id]^state!=failed to check for …
- Very specific: line 447
Create vendor records in core_company with extracted TIN, legal name, address
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Document Extraction
Overview
This skill provides a structured approach to extracting structured data from documents using ServiceNow Document Intelligence. It helps you:
- Configure and manage extraction templates in
sn_doc_templatefor different document types (invoices, contracts, forms, purchase orders) - Submit documents for extraction via the
sn_doc_intelligence_extractionpipeline - Define field mappings in
sn_doc_intelligence_field_mapto map extracted data to ServiceNow table fields - Review and validate extraction results from
sn_doc_intelligence_extraction_result - Set up validation rules to ensure data quality and flag low-confidence extractions
- Handle extraction failures and retrain models for improved accuracy
When to use: When you need to process documents at scale (batch invoice processing, contract metadata extraction, form digitization), when manually entering data from documents is error-prone or time-consuming, or when setting up new document processing pipelines.
Plugin required: com.sn_doc_intelligence
Prerequisites
- Roles:
sn_doc_intelligence_admin,sn_doc_intelligence_user, oradmin - Access: Read/write access to
sn_doc_intelligence_extraction,sn_doc_template,sn_doc_intelligence_field_map, andsys_attachmenttables - Knowledge: Understanding of the document types to be processed, their field layouts, and the target ServiceNow tables for extracted data
- Plugin: Document Intelligence (
com.sn_doc_intelligence) must be activated - Documents: Source documents must be in supported formats (PDF, PNG, JPG, TIFF)
Procedure
Step 1: Review Available Extraction Templates
Check which document extraction templates are already configured in your instance.
Using MCP (Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_template
query: active=true
fields: sys_id,name,description,document_type,target_table,state,extraction_model,confidence_threshold,field_count
limit: 50
order_by: nameUsing REST API:
GET /api/now/table/sn_doc_template?sysparm_query=active=true^ORDERBYname&sysparm_fields=sys_id,name,description,document_type,target_table,state,extraction_model,confidence_threshold,field_count&sysparm_limit=50&sysparm_display_value=trueCommon template types:
| Document Type | Target Table | Use Case |
| Invoice | sn_proc_invoice | AP invoice processing |
| Purchase Order | proc_po | PO data entry |
| Contract | ast_contract | Contract metadata extraction |
| W-9 / Tax Form | core_company | Vendor tax information |
| ID Document | sys_user | Identity verification |
| Insurance Certificate | ast_contract | COI tracking |
| Work Order | wm_order | Field service documents |
Step 2: Create or Configure an Extraction Template
If no template exists for your document type, create one.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_template
fields:
name: "Vendor Invoice Template"
description: "Extracts header and line-item data from vendor invoices for accounts payable processing"
document_type: invoice
target_table: sn_proc_invoice
confidence_threshold: 0.85
active: true
state: draftUsing REST API:
POST /api/now/table/sn_doc_template
Content-Type: application/json
{
"name": "Vendor Invoice Template",
"description": "Extracts header and line-item data from vendor invoices",
"document_type": "invoice",
"target_table": "sn_proc_invoice",
"confidence_threshold": "0.85",
"active": "true",
"state": "draft"
}Step 3: Define Field Mappings
Map document fields to ServiceNow table columns for each extraction template.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_field_map
fields:
template: [template_sys_id]
source_field: "Invoice Number"
target_table: sn_proc_invoice
target_field: number
field_type: string
required: true
validation_regex: "^INV-[0-9]{4,10}$"
order: 100Repeat for each field mapping:
| Source Field (Document) | Target Field (Table) | Type | Required | Validation |
| Invoice Number | number | String | Yes | Pattern match |
| Invoice Date | invoice_date | Date | Yes | Valid date |
| Due Date | due_date | Date | Yes | After invoice date |
| Vendor Name | vendor | Reference | Yes | Match core_company |
| PO Number | po_number | String | No | Match proc_po |
| Subtotal | subtotal | Currency | Yes | Positive number |
| Tax Amount | tax | Currency | No | Non-negative |
| Total Amount | invoice_amount | Currency | Yes | subtotal + tax |
| Line Item Description | line_items.description | String | Yes | Non-empty |
| Line Quantity | line_items.quantity | Integer | Yes | Positive integer |
| Line Unit Price | line_items.unit_price | Currency | Yes | Positive number |
Using REST API:
POST /api/now/table/sn_doc_intelligence_field_map
Content-Type: application/json
{
"template": "[template_sys_id]",
"source_field": "Invoice Number",
"target_table": "sn_proc_invoice",
"target_field": "number",
"field_type": "string",
"required": "true",
"validation_regex": "^INV-[0-9]{4,10}$",
"order": "100"
}Step 4: Submit Documents for Extraction
Create an extraction request to process a document through the pipeline.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_extraction
fields:
template: [template_sys_id]
source_document: [attachment_sys_id]
document_type: invoice
state: submitted
priority: 3
requested_by: [user_sys_id]
short_description: "Extract data from vendor invoice INV-2026-0456"Using REST API:
POST /api/now/table/sn_doc_intelligence_extraction
Content-Type: application/json
{
"template": "[template_sys_id]",
"source_document": "[attachment_sys_id]",
"document_type": "invoice",
"state": "submitted",
"priority": "3",
"requested_by": "[user_sys_id]",
"short_description": "Extract data from vendor invoice INV-2026-0456"
}For batch processing, submit multiple documents:
# Iterate over attachments and create extraction records
for attachment_id in [list_of_attachment_sys_ids]; do
curl -X POST "https://[instance].service-now.com/api/now/table/sn_doc_intelligence_extraction" \
-H "Content-Type: application/json" \
-d "{\"template\":\"[template_sys_id]\",\"source_document\":\"$attachment_id\",\"document_type\":\"invoice\",\"state\":\"submitted\"}"
doneStep 5: Monitor Extraction Progress
Track the status of submitted extraction requests.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction
query: state=submitted^ORstate=processing^ORstate=review
fields: sys_id,number,short_description,state,template,document_type,source_document,confidence_score,sys_created_on,error_message
limit: 50
order_by: sys_created_onUsing REST API:
GET /api/now/table/sn_doc_intelligence_extraction?sysparm_query=state=submitted^ORstate=processing^ORstate=review^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,template,document_type,source_document,confidence_score,sys_created_on,error_message&sysparm_limit=50&sysparm_display_value=trueStep 6: Review Extraction Results
Examine the extracted data and confidence scores for each field.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction_result
query: extraction=[extraction_sys_id]
fields: sys_id,field_name,extracted_value,confidence_score,validation_status,mapped_field,needs_review
limit: 100
order_by: orderUsing REST API:
GET /api/now/table/sn_doc_intelligence_extraction_result?sysparm_query=extraction=[extraction_sys_id]^ORDERBYorder&sysparm_fields=sys_id,field_name,extracted_value,confidence_score,validation_status,mapped_field,needs_review&sysparm_limit=100&sysparm_display_value=trueEvaluate results against thresholds:
| Confidence Level | Action Required |
| >= 0.95 | Auto-accept; no review needed |
| 0.85 - 0.94 | Accept with spot-check |
| 0.70 - 0.84 | Manual review required |
| < 0.70 | Flag for re-extraction or manual entry |
Step 7: Validate and Correct Extracted Data
For fields that need review, update the extraction results.
Using MCP:
Tool: SN-Update-Record
Parameters:
table_name: sn_doc_intelligence_extraction_result
sys_id: [result_sys_id]
data:
extracted_value: "INV-2026-0456"
validation_status: validated
needs_review: false
reviewer_notes: "Corrected invoice number; OCR misread '0' as 'O'"Using REST API:
PATCH /api/now/table/sn_doc_intelligence_extraction_result/[result_sys_id]
Content-Type: application/json
{
"extracted_value": "INV-2026-0456",
"validation_status": "validated",
"needs_review": "false",
"reviewer_notes": "Corrected invoice number; OCR misread '0' as 'O'"
}Step 8: Complete Extraction and Populate Target Record
Once all fields are validated, mark the extraction as complete and create or update the target record.
Using MCP:
Tool: SN-Update-Record
Parameters:
table_name: sn_doc_intelligence_extraction
sys_id: [extraction_sys_id]
data:
state: completed
work_notes: "Extraction validated. 12/14 fields auto-accepted (>95% confidence). 2 fields manually corrected. Target record created in sn_proc_invoice."Create the target record with extracted data:
Tool: SN-Create-Record
Parameters:
table_name: sn_proc_invoice
fields:
number: "INV-2026-0456"
vendor: [vendor_sys_id]
invoice_date: "2026-03-15"
due_date: "2026-04-14"
invoice_amount: "15750.00"
po_number: "PO0012345"
state: pending
source: document_intelligence
work_notes: "Record created via Document Intelligence extraction [extraction_number]"Using REST API:
PATCH /api/now/table/sn_doc_intelligence_extraction/[extraction_sys_id]
Content-Type: application/json
{
"state": "completed",
"work_notes": "Extraction validated. Target record created."
}Tool Usage
MCP Tools Reference
| Tool | When to Use |
SN-Natural-Language-Search | Find extraction records or templates by description |
SN-Query-Table | Query templates, extractions, results, and field mappings |
SN-Get-Record | Retrieve a specific extraction or template record |
SN-Create-Record | Create templates, field mappings, and extraction requests |
SN-Update-Record | Update extraction status, validate results, correct data |
SN-Add-Work-Notes | Document extraction outcomes and processing notes |
REST API Reference
| Endpoint | Method | Purpose |
/api/now/table/sn_doc_template | GET/POST | Query or create extraction templates |
/api/now/table/sn_doc_intelligence_field_map | GET/POST | Query or create field mappings |
/api/now/table/sn_doc_intelligence_extraction | GET/POST/PATCH | Manage extraction requests |
/api/now/table/sn_doc_intelligence_extraction_result | GET/PATCH | Review and correct extraction results |
/api/now/table/sys_attachment | GET | Query document attachments |
/api/now/attachment/{sys_id}/file | GET | Download source documents |
Best Practices
- Template per document type: Create separate templates for each document format; a single template for all invoices will underperform compared to vendor-specific templates for high-volume vendors
- Set appropriate thresholds: Start with a confidence threshold of 0.85 and adjust based on error rates; lower thresholds increase throughput but require more manual review
- Training data: Provide at least 20-30 sample documents per template for optimal extraction accuracy
- Validation rules: Use regex patterns, reference lookups, and cross-field validation (e.g., total = subtotal + tax) to catch extraction errors automatically
- Batch processing: Submit documents in batches during off-peak hours to avoid performance impact on the instance
- Monitor accuracy: Track extraction accuracy metrics over time; retrain models when accuracy drops below 90%
- Handle exceptions: Create extraction tasks in
sn_doc_intelligence_taskfor documents that fail extraction, routing them to data entry staff - Secure handling: Ensure document attachments comply with data retention policies; delete temporary extraction artifacts after processing
Troubleshooting
"Extraction template not found"
Cause: Template is inactive or the document type does not match
Solution: Query sn_doc_template with active=true to see available templates. Verify the document_type field matches your submission.
"Low confidence scores across all fields"
Cause: Poor document quality (low resolution, skewed scan, handwritten text) or template mismatch Solution: Check document resolution (minimum 300 DPI for OCR). Verify the document matches the template's expected layout. Consider creating a new template for non-standard formats.
"Field mapping validation fails"
Cause: Extracted value does not match the validation regex or target field type
Solution: Review the validation rule in sn_doc_intelligence_field_map. Update the regex to accommodate legitimate variations (e.g., different invoice number formats across vendors).
"Extraction stuck in processing state"
Cause: Document Intelligence engine timeout or processing queue backup
Solution: Check the sn_doc_intelligence_extraction record for error messages. Verify the Document Intelligence engine is running: navigate to Document Intelligence > Dashboard. Re-submit the extraction if needed.
"Duplicate extraction records"
Cause: Same document submitted multiple times
Solution: Before submitting, query sn_doc_intelligence_extraction with source_document=[attachment_sys_id]^state!=failed to check for existing extractions.
Examples
Example 1: Invoice Data Extraction
Input: PDF invoice from Acme Corp uploaded to ServiceNow
Process:
- Identify template: "Vendor Invoice Template" (sys_id: abc123)
- Submit extraction with attachment reference
- Results: 14 fields extracted, average confidence 0.92
- 2 fields below threshold: PO Number (0.78), Line Description (0.81)
- Manual review confirms PO Number correct, Line Description corrected
- Target invoice record created in
sn_proc_invoice
Example 2: Contract Metadata Extraction
Input: Signed MSA PDF for legal review
Process:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_extraction
fields:
template: [contract_template_sys_id]
source_document: [attachment_sys_id]
document_type: contract
state: submitted
short_description: "Extract metadata from Acme Corp MSA"Fields extracted: Contract parties, effective date, term length, total value, governing law, auto-renewal flag, notice period. Populates ast_contract record automatically.
Example 3: Batch Processing Tax Forms
Input: 50 W-9 forms uploaded for vendor onboarding
Process:
- Query all unprocessed W-9 attachments
- Submit batch extraction using W-9 template
- Monitor: 47 extracted successfully, 3 require manual review (handwritten entries)
- Create vendor records in
core_companywith extracted TIN, legal name, address - Route 3 exceptions to data entry team via
sn_doc_intelligence_task
Query for batch status:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction
query: template=[w9_template_sys_id]^sys_created_on>=2026-03-19
fields: sys_id,number,state,confidence_score,error_message
limit: 50Related Skills
document/smart-documents- Manage document templates, versioning, and automated generationlegal/contract-analysis- Analyze extracted contract data for risks and termslegal/contract-obligation-extraction- Extract obligations from contract documentsprocurement/invoice-management- Process extracted invoice data through AP workflowsdevelopment/data-import- Bulk import extracted data into ServiceNow tables
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

