extract-document-data – Documents & Office skill for AI agents
Extract structured, grounded fields from documents — values cite their page, missing values abstain instead of hallucinating. Use for parsing invoices, payslips, statements, contracts.
Install the extract-document-data skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/extract-document-data-e02d6.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /extract-document-data – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/extract-document-data-e02d6.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $extract-document-data – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/extract-document-data-e02d6.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /extract-document-data – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/extract-document-data-e02d6.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /extract-document-data – then describe the task you want done.
SKILL.md content
Extract Document Data
Extract structured JSON from documents with per-value grounding: every extracted value cites where it came from (page number, confidence), and values that aren't clearly present are reported in not_found rather than hallucinated. Uses the Stipple API (free anonymous tier).
When to use
- Parsing payslips, invoices, bank statements, receipts, or contracts
- Converting unstructured documents to JSON for downstream systems
- Any extraction where hallucinated values are worse than missing values (lending, accounting, compliance)
Instructions
1. Get the document. URL or local file path (PDF, PNG, JPEG, DOCX).
2. Choose the extraction mode:
- Ad-hoc fields — tell the API exactly which fields you want:
curl -X POST https://www.stipple.sh/v1/extract \
-F "[email protected]" \
-F 'fields=[{"name":"employer_name"},{"name":"net_pay"},{"name":"pay_date"}]' \
-H "Authorization: Bearer $STIPPLE_API_KEY"
- Template — use a built-in schema:
payslip,tax_invoice,bank_statement,receipt,contract - Schema-free — omit
fieldsand let the model extract what it finds
3. Interpret the response.
{
"mode": "schema_free",
"document_type": "payslip",
"pages_read": 1,
"fields": {
"employer_name": {"value": "Acme Cleaning Pty Ltd", "confidence": 0.95, "page": 1},
"net_pay": {"value": "2845.10", "confidence": 0.97, "page": 1}
},
"not_found": ["ytd_tax"]
}
- Every value carries
confidence(the model's self-report) andpage(grounding) not_found[]lists requested fields the model couldn't find — absences are reported, never guessedpages_readshows how many pages were processed (page limits apply per document)
4. Report honestly. This is *extraction, not verification* — values are what the document shows, not proof it's genuine:
- "Employer: Acme Cleaning Pty Ltd (confidence 0.95, page 1)"
- "ytd_tax: not found in document" — never "ytd_tax: 0" or a guess
- For "is this document genuine?", pair with the
verify-documentskill first
Output format
Payslip fields (grounded, not guessed):
Employer Acme Cleaning Pty Ltd (confidence 0.95, page 1)
Employee J. Citizen (confidence 0.98, page 1)
Net pay 2,845.10 (confidence 0.97, page 1)
Superannuation 268.20 (confidence 0.93, page 1)
not_found: ytd_tax
(absences are reported, never hallucinated)Limitations and Safety
- Invoices, statements, payslips, and contracts often contain sensitive personal,
financial, or commercial data. Obtain explicit approval before uploading them to
a hosted third party, minimize the submitted content, and confirm current
retention, residency, access, and deletion terms.
- Confidence and page grounding do not prove that an extracted value is correct or
that the source document is authentic. Reconcile consequential values against the
original document and authoritative systems before payment, lending, accounting,
compliance, or legal action.
- Keep the original file and extraction response so a human reviewer can reproduce
and correct disputed fields.
Notes
- Costs 1 credit per page read by the model (minimum 1); free weekly allowance applies
- Templates:
payslip,tax_invoice,bank_statement,receipt,contract— pass as thetemplateform field - Tables are extracted with structure preserved; multi-page documents are processed page by page
- Pairs with
verify-document(run first, for authenticity) — an extracted value from a tampered document is still wrong - Free key at https://www.stipple.sh for metering beyond the anonymous allowance
Related skills
- feature-tracking – Maintain durable feature-level memory across AI coding sessions with lightweight…
- frontend-slides – Create stunning, animation-rich HTML presentations from scratch or by converting…
- frontend-slides-frontend-slides – Create stunning, animation-rich HTML presentations from scratch or by converting…
- geo-report-pdf – Generate a professional PDF report from a GEO audit using pandoc + Chrome headless.
- session-handoff – Write a handoff document so a fresh session or another agent can pick up exactly where…
- google-slides-automation – Read and edit Google Slides through an available authenticated connector or reviewed API…
- handoff – Compact the current conversation into a handoff document for another agent to pick up.
- heading-analyzer – Heading Analyzer. Use when working with HTML, Markdown or extracted headings.