All Stories
2026-09-094 min read

Insurance · Multimodal AI · TableModel · Document · Audio · Pixeltable Cloud · Triage

ClaimBot: FNOL Triage on One Heterogeneous Row

A claim is a photo, a voice memo, and a PDF on the same row. Whisper and Gemini fill columns. A UDF compares memo vs report. Not an image array. Not three microservices.

Pierre Brunelle

Pierre Brunelle

Pixeltable Team

Summary: ClaimBot is first notice of loss as a table row: scene photo, adjuster memo, written report. Whisper transcribes the memo. Gemini reads the photo and the PDF. A UDF (or a third Gemini call) compares spoken story vs written report and writes triage_status. You do not store “a list of images” and hope a pipeline joins them later. Three types. One insert. pip install pixeltable.

The Product#

  • Create a claim with claim_id
  • Attach pxt.Image, pxt.Audio, pxt.Document
  • Fill memo text, photo notes, report notes on insert
  • Flag clear / mismatch / needs_adjuster

The types lecture is what is a multimodal data table. The schema-as-backend recap is Never Fuck With Your Backend Anymore. The afternoon clone that dies in a container is the Photos / AWS post. This post is the heterogeneous claim, not an album.

The Stitch You Delete#

S3 for the JPEG. A second bucket for the WAV. A third for the PDF. Three workers. A case-management field you type by hand. Pixeltable is one row with three media types. Delete the claim; derived cells are not orphans in two other systems.

The Receipt#

python

Not an image array. Not a splitter view unless you want page-level RAG on the PDF — that receipt is DocuVision. Here Gemini reads the document as one column, same as the photo. Same file on Cloud: pxt db updatepxt schema updatepxt service update.

What This Is Not#

Not a claims system of record for payouts. Not a policy admin. Card TPV and coverage stay in the warehouse you already trust. Not medical or legal advice. The multimodal row is the intake graph.

People Also Ask#

Why not pxt.Image[]? FNOL here is one scene photo, one memo, one report. Arrays hide the join. If you need many photos, that is a child table, not a list cell you hope the LLM unpacks.

Do I chunk the PDF? Only if you need passage citations. Start with Gemini on report. Add a splitter view when the file is a prospectus, not a two-page FNOL.

How do I go to Cloud? Same app.py. PIXELTABLE_API_KEY, pxt://org:db, then db → schema → service. pxt service run is local only.

Three Types, One Insert#

Declare the claim. Apply the file. Insert photo, memo, PDF. Read triage_status. Keep the intake. Delete the three-bucket stitch.

Declarative. Multimodal. Incremental.

Focus on innovation, not infrastructure.

10-minute tutorial · Join community