Bryan Bartlett

Blinded demo. The claims are invented; nothing here comes from the client. ← the case file

Follow one claim email from the inbox to the right claim.

I built a proof of concept that reads claim emails, checks them against plain rules, files the clean ones and sets anything unclear aside for an adjuster. This copy runs in your browser on invented emails, so you can poke at it.

real
the five stations and the order they run in
invented
every email, name, claim number, date, amount and score
results
in the case file, not here

Pick an email and follow it.

Three invented emails take three paths through the same five stations. The clean one gets filed. The other two stop and wait for an adjuster.

sample

Showing the normal claim with every step filled in. Turn on JavaScript to try the other two samples and step through them.

  1. inbox: picked up
  2. read + extract: CL-847291 found
  3. check against rules: all checks pass
  4. route: filed
  5. review folder: not needed

All five steps for the normal claim are filled in below.

the email

from
Jordan Sample <jordan.sample@example.com>
to
claims@insurer.example
subject
Burst pipe in the kitchen, invoice and photos attached
received
13 Feb 2026 · 07:52
attached
invoice-plumber.pdf · kitchen-1.jpg · kitchen-2.jpg

Hi, following up on my claim CL-847291 for the burst pipe on 10 February. The plumber's invoice and two photos are attached.

Thanks, Jordan

what the workflow does · every name, number and date here is invented

  1. 01 inbox picked up

    Not reached yet.

    The email lands in the shared inbox, and Power Automate picks it up.

    detail
    mailbox
    claims@insurer.example
    trigger
    new email, Power Automate
    attached
    3 files
  2. 02 read + extract CL-847291 found

    Not reached yet.

    The subject line has no claim number, so the cheap pattern comes up empty. Azure OpenAI reads the body and finds CL-847291.

    detail
    pattern
    subject: no match
    AI read
    body: CL-847291
    confidence
    0.97
    also read
    water damage, loss on 10 Feb 2026, sender Jordan Sample
  3. 03 check against rules all checks pass

    Not reached yet.

    The claim exists in the claims system, so filing is safe. The plain rule checks pass too: the invoice comes after the loss, its lines add up, and the photo dates fit.

    detail
    • Pass: claim CL-847291 exists
    • Pass: invoice dated 12 Feb, after the loss on 10 Feb
    • Pass: invoice lines add up to $1,840.00
    • Pass: photos taken 10 to 11 Feb, inside the loss window
  4. 04 route filed

    Not reached yet.

    The email and all three attachments go onto claim CL-847291. Jordan gets a confirmation, and each step lands in the audit log.

    detail
    filed to
    CL-847291
    files
    the email and 3 attachments
    reply
    confirmation to jordan.sample@example.com
    audit
    07:52:41 matched · filed 4 · replied
  5. 05 review folder not needed

    Not reached yet.

    Nothing was flagged, so nothing waits for an adjuster. The adjuster finds the documents already on the claim, with the audit line beside them.

    detail
    review
    nothing in the review folder for this email
    adjuster
    no message needed

FILEDFiled to claim CL-847291. Nothing is waiting for an adjuster.

The same inbox, two ways.

by hand

  1. Someone opens each email in the shared inbox.
  2. They hunt for the claim number: in the subject, in the body, or nowhere.
  3. They find the claim and drag every attachment onto it.
  4. A document on the wrong claim is a quiet mess that somebody finds later.

with the workflow

  1. Power Automate picks up each email as it lands.
  2. A pattern looks for the number first. Azure OpenAI reads the body only if the pattern comes up empty.
  3. The flow confirms the claim exists before it files anything.
  4. An adjuster sees what is flagged or unmatched, with the reason attached.

Under the hood.

The same five stations as the case file. Cheap rules go first, and AI reads only when the rules come up empty.

  1. inboxA claim email lands in the shared inbox, and Power Automate picks it up.
  2. read + extractA simple pattern looks for the claim number in the subject. If it comes up empty, Azure OpenAI reads the email and returns the number with a confidence score.
  3. check against rulesThe flow confirms the claim exists before it touches a file. A second version of the pipeline, in Python, adds plain rule checks on the documents: dates, totals and photo metadata.
  4. routeMatched mail goes onto the right claim with every attachment. The sender gets a confirmation, and each step lands in an audit log.
  5. review folderAnything unmatched or flagged waits in a review folder, and an adjuster gets a message to decide.
The rule checks only flag. The adjuster decides.

what it runs on

Microsoft 365
the shared inbox and the confirmation email
Power Automate
the workflow itself, low-code, so the insurer's own staff can change it
Azure OpenAI
reads the email body when the pattern finds no claim number
Python
a second build of the pipeline, with the rule checks on documents

what keeps it careful

  • No new vendor. The reading happens inside the insurer's own cloud, so claim data does not go out to anyone new.
  • It confirms the claim exists before it touches a file.
  • It never files on a guess. Anything unclear goes to an adjuster.
  • Each step lands in an audit log.
  • This demo calls nothing. It runs in your browser on invented data.

AI only steps in when the rules shrug.

The results and how I built it are in the case file.