ClaimPilot
Showcase Project

ClaimPilot

I built ClaimPilot to show what AI-powered claims triage could look like at Allstate. It's a working prototype where a Claude-powered agent classifies claims, verifies coverage, screens for fraud, and recommends next steps. The whole triage takes under 60 seconds.

This is an independent portfolio project, not affiliated with or endorsed by Allstate. Built with sample data only.

The Problem

Claims Triage Is a Bottleneck

When a customer files a First Notice of Loss, the claim has to be classified, the policy verified, fraud indicators checked, and the claim routed to the right adjuster. That process typically takes 24 to 48 hours, and misrouted claims add 5 to 10 days on top of that. Allstate processes around 4 million claims a year, so even small improvements at this stage save real money.

24-48 hrs

Current triage time

~4M / year

Allstate claim volume

10-12%

Loss adjustment expense

The Approach

A Multi-Step Agent, Not a Chatbot

The agent decides which tools to call and in what order, reasons between steps, and adapts based on what it finds. If the policy is expired, it skips fraud assessment and goes straight to denial.

1classifyClaim

Extracts claim type, severity, and key details from the free-text description.

  • Claim type (auto, home, liability)
  • Severity level (low to critical)
  • Coverage area and key facts
2lookupPolicy

Checks the policy to verify coverage, deductibles, limits, and status.

  • Policy status (active, expired, cancelled)
  • Coverage type and deductible
  • Policy limits and effective dates
3assessFraud

Evaluates fraud risk indicators and returns a risk score with specific red flags.

  • Risk level (low, medium, high)
  • Fraud score (0 to 100)
  • Specific red flags identified
4estimateResolution

Recommends a resolution path and estimated payout range.

  • Resolution path (approve, investigate, escalate, deny)
  • Estimated payout range
  • Recommended next steps
Architecture

How It All Connects

ClaimPilot system architecture showing the flow from intake form through the Claude agent with 4 specialized tools to the SQLite database and PostHog analytics

Built with Next.js 16, TypeScript, Vercel AI SDK, Claude API, SQLite, and PostHog. View detailed agent workflow diagram

Role Alignment

Why I Built This for Allstate

Each piece of ClaimPilot maps directly to a responsibility in the Digital Product Manager JD.

Product Direction

Product brief with scoped v1 roadmap, success metrics, and explicit non-goals.

I scoped this the way I'd scope a real product: what's in, what's out, and why. Not just a list of features.

Stakeholder & Demand Management

Decision log with 8 documented tradeoffs, each with context, options, and rationale.

Every entry is a tradeoff I actually had to make. These are the kinds of conversations I'd have with stakeholders at Allstate.

Problem Framing

Problem statement grounded in industry data: 24-48 hour triage, 5-10 day misroute delays, ~4M claims/year.

I started with the numbers, not a vague idea. The problem statement connects directly to measurable outcomes.

Data-Driven Decisions

Analytics dashboard with live metrics plus PostHog tracking with a documented analytics plan.

I can walk through what the dashboard shows and explain why each event is tracked. Every metric answers a specific product question.

User Experience

Streaming agent chat that shows each tool call as a card with inputs, outputs, and reasoning.

The UI makes the agent's thinking visible. That's a UX win for users and an auditability requirement for insurance.

AI Innovation

Multi-step Claude agent with 4 tools, Zod-validated I/O, and configurable escalation thresholds.

This isn't a chatbot wrapper. Claude decides which tools to call autonomously, and high fraud risk triggers human review instead of auto-resolving.

PM Thinking

Tradeoffs I Made

I documented 8 decisions during the build. Here are four that shaped the product most.

Streaming tool-use over prompt chaining

I wanted the agent to be autonomous, not follow a fixed script. With streaming tool-use, Claude decides tool order based on what it finds. If the policy is expired, it skips fraud assessment and goes straight to denial. That's closer to how a real adjuster thinks.

Tradeoff

The UI gets more complex (rendering tool call cards with different states) and it's harder to test deterministically. Prompt chaining would have been faster to build.

"Triage assistance" not "claims automation"

No carrier will let AI auto-settle claims. Real claims involve negotiation, documentation, and regulatory compliance. I framed this as decision support because that's what an Allstate hiring manager would actually want to see, not a naive pitch about replacing adjusters.

Tradeoff

“Automated Claims Resolution” sounds more impressive on a resume. But credibility matters more than ambition here.

Four separate tools, not one big prompt

Real claims workflows have separate steps handled by different specialists. Splitting into four tools means each one is independently testable (18 unit tests), and the UI can show each step as its own card. You can actually see the agent think.

Tradeoff

More code, more complex orchestration. A single prompt would have been simpler, but it wouldn't demonstrate tool-use and you couldn't test the pieces independently.

Rule-based tool logic, not LLM-generated

The agent (Claude) decides which tools to call and interprets the results. But the tools themselves are deterministic: pure functions, no API cost, fully testable. In production you'd swap in ML models, but the architecture stays the same.

Tradeoff

Less accurate classification than an LLM could do. Worth it for consistent, testable results in a demo.

Full decision log with 8 entries available on GitHub

Key Results

What the Data Shows

I ran 16 sample claims through the system. Here's what came back.

< 1s

Avg triage time

13%

Fraud flag rate

6%

Auto-resolution rate

18

Unit tests passing

Try it yourself

Load a sample claim, hit submit, and watch the agent work through it step by step.

Built with Next.js 16, TypeScript, Claude API, Tailwind CSS, shadcn/ui, SQLite, and PostHog.

Built By

Marcelo Otero

I'm a product manager who builds. At Marriott, I built an AI agent that turned Figma mockups and requirements into structured Jira stories. At Now Optics, I shipped an order status tool that handled 675K+ lookups and cut call center inquiries by 60%. ClaimPilot is one of several products I've independently shipped using Claude Code, Next.js, and AI APIs.