Mass Georeferencing Pipeline for Natural History Collections

Converting millions of historical specimen locality descriptions — free text, no coordinates — into geographic coordinates with honest, quantified uncertainty.

Data Scientist, NMNH IDSC Smithsonian National Museum of Natural History Active

Natural history collections hold millions of specimens whose only location information is a text-based locality description — something like "5 mi S of Springfield" — with no coordinates attached. That's a major barrier to using this data for biodiversity, climate, and conservation research, where geographic precision matters.

Existing tools for this problem, GEOLocate chief among them, have real gaps worth naming honestly: uncertainty estimates that don't clearly distinguish confidence levels, limited handling for historical or defunct place names, and little flexibility for institution-specific quirks in how locality data was originally recorded. This isn't a one-museum problem — it's a shared bottleneck across the entire field of digitized natural history collections.

The core of the project is a deterministic/semantic hybrid framework, and it rests on one plainly stated insight: LLMs alone tend to produce confident-sounding but unreliable uncertainty estimates. So the pipeline is built the other way around — deterministic gazetteer matching does the anchoring work, and LLM assistance is reserved for genuinely ambiguous cases, never used as a first resort.

Two principles follow from that:

Real numbers, stated directly rather than hedged:

99%+
Country-level resolution
~95%
State / province level
~97%
County-level, best available precision

Fully deterministic for the vast majority of records — no AI dependency required to get there.

The project includes an uncertainty explorer map and a review UI for manually checking ambiguous cases, plus departmental-level statistics views. Screenshots and links to come.

Placeholder — swap this out once the uncertainty explorer / review UI screenshots are ready to share.

Python PostgreSQL / PostGIS GeoNames OpenStreetMap pandas GeoPandas Shapely SQLAlchemy Streamlit Anthropic API

The Anthropic API is used narrowly, for bounded disambiguation only — not as a general-purpose part of the resolution pipeline.

Accepted talk, FOSS4G-NA 2026 — "Honest Uncertainty: A Hybrid LLM Approach to Mass Georeferencing."

Actively expanding across additional collections departments. Free-text locality parsing — the hardest layer, handling compound descriptions and spatial-relationship language like "5 mi S of X" — is in active development.

← Back to Projects