Batch Processing
Fill hundreds of forms simultaneously from spreadsheet data - complete in 2 minutes what would take hours of manual work
Overview
Batch Processing accepts a CSV or Excel file where each row contains data for one form instance, then generates one filled PDF per row. A 100-row file for a W-4 or I-9 produces 100 completed PDFs in roughly 2 minutes. The same workflow applies to 1003 mortgage applications, COBRA election notices, CMS-1500 claim forms, or any repeating template that shares structure across recipients.
The system automatically maps each spreadsheet column to the appropriate form field using AI — a semantic mapping from column names to field IDs, including support for multi-column mappings (e.g., separate Street, City, State, Zip columns feeding a single address field). Raw column values are then normalized by AI to match field expectations: formatting dates, converting "Yes"/"No"/"1"/"0" to checkbox state, and trimming text that exceeds a field's character limit.
Row-level PDF generation runs in parallel — rows execute concurrently rather than sequentially. Each row's processing is isolated to prevent data from one row affecting another's output. Once a row's PDF is generated, a completion event is emitted so the UI can update the progress indicator in real time.
Before any processing starts, batch-level free-form context text (entered by the user at batch creation) is decrypted using workspace-scoped keys stored in Azure Key Vault.
Video Tutorial: Watch our step-by-step video guide demonstrating CSV upload, field mapping, and merged PDF output.
Real-World Example: Food service operators like Kona Ice automated 250+ permit applications annually with 100% accuracy after fine-tuning.
Key Capabilities
- Bulk Form Generation: Fill one form template with data from hundreds or thousands of rows
- CSV/Excel Support: Upload spreadsheet data with automatic AI-powered column-to-field mapping
- Intelligent Field Mapping: One or more source columns per field, including multi-column mappings (e.g., separate Street, City, State, Zip columns)
- Custom PDF Naming: Use an optional "FileName" column to assign a distinct name to each output PDF
- Free-Form Context: Add text that applies to all forms; encrypted at rest and applied to relevant fields at processing time
- Value Coercion: AI handles date formatting, checkbox interpretation, and type normalization automatically
- Progress Tracking: Completion events emitted as each row finishes, visible in real time
- Error Isolation: Failed rows do not halt the job; successful rows complete independently
- Parallel Processing: Multiple rows execute concurrently (~2 minutes for 100 forms)
- Per-Row Processing Safety: Each row's processing is isolated to prevent cross-row data contamination
- Merged PDF Output: Combine all filled forms into a single PDF with bookmarks, page numbering, and separator pages
- Individual PDF Download: Access each filled form separately for individual submission
- Batch History: Complete audit trail of all batch jobs with source data and results
- Result Filtering: Filter results by success/failure status for quality control
- Re-processing: Retry failed rows with corrected data without re-running successful rows
How It Works
Visual Learner? Watch our step-by-step video tutorial with screenshots showing the CSV upload interface, field mapping screen, batch progress tracking, and merged PDF results.
Step-by-Step Batch Processing Workflow
1. Prepare Your Spreadsheet Data
Create a CSV or Excel file with your data:
- Each row = one form instance to fill
- Each column = a form field (name, address, date, etc.)
- First row = column headers in English (e.g., "First Name", "Start Date", "Email Address")
- Data itself can be in any language
Pro Tips:
- Use descriptive English column headers that match form field names
- Include optional "FileName" column to create unique PDF names for each row
- Data can contain any language/special characters
Example CSV for 100 I-9 Verifications:
FileName, Last Name, First Name, Middle Initial, Date of Birth, SSN, Citizenship Status, Document Title, Document Number, Expiration Date
i9_jane_smith, Smith, Jane, A, 03/22/1985, 123-45-6789, US Citizen, US Passport, 123456789, 2030-01-01
i9_john_doe, Doe, John, B, 01/15/1990, 987-65-4321, Permanent Resident, Alien Registration Card, A987654321, 2028-06-15
...
Technical Specifications:
- Maximum file size: 2 MB
- Maximum rows: 1,000 (increase available for Enterprise)
- Maximum columns: 20
- Supported formats: CSV, Excel (.xls/.xlsx), TSV
- Processing time: ~2 minutes for 100 rows
2. Access Batch Fill in Instafill.ai
- Log in to your Instafill.ai account
- Navigate to Forms section
- Upload your form template or select an existing form
- Click the form menu (three dots ⋮)
- Select "Fill out form in batch"
3. Upload Data & Add Context (Optional)
- Upload your CSV/Excel file - system automatically detects columns and data types
- Add free-form text (optional) - provide additional context or instructions that apply to ALL forms in the batch
- Example: "This application is submitted on behalf of XYZ Corporation for the 2024 fiscal year."
- This text is encrypted at rest and decrypted before each row is processed; the AI applies it to relevant fields
4. Review Automatic Field Mapping
AI-powered column mapping assigns each form field to one or more spreadsheet column names:
- Exact name matching: Column "First Name" → Field "first_name"
- Semantic matching: Column "applicant_name" → Field "Full Name"
- Multi-column mapping: Columns ["Street", "City", "State", "Zip"] → single address field
- Type detection: Column with dates → Date field, automatically normalized to match the field's required format
Manual Adjustments:
- Review all suggested mappings
- Click any field to change its column mapping
- Leave unmapped fields blank if not needed
- Add constant values for fields not in spreadsheet
Value Coercion:
- Interprets "Yes/No", "True/False", "1/0" as checkbox checked/unchecked state
- Reformats dates to match field-specific patterns (MM/DD/YYYY, YYYY-MM-DD, etc.)
- Truncates or flags text that exceeds the field's character limit
- Runs at reduced reasoning effort for speed — optimized for normalization tasks rather than full inference
Preview Before Processing:
- View first 5 rows with mapped data overlaid on form
- Verify field assignments are correct
- Adjust mappings if preview shows errors
5. Generate Filled PDFs
- Click "Generate" to start batch processing
- Rows are processed in parallel rather than in sequence — all rows run concurrently
- Each row's processing context is fully isolated so tracking and logging data cannot bleed between rows
- After a row's PDF is written and its AI cost is calculated, a completion event is emitted and the UI progress indicator updates
- Real-time progress tracking shows completed, in-progress, and failed rows
- Processing runs in background - continue other work
Typical Processing Time:
- 10 forms: 30 seconds
- 50 forms: 1 minute
- 100 forms: 2 minutes
- 500 forms: 15-30 minutes
- 1,000 forms: 30-60 minutes
6. Download Individual or Merged PDFs
Option A: Individual PDFs
- Each form downloads as a separate PDF
- Filenames use "FileName" column if provided, otherwise auto-generated
- Download all as ZIP archive
- Best for: Separate submissions, email attachments, document management systems
Option B: Merged PDF (Recommended for Bulk Printing)
- Select multiple or all filled PDFs
- Click "Merge into flat PDF"
- Adjust page ranges if needed (e.g., exclude cover pages, select specific forms)
- Click "Merge" to combine into single PDF
- Download one file containing all forms with page breaks
Merge Options:
- Page order: Sequential or sorted by column value
- Separator pages: Optional data summaries between forms
- Bookmarks: Auto-generated navigation for each form
- Page numbering: Restart per form or continuous
7. Handle Failed Rows (If Any)
Most batches achieve 95-99% success rate on first run. Rows are processed independently — a failure in one row does not cancel other rows.
If rows fail:
- Download error report showing failed rows and specific error messages
- Common failure reasons:
- Missing required field data
- Invalid date formats that could not be normalized to the field's required pattern
- Data exceeds field character limits
- Invalid dropdown or radio button values
- Fix source data in your CSV/Excel file
- Re-run batch for failed rows only (no need to reprocess successful rows)
- Download corrected PDFs
Best Practices & Tips
Follow these proven strategies to achieve optimal batch processing results:
1. Use Descriptive English Column Headers
Why it matters: The AI matches column names to form field IDs semantically. Clear English headers improve match confidence.
Good Headers:
- "First Name" → Maps to "First Name" field
- "Date of Birth" → Maps to "DOB" or "Birth Date" fields
- "Email Address" → Maps to "Email" field
- "Home Address Line 1" → Maps to "Street Address" field
Poor Headers:
- "col1", "col2", "col3" → No semantic signal
- "Nombre" (Spanish for name) → May not map to English form field
- "xyz_field" → Ambiguous abbreviation
The headers drive mapping; the data values themselves can be in any language.
2. Include a "FileName" Column
Purpose: Assign unique, meaningful PDF filenames instead of generic auto-generated names.
Example:
FileName, First Name, Last Name, Application Number
cobra_john_doe_2024, John, Doe, COBRA-2024-001
cobra_jane_smith_2024, Jane, Smith, COBRA-2024-002
Result:
cobra_john_doe_2024.pdfcobra_jane_smith_2024.pdf
3. Test with Small Batches First
Run 5-10 rows before processing the full batch. Catching a mapping error in a 5-row test takes seconds to fix; catching it after 500 rows have already processed wastes time and may require re-running the entire job.
4. Provide Free-Form Context Text
The optional context text field accepts plain text that applies to all rows. It is encrypted at rest and decrypted before each row's processing begins, so the AI can reference it when filling fields that benefit from additional context — such as submission authority references on CMS-1500 forms or grant program identifiers on government applications.
5. Review Field Mappings Carefully
Check that:
- Date columns map to date fields so they are formatted correctly to the field's required pattern
- Checkbox columns contain consistent values ("Yes"/"No" or "1"/"0", not a mix)
- Separate address component columns (Street, City, State, Zip) map to their correct individual fields rather than a single combined field
6. Format Data Consistently
The field value coercion pipeline can normalize common date and boolean formats, but consistent input reduces the chance of edge-case failures:
- Dates: Use one format per column (e.g.,
01/15/2024throughout — do not mix withJan 15, 2024) - Checkboxes: Use
Yes/Noor1/0consistently within a column - Phone Numbers: Use one format (e.g.,
(555) 123-4567throughout)
7. Handle Large Batches Strategically
For 500+ row batches, split into sub-batches of 200-300 rows for faster feedback and simpler error recovery. Enterprise customers can use the RESTful API to trigger batches programmatically and webhooks to receive completion notifications.
8. Leverage Merged PDF for Bulk Printing
Select all completed rows and use "Merge into flat PDF" when you need a single file for bulk printing, government submission, or archival. The merged file includes auto-generated bookmarks so reviewers can navigate directly to any individual form.
Use Cases
Batch processing is most impactful in high-volume workflows where the same form template is filled repeatedly from a structured data source. Insurance companies generate policy documents from a CSV of policyholders, healthcare providers submit hundreds of CMS-1500 Medicare claim forms from billing data, government agencies process stacked permit applications, and law firms produce discovery response packages for all clients in a case at once.
Examples by form type:
- W-4: HR departments batch-generate W-4s for new hire cohorts from HRIS exports
- I-9: Staffing agencies process large seasonal hire classes from onboarding spreadsheets
- 1003 Mortgage Application: Lenders pre-fill borrower demographic sections from lead-management exports
- COBRA Election Notice: Benefits administrators generate per-employee COBRA packages from termination data
- CMS-1500: Billing teams submit claim batches from practice management system exports
Tax & Compliance Examples: Construction firms batch fill NJ ST-8 tax exemption certificates and similar high-volume compliance forms using CSV data exports from their accounting systems.
Benefits
- Scale: Process hundreds of forms in minutes — a 100-row W-4 batch completes in roughly 2 minutes using parallel row processing
- Consistency: Every row goes through the same column mapping and field value coercion logic, so formatting and field placement are uniform across all PDFs
- Error Isolation: A failed row does not interrupt processing of other rows; the job continues and flags the failure with a specific error message
- Accurate Data Coercion: The system normalizes dates, booleans, and type mismatches before writing to the PDF, reducing rejection rates
- Audit Trail: The batch job log records who initiated it, when, and the outcome per row — including per-row AI usage for cost tracking
- Flexible Output: Download individual PDFs per row or merge all into one file for bulk printing or submission
Security & Privacy
All batch data is workspace-scoped — no batch job or its results are visible outside the initiating workspace. Authentication middleware enforces this on every request.
Free-form context text entered at batch creation is encrypted with workspace-scoped keys stored in Azure Key Vault and decrypted immediately before each row's processing begins. Spreadsheet data is not retained beyond the configured workspace retention period.
Each row's processing context is fully isolated — AI call metadata and tracking data cannot leak from one row into another's logs.
Common Questions
How many forms can I process in a single batch?
Batch limits depend on your subscription plan:
- Free Plan: Up to 10 forms per batch
- Starter Plan: Up to 50 forms per batch
- Professional Plan: Up to 500 forms per batch
- Enterprise Plan: Up to 10,000 forms per batch (custom limits available)
For batches exceeding plan limits, contact sales to discuss enterprise options or process in multiple smaller batches.
Processing Speed (rows run in parallel):
- Small batches (<50 forms): 5-15 minutes
- Medium batches (50-500 forms): 15-60 minutes
- Large batches (500-2,000 forms): 1-3 hours
- Very large batches (2,000+ forms): 3-6 hours
Processing happens in the background, so you can continue other work while batches run.
What happens if some rows fail?
Rows run independently — a failure in one row does not cancel other rows. Failed rows are flagged with a specific error message and excluded from the output ZIP or merged PDF.
Common Failure Reasons:
- Missing required field data
- Date values that could not be normalized to the field's required format
- Text exceeding the field's character limit after coercion
- Values that do not match a dropdown field's allowed options
Recovery Workflow:
- Download the error report (CSV of failed rows with error messages)
- Fix the source data
- Re-run batch for only the failed rows — successful rows are not reprocessed
Most batches achieve a 95-99% success rate on the first run.
How does column mapping work?
The AI column mapping assigns each form field to one or more spreadsheet column names. A field can map to a single column or a list of columns when multiple columns together supply one field's value (e.g., separate Street, City, State, Zip columns populating a single address field).
Automatic Mapping Logic:
- Exact string match between column header and field label
- Semantic similarity (e.g., "applicant_name" → "Full Name")
- Data type pattern match (column of dates → date-type field)
Manual Adjustment:
- Review AI suggestions before running the batch
- Select a different column from the dropdown for any field
- Leave a field unmapped to leave it blank in all output PDFs
- Assign a constant value to a field that is not in the spreadsheet
Mapping Preview:
- The first 5 rows display with mapped values overlaid on the form
- Verify data appears in correct locations before starting the full batch
Save Mapping Templates:
- Save a mapping configuration by name
- Apply it automatically to future uploads of similarly structured files
Can I fill forms with tables using batch processing?
Yes. Each spreadsheet row fills one complete form, including any table fields within that form. For forms that contain table sections (such as a CMS-1500 service lines table or a Schedule D capital gains table), the batch row must contain the table data as well — either encoded in multiple columns (e.g., item_1_desc, item_1_amount, item_2_desc, item_2_amount) or handled by the Table & List Field Processing logic if the form uses structured table fields.
See Table & List Field Processing for details on how row-level data is extracted and mapped within a single form.
Can I generate a single merged PDF from a batch?
Yes. After the batch completes, select any subset of completed rows (or all rows) and click "Merge into flat PDF". The resulting file contains one form per section, with auto-generated bookmarks for navigation. Merge options include:
- Page order: Sequential or sorted by a column value
- Separator pages: Include or exclude a data summary page between forms
- Bookmarks: Auto-generate named PDF bookmarks per form
- Page numbering: Restart per form or continuous across the merged document
How do I handle checkboxes and radio buttons in batch data?
The field value coercion pipeline interprets checkbox and radio button values from the spreadsheet column:
- Checkboxes:
true/false,yes/no,1/0,checked/unchecked— all recognized - Radio Buttons: The column value is matched against the field's allowed options; the closest match is selected
- Comma-separated values:
"option1, option2"can check multiple checkboxes if the form supports multi-select
Use a consistent value format within each column. Mixing yes, Y, and true in the same column increases the chance of a normalization failure.
Can I schedule batch processing to run automatically?
Enterprise customers can automate batch initiation via the RESTful API and receive completion notifications via webhooks. Common patterns include:
- Claims system exports a CSV at 6:00 AM; an API call triggers the batch at 6:15 AM; completed PDFs are available before 7:00 AM
- An n8n or Zapier workflow watches a folder, uploads the file via API, and sends a Slack notification when the webhook fires
Contact sales to discuss dedicated processing queues for time-sensitive large batches.
What's the difference between batch processing and using profiles?
Batch Processing: Fill the same form template many times, each with different data from a spreadsheet row. Produces one PDF per row. Use case: 100 employees each need their own W-4.
Profiles: Store one entity's data and reuse it across many different form types. Produces one PDF per form. Use case: One employee's data fills a W-4, I-9, and direct deposit authorization in three separate sessions.
Combination: A batch job can draw on a profile for fields that are constant across all rows (e.g., employer information) while taking employee-specific fields from the spreadsheet columns. This eliminates the need to include redundant employer data in every row.