Insurance claims come in by email as PDFs all day. Someone has to open each one, pull out the policy number, claimant info, diagnosis codes, procedure costs, deductible, calculate the reimbursement estimate, decide whether it goes to a regular adjuster or senior review, and check if there’s a pre-authorization number.
For a small claims team processing 40-60 claims a day, that’s up to 8 hours of data entry before any actual review happens.
Built a workflow that does the intake in about 12 seconds.
What it does
Claim email arrives in Gmail → downloads attachment → extracts all claim data → calculates reimbursement → routes by amount → flags missing pre-auth → logs to tracker → notifies claims team on Slack
Claim types supported
Medical, Auto, Property, Life, Disability, Travel
What gets extracted
Claim basics: claim type, policy number, claim number, claimant name/DOB/phone/email, policy holder, relationship
Incident: date, description, location
Provider: name, NPI, address
Clinical: diagnosis codes with descriptions (semicolon-separated), procedures with codes and amounts
Financial: total amount, deductible, co-payment, amount requested, estimated reimbursement (calculated automatically)
Supporting info: pre-authorization number, supporting documents list
Routing logic
-
≤$1,000 → Auto-Approve
-
$1,001–$5,000 → Claims Adjuster
-
Over $5,000 → Senior Adjuster
Auto-flagging
Two issues flagged automatically:
-
Missing Pre-Authorization — triggered when total exceeds $500 and no pre-auth number found
-
No Supporting Documents — triggered when the docs list is empty
What lands in Slack
📋 New Insurance Claim
Claim ID: CLM-MX4F2K
Type: Medical | Policy: POL-2024-00847
👤 Claimant: Jennifer Reyes
📅 Incident Date: 2025-02-18
💰 Financial Summary:
• Total Claimed: $3,200
• Deductible: $500
• Est. Reimbursement: $2,700
📤 Route To: Claims Adjuster
⚠️ Flags: Missing Pre-Authorization
What lands in Google Sheets
Each row: Claim ID, Claim Type, Policy Number, Claimant, Incident Date, Provider, Diagnosis, Total Amount, Deductible, Est. Reimbursement, Route To, Flags, Status (defaults to “Pending Review”), Received Date
Filter by Route To to see your adjuster queue. Filter by Flags to find everything needing attention before review starts.
Setup
You’ll need:
-
Gmail (claims inbox)
-
Google Sheets (free)
-
n8n instance (self-hosted — uses PDF Vector community node)
-
PDF Vector account (free tier: 100 credits/month)
-
Slack
About 15 minutes to configure.
Download
Workflow JSON:
Insurance-claim-processor.json
Full workflow collection:
Setup Guide
Step 1: Get your PDF Vector API key
Sign up at pdfvector.com — free plan works for testing.
Step 2: Create your Sheet
Headers in Row 1:
Claim ID | Claim Type | Policy Number | Claimant | Incident Date | Provider | Diagnosis | Total Amount | Deductible | Est. Reimbursement | Route To | Flags | Status | Received Date
Step 3: Import and configure
Download JSON → n8n → Import from File.
Gmail Trigger + Get a message: Connect Gmail (OAuth2)
PDF Vector - Extract Claim: Add credential, paste API key — uses attachment_0
Process Claim:
-
No config needed — routing and flagging run automatically
-
To change thresholds, edit the
routeToblock in the Code node
Log Claim: Connect Sheets, paste Sheet ID
Notify Claims Team: Connect Slack, select your claims channel
Accuracy
Tested on CMS-1500 medical claim forms, EOBs, auto claim reports, and property damage assessments.
-
Policy number, claimant name, incident date: ~96%
-
Procedure codes and amounts: ~94% on structured forms
-
Diagnosis codes (ICD): ~92%
-
Deductible and co-payment: ~90%
-
Pre-authorization detection: ~88%
Digital PDFs from providers and insurers work best. Handwritten or photographed claim forms: accuracy drops significantly.
Cost
3-4 credits per claim. Free tier covers ~25-30 claims per month.
Customizing it
Adjust routing thresholds: In the Code node, edit the $5,000 and $1,000 values
Split Slack channels by adjuster level: Add a Switch node before Slack — Senior Adjuster claims go to #claims-senior, auto-approvals go to #claims-approved
Add email acknowledgment to claimant: After Sheets logging, add a Gmail node to auto-reply with the generated Claim ID
Questions? Drop a comment.
