Skip to content
All builds
insurancecatastrophemulti-agentgisai

FACIA — FAst Cat Impact Analytics

Turns a weather signal into insured-impact intelligence in minutes, not hours of spreadsheet work. A carrier ingests a portfolio; the system monitors wind/hail/rainfall thresholds against gridded NOAA data, detects material events, synthesizes exposure footprints with confidence scoring, classifies policies as directly or adjacently impacted, and hands operators a live map + exportable impact package — target under 30 minutes from threshold breach to report.

Live demo coming soon
< 30 min target
Threshold breach → impact report
6
Independent agents
5 mi (~8,046 m, geography-based)
Adjacent-impact radius

The problem

After severe weather, catastrophe and claims teams still rely on manual, fragmented workflows: watching external alerts, sketching affected areas by hand, hunting for insured properties in those areas, then handing static spreadsheets to operations — slow, incomplete, and opaque while an event is still unfolding.

The challenge

Prove that a carrier can ingest a portfolio, monitor wind/hail/rainfall thresholds against full NOAA weather grids, detect material events, and produce a map-backed impacted-property list in an operationally useful window — targeting under 30 minutes from threshold breach to impact report — while keeping every step auditable and restartable mid-event.

Constraints

  • Full NOAA MRMS/URMA GRIB2 grid evaluation, not zone-level alerts, for defensible threshold detection
  • Distances must use geography/meters (ST_DWithin), never degree-based geometry — a silent source of corrupted impact lists
  • Confidence scoring and review queues for low-confidence geocodes and synthetic footprints
  • Agents must not call each other directly — durable database records make the pipeline restartable and auditable
  • MVP scope excludes automatic claim creation, native mobile, multi-tenant SaaS admin, predictive modeling, and imagery-based damage

The solution

A vertical-slice build, hardened after: PostGIS schema and a synthetic Florida portfolio first, then six independently testable CrewAI agents (geocoding, weather, footprint, impact, reporting, supervisor) connected by FastAPI background workflows. A GIS cockpit (Mapbox layers, virtualized impact table, KPIs, drill-down) gives operators a live map and exportable impact package, with an OpenAI tool-calling assistant for grounded Q&A and map navigation under hard token/rate limits.

Architecture

  • React/TypeScript/Vite/Mapbox GL frontend with TanStack Query for server state and Zustand for UI state, kept deliberately separate
  • Python FastAPI backend under /api/v1/ for uploads, workflow triggers, exports, and org-scoped auth
  • Six CrewAI + Pydantic agents coordinating through durable database records, not agent-to-agent messaging
  • Supabase Postgres + PostGIS + Realtime + Storage as the source of truth, with spatial RPCs and raster PNGs in event-rasters
  • NOAA MRMS/URMA S3 GRIB2 as the primary weather source, with OpenWeather/NWS alerts as fallback
  • Anthropic Claude for narrative prose only — every number in every report comes from the database

Product decisions I owned

  • Made the database — not agent-to-agent messaging — the orchestration bus, so every run is restartable, auditable, and independently testable
  • Switched from NWS zone alerts to full NOAA MRMS/URMA grids, making threshold detection and footprint synthesis measurable and testable
  • Built provider abstraction for weather/geocoding early, unlocking parallel frontend and agent work before live APIs were wired in
  • Scoped the MVP tightly — CSV/JSON export and a live dashboard close the operational loop; PDF export and claims-system integration wait

Design laws

Six auditable agents coordinate through the database, not each other

The LLM writes the narrative; every number comes from the database

Pipelines are auditable and restartable mid-event

Stack

React · TypeScript · Vite · Mapbox GL JS · FastAPI · CrewAI + Pydantic · Supabase PostgreSQL + PostGIS + Realtime · NOAA MRMS/URMA GRIB2 · OpenAI (chat) · Anthropic Claude (narrative only) · Vercel/Render

Key learnings

  • Gridded weather beats alert polygons for impact work — cell counts plus policy materiality make a testable dual trigger
  • The database is the orchestration bus — persisting observations, events, footprints, impacts, and agent_runs beats tight agent-to-agent coupling for retries, audit, and independent testing
  • Geospatial bugs are product bugs — degree-based ST_DWithin, wrong SRID assumptions, or missing geography casts silently corrupt impact lists; fixtures with known inside/adjacent/outside points are non-negotiable
  • Confidence must be first-class — low-confidence geocodes and footprints need review queues and visible labels
  • State separation keeps the UI sane — mixing server-state and UI-state libraries makes map-table sync brittle

Screenshots and a walkthrough video are coming.