Document & image intelligence

Turning unstructured records — scanned drawings, handwritten cards, imagery — into structured, queryable data with a human in the loop.

01

AI-Powered Infrastructure Intelligence

Computer Vision VLMs Python Azure AI ArcGIS Pro
Problem

Municipal governments sit on decades of as-built drawings, handwritten service records, and construction documents that are trapped in paper or unstructured PDFs — invisible to the GIS systems staff rely on every day.

Approach

A suite of computer vision and AI pipelines that extract structured data from these documents at scale — from vision language models that read handwritten water service cards to automated as-built ingestion that pulls metadata, organizes files, and feeds results directly into ArcGIS Pro catalogs, with a human-approval gate before anything enters the catalog of record.

Result

Decades of paper became a living, queryable system — from scanned drawing, to georeferenced GIS feature, to natural-language answer. Higher-quality infrastructure data with traceable lineage back to the source record. Building it stretched me across computer vision, model training, cloud architecture, agentic AI, and RAG.

02

100 Years of Water Service Cards, Digitized

Vision AI Qwen2.5-VL Survey123 Field Maps Historical Records
Problem

Over a century of handwritten water service records were trapped on deteriorating paper cards — unsearchable and disconnected from modern systems — while field crews kept capturing new records in inconsistent formats.

Approach

One initiative, two directions. Backward: a local vision-AI model reads the handwritten cards and extracts structured, searchable data at scale. Forward: a structured Survey123 + Field Maps intake form so crews capture clean, GIS-ready records from here on.

Result

A century of infrastructure knowledge made searchable and integrated into GIS — roughly 40+ hours of manual entry completed in about 4 hours of review — plus a standardized capture process that keeps the archive clean going forward.

Document Intelligence
Utility Document Extractor
Document-intelligence pipeline that parses inconsistent utility as-built documents and structures the data for GIS integration.
Python Document Intelligence Automation
Eliminated manual data entry for utility documents.
Document Intelligence
Historical Records Toolkit
A reusable, config-driven system for digitizing scanned historical records with a vision-LLM and human-in-the-loop review.
Vision LLM Human-in-the-Loop Config-Driven
Grew out of the water-card work into a general-purpose tool.
Image Intelligence
GIS Vision AI Feature Extractor
Computer-vision tool that detects and extracts geographic features from imagery — turning pixels into GIS-ready features instead of hand-digitized ones.
SAM3 Computer Vision Feature Extraction
Reduced manual digitizing while improving consistency.
Image Intelligence
Computer Vision Spatial Data Pipeline
Pipeline pairing SAM3 segmentation with ZED 2i stereo cameras to extract spatial features with real depth perception.
SAM3 ZED 2i Stereo Depth
Automated feature extraction with accurate depth mapping.
Independent Build
Leah Rae Genealogy
The same capability, applied on my own time: a team of AI agents over Azure Postgres/PostGIS and Blob reads ~1,400 pages of historical records and photos, transcribes them, and aligns every fact to the right ancestor with full citations.
Agentic AI Document AI Azure / PostGIS
Broke a 150-year research wall by reading 19th-century civil registers — and corrected an error in the authoritative source.
Visit Site →
Independent Build
Mariotti-Reed Genealogy Legacy
The published front end for that archive — an interactive map viewer with a citation-grounded “Ask” feature over the records database.
RAG PostGIS Story Map
End-to-end demonstration of AI-assisted records digitization on cloud infrastructure.
Visit Site →

Data quality at scale

Catching the structural problems that break downstream systems — before they cause a failure in the field rather than after.

03

Proactive Health Checks for Emergency Dispatch

Python Python Toolbox ArcPy Data Quality Public Safety
Problem

Emergency dispatch lives or dies on accurate GIS — addresses that geocode, routes that work. When the data is wrong it causes real-world failures, and catching those problems stays reactive and manual until something breaks during a call.

Approach

I built a scripted Python toolbox that runs automated health checks against the dispatch datasets my team delivered. Before data went out to the dispatch center, the toolbox systematically scanned it for the structural problems that break geocoding and routing before they cause a failure in the field — making data-quality assurance a repeatable step in the delivery process, not reactive firefighting after something breaks.

Result

Dispatch data was verified sound before it reached production. For the dispatch centers and fire districts that depend on it, that means fewer failed address lookups and routing errors when a call comes in — caught by a consistent QA process instead of discovered mid-emergency.

04

USPS Address Validator

USPS API Data Validation System Migration Bulk Processing
Problem

Thousands of municipal address records needed verification before large-scale system migrations, with no efficient way to catch invalid or partially correct entries.

Approach

