← All work · Self-initiated demonstration on public data

Case study · Property & flood risk

Jacksonville Property & Flood Risk

Takes messy county property records, matches each home to its flood zone and sales history, and flags anything that doesn't add up, so you can trust the numbers before you buy, insure or lend.

Live demo Repository

The problem

Answering simple questions about a property (what is it worth, is it in a flood zone, what sold nearby) means combining four public sources: county parcel maps, the property appraiser's tax roll, FEMA flood maps and state sales records. They come in different formats, with broken map shapes, duplicate addresses and inconsistent ZIP codes, and it's easy to lose records along the way without noticing.

What it does

  • Loads the county, FEMA and state records and fixes broken property shapes without ever editing the originals.
  • Removes duplicate addresses and tidies up ZIP codes, keeping a record of every change.
  • Matches each property to the FEMA flood zones it touches, including whether it's in a high-risk area and how much of the lot is covered.
  • Matches state sales records to properties and runs automatic checks every time the data is rebuilt, so nothing goes missing quietly.

What you get

  • One clean, checked property database, with one row per parcel.
  • An interactive map you can share.
  • A count of what was loaded, repaired and removed, so you can see the data is complete.
  • No owner names published: the public map shows only address and values.

By the numbers

12,288 / 12,288FEMA flood zones loaded, none lostSource: project README
48broken flood-zone shapes repaired with no area lostSource: project README
75,878state sales records loaded; 99.8% matched to a propertySource: project README
28,800qualified market salesSource: project README
10,552duplicate addresses removed, each one tracedSource: project README
413 → 37messy ZIP values cleaned upSource: project README
405,722properties in one checked tableSource: project README
13automatic data checks on every rebuildSource: project README

Built with: PostgreSQL/PostGIS, Python, GeoPandas, dbt, Leaflet (EPSG:2236)