Install
openclaw skills install @uday390/deepread-insuranceExtract structured data from insurance claims, policies, EOBs, and loss reports. Pre-built schemas for claimant info, coverage, damages, adjuster notes. PII redaction for compliant sharing. 97%+ accuracy. Free 2,000 pages/month.
openclaw skills install @uday390/deepread-insuranceExtract structured data from insurance claims, policy documents, Explanations of Benefits (EOBs), loss reports, and adjuster notes. Then redact claimant PII before sharing with third parties.
This skill instructs the agent to POST documents to
https://api.deepread.techand poll for results. No system files are modified.
Submit a claim form and get structured JSON:
{
"claim_number": {"value": "CLM-2026-078432", "hil_flag": false, "found_on_page": 1},
"policy_number": {"value": "POL-HO3-445521", "hil_flag": false, "found_on_page": 1},
"claimant_name": {"value": "Robert Johnson", "hil_flag": false, "found_on_page": 1},
"date_of_loss": {"value": "2026-02-14", "hil_flag": false, "found_on_page": 1},
"date_reported": {"value": "2026-02-15", "hil_flag": false, "found_on_page": 1},
"loss_type": {"value": "Water Damage", "hil_flag": false, "found_on_page": 1},
"loss_description": {"value": "Burst pipe in basement caused flooding to finished living area, damaged drywall, carpet, and personal property", "hil_flag": false, "found_on_page": 2},
"property_address": {"value": "789 Elm Dr, Denver, CO 80202", "hil_flag": false, "found_on_page": 1},
"coverage_type": {"value": "Homeowners HO-3", "hil_flag": false, "found_on_page": 1},
"deductible": {"value": 1000.00, "hil_flag": false, "found_on_page": 1},
"estimated_damages": {"value": 24500.00, "hil_flag": true, "reason": "Multiple estimates on different pages"},
"adjuster": {"value": "Sarah Martinez, License #ADJ-44521", "hil_flag": false, "found_on_page": 3},
"line_items": {"value": [
{"category": "Structural", "description": "Drywall replacement — basement", "amount": 8500.00},
{"category": "Flooring", "description": "Carpet removal and replacement", "amount": 6200.00},
{"category": "Personal Property", "description": "Damaged furniture and electronics", "amount": 5800.00},
{"category": "Mitigation", "description": "Water extraction and drying", "amount": 4000.00}
], "hil_flag": false, "found_on_page": 3},
"status": {"value": "Under Review", "hil_flag": false, "found_on_page": 1}
}
Fields with hil_flag: true need human review. Everything else is high-confidence.
open "https://www.deepread.tech/dashboard/?utm_source=clawhub"
Save it:
export DEEPREAD_API_KEY="sk_live_your_key_here"
Pre-built schema for insurance claims and loss reports:
{
"type": "object",
"properties": {
"claim_number": {"type": "string", "description": "Claim number or reference ID"},
"policy_number": {"type": "string", "description": "Insurance policy number"},
"claimant_name": {"type": "string", "description": "Name of the claimant or insured"},
"date_of_loss": {"type": "string", "description": "Date the loss or incident occurred (YYYY-MM-DD)"},
"date_reported": {"type": "string", "description": "Date the claim was reported (YYYY-MM-DD)"},
"loss_type": {"type": "string", "description": "Type of loss (Water Damage, Fire, Theft, Auto Collision, Liability, etc.)"},
"loss_description": {"type": "string", "description": "Detailed description of the loss or incident"},
"property_address": {"type": "string", "description": "Address of the property or location of incident"},
"coverage_type": {"type": "string", "description": "Type of coverage (Homeowners, Auto, Commercial, Liability, etc.)"},
"deductible": {"type": "number", "description": "Policy deductible amount"},
"estimated_damages": {"type": "number", "description": "Total estimated damage amount"},
"adjuster": {"type": "string", "description": "Claims adjuster name and license number"},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {"type": "string", "description": "Damage category (Structural, Personal Property, Medical, etc.)"},
"description": {"type": "string", "description": "Description of damage or expense"},
"amount": {"type": "number", "description": "Cost or estimate amount"}
}
},
"description": "Itemized list of damages or expenses"
},
"status": {"type": "string", "description": "Claim status (Filed, Under Review, Approved, Denied, Settled)"},
"settlement_amount": {"type": "number", "description": "Final settlement amount if resolved"},
"denial_reason": {"type": "string", "description": "Reason for denial if applicable"}
}
}
import requests
import json
import time
API_KEY = "sk_live_YOUR_KEY"
BASE = "https://api.deepread.tech"
headers = {"X-API-Key": API_KEY}
schema = json.dumps({
"type": "object",
"properties": {
"claim_number": {"type": "string", "description": "Claim number"},
"policy_number": {"type": "string", "description": "Policy number"},
"claimant_name": {"type": "string", "description": "Claimant name"},
"date_of_loss": {"type": "string", "description": "Date of loss (YYYY-MM-DD)"},
"loss_type": {"type": "string", "description": "Type of loss"},
"loss_description": {"type": "string", "description": "Description of the loss"},
"coverage_type": {"type": "string", "description": "Coverage type"},
"deductible": {"type": "number", "description": "Deductible amount"},
"estimated_damages": {"type": "number", "description": "Total estimated damages"},
"line_items": {
"type": "array",
"items": {"type": "object", "properties": {
"category": {"type": "string"},
"description": {"type": "string"},
"amount": {"type": "number"}
}},
"description": "Itemized damages"
},
"status": {"type": "string", "description": "Claim status"}
}
})
with open("claim.pdf", "rb") as f:
job = requests.post(
f"{BASE}/v1/process",
headers=headers,
files={"file": f},
data={"schema": schema},
).json()
job_id = job["id"]
print(f"Processing: {job_id}")
delay = 5
while True:
time.sleep(delay)
result = requests.get(f"{BASE}/v1/jobs/{job_id}", headers=headers).json()
if result["status"] == "completed":
data = result["result"]["data"]
print(json.dumps(data, indent=2))
for field, value in data.items():
if isinstance(value, dict) and value.get("hil_flag"):
print(f"\n REVIEW: {field} — {value.get('reason')}")
break
elif result["status"] == "failed":
print(f"Failed: {result.get('error')}")
break
delay = min(delay * 1.5, 15)
curl -s -X POST https://api.deepread.tech/v1/process \
-H "X-API-Key: $DEEPREAD_API_KEY" \
-F "file=@claim.pdf" \
-F 'schema={"type":"object","properties":{"claim_number":{"type":"string","description":"Claim number"},"policy_number":{"type":"string","description":"Policy number"},"claimant_name":{"type":"string","description":"Claimant name"},"date_of_loss":{"type":"string","description":"Date of loss"},"loss_type":{"type":"string","description":"Type of loss"},"estimated_damages":{"type":"number","description":"Total damages"},"status":{"type":"string","description":"Claim status"}}}'
Redact claimant personal information before sending to adjusters, contractors, or third-party reviewers:
# Step 1: Extract the claim data you need
with open("claim.pdf", "rb") as f:
extract_job = requests.post(
f"{BASE}/v1/process",
headers=headers,
files={"file": f},
data={"schema": schema},
).json()
# Step 2: Redact PII from the original
with open("claim.pdf", "rb") as f:
redact_job = requests.post(
f"{BASE}/v1/pii/redact",
headers=headers,
files={"file": f},
).json()
redact_id = redact_job["id"]
delay = 5
while True:
time.sleep(delay)
result = requests.get(f"{BASE}/v1/pii/{redact_id}", headers=headers).json()
if result["status"] == "completed":
report = result["report"]
print(f"Redacted {report['total_redactions']} PII instances")
for pii_type, info in report["pii_detected"].items():
print(f" {pii_type}: {info['count']} found")
pdf = requests.get(result["redacted_file_url"]).content
with open("claim_redacted.pdf", "wb") as f:
f.write(pdf)
print("Saved: claim_redacted.pdf")
break
elif result["status"] == "failed":
print(f"Failed: {result.get('error')}")
break
delay = min(delay * 1.5, 15)
Connect your own OpenAI, Google, or OpenRouter key via the dashboard. All document processing routes through your provider — zero DeepRead LLM costs, page quota skipped.
Set it up: https://www.deepread.tech/dashboard/byok
clawhub install uday390/deepread-ocrclawhub install uday390/deepread-piiclawhub install uday390/deepread-form-fillclawhub install uday390/deepread-invoiceclawhub install uday390/deepread-medicalclawhub install uday390/deepread-legalclawhub install uday390/deepread-agent-setupclawhub install uday390/deepread-byokGet started free: https://www.deepread.tech/dashboard/?utm_source=clawhub