Built an internal validation tool that checks records against the official USPS database, with an interactive dashboard, map visualization, and pause/resume for multi-day jobs.

Result

Supports large-scale municipal system migrations, catching address errors before records reach production and sparing staff hours of downstream cleanup — protecting the address data that municipal billing, permitting, and dispatch all rely on.

Public-facing civic applications

Tools residents actually use — built for the phone in someone's hand, not the analyst's desktop.

05

Downtown Parking App with Walk-Time Routing

React ArcGIS Maps SDK Walk-Time Routing TypeScript Custom Web App
Problem

A lakefront suburb needed residents and visitors to understand Central Business District parking at a glance — including the question everyone asks, “how far is this lot from where I'm going?” — and off-the-shelf ArcGIS Experience Builder couldn't deliver that experience.

Approach

I designed, built, and deployed a custom React + ArcGIS application: every CBD lot mapped with color-coded restrictions and detailed profiles, on-demand walk-time routing from any user-set origin, and a mobile-first interface — all driven by a single JSON config that makes it portable to other communities.

Result

I owned it end to end — requirements, stakeholder data validation, build, and deployment — with no internal template to work from. Because I built it config-driven, a second municipality was served from the same codebase with no code changes.

View full case study →
06

Police Transparency Dashboard

Python Automation ArcGIS Online Civic Tech Open Data
Problem

Public crime data is often locked in formats no resident can use — and publishing it openly raises real privacy concerns about pinpointing incidents to a single household.

Approach

Built a Python pipeline that ingests incident data, anonymizes each record to the 100-block level to protect privacy, and auto-publishes a clean public dashboard to ArcGIS Online — replacing a manual update process with a repeatable, scheduled one.

Result

What took 60–90 minutes of manual work per update now runs in about 5 — giving residents a transparent, privacy-respecting, always-current view of local incidents while reclaiming staff capacity.

Sustainability StoryMap
Civic Application
Sustainability StoryMap
Interactive ArcGIS StoryMap visualizing environmental sustainability initiatives and their geographic impact for a municipality.
ArcGIS StoryMap Sustainability
Public-facing sustainability progress dashboard for community engagement.
Civic Application
Emergency Vehicle Preemption Dashboard
Real-time ArcGIS dashboard consolidating preemption device status, location, and component health into a single operational view for emergency-response coordination.
ArcGIS Online Dashboard Public Safety
Single-pane situational awareness that improves response coordination.

Spatial systems & automation

The pipelines, databases, and workflows underneath — where a manual process becomes a scheduled one.

Utility Atlas Requests Automation
Automation
Utility Atlas Requests Automation
End-to-end Python + Power Automate workflow automating utility atlas request intake, spatial processing, and document delivery.
Python Power Automate ArcPy
Cut turnaround from ~8-10 min to ~1-2 min per request.
Automation
Zoning Variance Updates
Automated zoning variance intake with near real-time SDE updates to the authoritative GIS database.
Python SDE Zoning
Near real-time zoning updates replacing manual workflows.
Asset Management
Pond Ownership Inventory
Dashboard mapping pond ownership across municipal boundaries for infrastructure planning and maintenance.
ArcGIS Dashboard Inventory
Centralized pond asset tracking for public works planning.
Fiber Line Linking
Utility GIS
Fiber Line Linking & Depth
Pilot program linking fiber optic infrastructure data with depth measurements in GIS for utility management.
ArcGIS Pro Fiber Optics Utility
Improved fiber asset data quality with depth attribution.
Membership Analytics Cartography
Cartography & Analysis
Membership Analytics Cartography
A suite of ArcGIS analysis maps built at Scouting America — bivariate market share, density heat maps, available-youth demographics, and population-normalized penetration — turning census and membership data into outreach strategy.
ArcGIS Bivariate Cartography Demographics
Evidence-based targeting of underserved areas for membership growth.
First Return
Independent Build
First Return
Turns real USGS lidar and elevation data into 3D-printable models of actual places — a full pipeline from point cloud to physical object, sold as terrain prints.
USGS Lidar 3D Printing Terrain
A small product studio built on real elevation data.
Visit Site →

Independent builds

Things I build on my own time — where curiosity, not a client brief, sets the spec.

SettleStack
Independent Build
SettleStack
Full-stack poker debt settlement app calculating optimal payment paths to minimize transactions among players.
Full-Stack JavaScript Algorithm
Optimized multi-party debt resolution in one click.
Visit Site →
Latitudes & Longitudes
Independent Build
Latitudes & Longitudes
A travel blog and trip-planning platform combining geographic storytelling with interactive mapping.
Web App Travel Mapping
Geographic storytelling for travel.
Visit Site →

Interested in collaborating?