claim-resolve
A multi-agent pipeline that reconciles claims across carriers, and shows exactly how and why it made each call.
It tackles cross-carrier entity resolution, a real challenge in P&C insurance data architecture, inspired by enterprise data initiatives at companies like Shelter Insurance. Built entirely on a free, open tech stack.
The problem
One person. Three carriers. Three schemas that disagree.
The same claimant shows up across carriers with different field names, formats, and typos. There is no shared key, so a deterministic join silently fails or splits one person into three.
- full_name
- Jonathan R. Meyer
- dob
- 1984-03-12
- policy_no
- A-99231
- name
- Jon Meyer
- birth_date
- 03/12/1984
- pol_id
- B0099231
- claimant
- Meyer, Jonathon
- date_of_birth
- 12-Mar-84
- policy
- 99231-C
resolved_entity #E-1042
Jonathan R. Meyer — one canonical record, linked to all three source rows, with a confidence score and an audit trail.
How it works
A deterministic core, an explainable agent layer.
Cheap, reliable grouping happens in SQL. The expensive, judgment-heavy work is handed to a small graph of specialized agents, each with a single responsibility.
Synthetic Carrier Data
Three carriers, mismatched schemas, generated with Faker
Ingestion
Simulates Qlik Replicate change-data capture
dbt + Snowflake
Deterministic grouping and staging models
LangGraph Pipeline
Schema-Mapping → Entity-Resolution → Conflict-Resolver
Trace Export
Every decision serialized for audit
Dashboard
Inspect resolutions and reasoning
Why it's credible
Built to be audited, not just trusted.
Confidence-based governance
When a match is genuinely ambiguous, it is escalated for human review rather than silently forced. The 0.15–0.75 confidence band routes uncertain calls to a person, so the pipeline never fakes certainty it does not have.
0.15 – 0.75 review bandFull reasoning capture
Every agent's input, reasoning, and output is logged to a structured trace. There is no black box: you can replay exactly what each agent saw and why it decided the way it did.
input · reasoning · outputReal model output
All reasoning shown in the dashboard was captured from actual runs against live data. Nothing is hand-written or mocked, what you see is what the models produced.
captured from live runsBuilt on a free, open tech stack
- Python
- dbt Core
- Snowflake
- LangGraph
- Gemini
- Groq
- Snowflake Cortex
A note on scope
All data is synthetic. Qlik Replicate and Qlik Compose were not used (commercial, no free tier); the ingestion layer simulates their role in the architecture. Full disclosure is in the repo README.