SKILL.md
PDF Form Filler
Fill out PDF forms automatically and extract data from completed forms.
Overview
This skill helps you:
- Fill PDF forms with provided data
- Extract data from filled forms
- Batch fill multiple forms
- Validate form data
- Create form-filling templates
How to Use
Fill a Form
"Fill this PDF form with the following data:
- Name: John Smith
- Date: 2026-01-29
- Amount: $1,500"
Extract Form Data
"Extract all form field values from this PDF"
"What data is filled in this form?"
Batch Fill
"Fill 50 copies of this form using data from the spreadsheet"
"Generate forms for each row in this CSV"
Form Field Types
Supported Fields
Field Type
Description
Fill Method
Text Field
Single/multi-line text
Direct text entry
Checkbox
Yes/No selection
Check/uncheck
Radio Button
One of many options
Select option
Dropdown
List selection
Choose value
Date Field
Date picker
Date value
Signature
Digital signature
Signature image/certificate
Combo Box
Dropdown with text entry
Select or type
Field Identification
## Form Fields: [Form Name]
### Field Map
| Field Name | Type | Required | Page | Notes |
|------------|------|----------|------|-------|
| applicant_name | Text | Yes | 1 | Max 50 chars |
| birth_date | Date | Yes | 1 | MM/DD/YYYY |
| gender | Radio | Yes | 1 | M/F/Other |
| employed | Checkbox | No | 1 | Check if yes |
| state | Dropdown | Yes | 2 | US states |
| signature | Signature | Yes | 3 | Digital sig |
Fill Templates
Data Mapping Template
## Form Fill Template: [Form Name]
### Form Info
- **File**: application_form.pdf
- **Total Fields**: 25
- **Required Fields**: 15
### Field Mappings
Personal Information
applicant_name: "${firstName} ${lastName}"
date_of_birth: "${birthDate}"
ssn_last_four: "${ssnLast4}"
phone: "${phone}"
email: "${email}"
Address
street_address: "${address.street}"
city: "${address.city}"
state: "${address.state}"
zip_code: "${address.zip}"
Employment
currently_employed: ${isEmployed} # checkbox
employer_name: "${employer.name}"
job_title: "${employer.title}"
Selections
payment_method: "${paymentMethod}" # dropdown
agree_terms: true # checkbox
### Sample Data
{
"firstName": "John",
"lastName": "Smith",
"birthDate": "1990-05-15",
"phone": "555-123-4567",
"email": "john.smith@email.com",
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
},
"isEmployed": true,
"employer": {
"name": "Acme Corp",
"title": "Manager"
},
"paymentMethod": "Direct Deposit"
}
Output Formats
Fill Result Report
## Form Fill Result
### Summary
| Status | Value |
|--------|-------|
| **Form** | application_form.pdf |
| **Fields Filled** | 23/25 |
| **Errors** | 2 |
| **Output** | filled_application.pdf |
### Filled Fields
| Field | Value | Status |
|-------|-------|--------|
| applicant_name | John Smith | ✅ |
| date_of_birth | 05/15/1990 | ✅ |
| phone | 555-123-4567 | ✅ |
| state | NY | ✅ |
| payment_method | Direct Deposit | ✅ |
### Errors/Warnings
| Field | Issue | Suggestion |
|-------|-------|------------|
| ssn | Field not found | Check field name |
| signature | Requires certificate | Add signature manually |
### Validation
- ✅ All required fields filled
- ✅ Date formats correct
- ⚠️ Signature field needs manual completion
Extracted Data Report
## Form Data Extraction
### Source: completed_form.pdf
### Extracted Values
{
"form_title": "Employment Application",
"submission_date": "2026-01-29",
"fields": {
"applicant_name": "Jane Doe",
"date_of_birth": "1985-03-20",
"email": "jane.doe@email.com",
"phone": "555-987-6543",
"address": "456 Oak Ave, Chicago, IL 60601",
"position_applied": "Senior Developer",
"salary_expectation": "$120,000",
"available_start": "2026-03-01",
"references_provided": true
}
}
### Field Statistics
Metric
Value
Total fields
30
Filled fields
28
Empty fields
2
Extraction confidence
98%
Batch Processing
Batch Fill Job
## Batch Form Fill
### Configuration
- **Template Form**: w9_form.pdf
- **Data Source**: vendors.csv
- **Records**: 150
- **Output Folder**: /filled_w9s/
### Data Preview
| Row | Name | TIN | Address |
|-----|------|-----|---------|
| 1 | Acme Corp | XX-XXX1234 | 123 Main St |
| 2 | Beta LLC | XX-XXX5678 | 456 Oak Ave |
| ... | ... | ... | ... |
### Progress
| Status | Count | % |
|--------|-------|---|
| ✅ Completed | 145 | 97% |
| ⚠️ Warnings | 3 | 2% |
| ❌ Errors | 2 | 1% |
### Errors
| Row | Issue |
|-----|-------|
| 47 | Invalid TIN format |
| 89 | Missing required: Address |
### Output Files
- w9_acme_corp.pdf
- w9_beta_llc.pdf
- ...
Form Validation
Validation Rules
## Form Validation Rules
### Field Validations
| Field | Rule | Error Message |
|-------|------|---------------|
| email | Valid email format | "Invalid email address" |
| phone | 10 digits | "Phone must be 10 digits" |
| ssn | XXX-XX-XXXX format | "Invalid SSN format" |
| date | MM/DD/YYYY | "Use MM/DD/YYYY format" |
| zip | 5 or 9 digits | "Invalid ZIP code" |
| amount | Numeric, > 0 | "Enter positive number" |
### Cross-Field Validations
| Rule | Fields | Condition |
|------|--------|-----------|
| Conditional required | employer_name | Required if employed = true |
| Date range | end_date | Must be after start_date |
| Sum check | item_totals | Must equal grand_total |
Validation Report
## Pre-Fill Validation
### Data Validation Results
| Field | Value | Valid | Issue |
|-------|-------|-------|-------|
| email | john@email | ❌ | Missing domain |
| phone | 555-1234 | ❌ | Only 7 digits |
| date | 2026-01-29 | ✅ | - |
| zip | 10001 | ✅ | - |
### Summary
- ✅ Valid: 18 fields
- ❌ Invalid: 2 fields
- ⚠️ Warnings: 3 fields
### Recommendations
1. Fix email format: add domain (e.g., @company.com)
2. Complete phone number with area code
Common Form Types
Government Forms
Form
Purpose
Key Fields
W-9
Tax identification
TIN, name, address
I-9
Employment eligibility
ID info, citizenship
W-4
Withholding
Allowances, status
1099
Contractor income
Income, payer info
Business Forms
Form
Purpose
Key Fields
NDA
Confidentiality
Parties, terms, dates
Invoice
Billing
Items, amounts, terms
PO
Purchase order
Items, quantities, vendor
Application
Various
Personal info, history
Tool Recommendations
Desktop Software
- Adobe Acrobat Pro: Full form features
- Foxit PDF Editor: Good form support
- PDFescape: Free online option
- JotForm: Form creation and filling
Programming Libraries
- pdf-lib (JavaScript): Fill and create forms
- PyPDF2 (Python): Basic form filling
- iText (Java/.NET): Enterprise forms
- PDFBox (Java): Apache project
Automation Tools
- Adobe Acrobat Actions: Batch processing
- Power Automate: Microsoft integration
- Zapier + PDF.co: Cloud automation
Limitations
- Cannot execute actual form filling (provides guidance)
- Digital signatures require proper certificates
- Some secured PDFs prevent form filling
- Complex calculations may not auto-update
- Flattened forms cannot be edited
- Field names must match exactly