Historical wildlife observation patterns across U.S. national parks.
WildWhere AI combines real public GBIF, NPS, NOAA, and visitation datasets into a cleaned SQLite warehouse, analytics layer, machine-learning model, and Streamlit-ready dashboard. This deployed page surfaces the project analytics and prediction workflow with an explicit park-species eligibility gate.
Prediction safety gate enabledAnalytics Overview
Reported Sightings By Park
| Park | Records | |
|---|---|---|
| Yellowstone | 570 | |
| Grand Teton | 367 | |
| Glacier | 271 | |
| Olympic | 187 | |
| Mount Rainier | 160 |
Top Reported Species
| Species | Records | |
|---|---|---|
| Elk | 252 | |
| Black Bear | 203 | |
| Mountain Goat | 192 | |
| Grizzly Bear | 157 | |
| Bald Eagle | 150 |
Seasonal Pattern
| Season | Records | |
|---|---|---|
| Summer | 700 | |
| Spring | 396 | |
| Winter | 278 | |
| Fall | 181 |
Estimated Reported-Observation Likelihood
The project uses a two-stage system. First, selected park/species combinations are checked against official park-species reference data. Only documented combinations are evaluated by the model for historical reported-observation likelihood.
Valid Prediction Grid Preview
The deployed preview shows precomputed rows from data/processed/valid_prediction_grid.csv. Unsupported
combinations are excluded before model scoring.
| Park | Species | Season | Time Window | Output | Records |
|---|---|---|---|---|---|
| Yellowstone National Park | Bison | summer | unknown | high | 47 |
| Grand Teton National Park | Moose | summer | morning | high | 28 |
| Mount Rainier National Park | Mountain Goat | summer | morning | high | 52 |
| Grand Teton National Park | Mountain Goat | summer | unknown | Insufficient data | 3 |
| Olympic National Park | Bald Eagle | summer | unknown | high | 54 |
| Glacier National Park | Mountain Goat | winter | unknown | low | 37 |
Example blocked combination: Bison in Mount Rainier National Park returns Not supported with no model score because the species is not documented for the selected park in the project reference data.
Step 3.5 SerpApi Enrichment
WildWhere AI now includes an optional SerpApi enrichment layer for public search context: named viewing areas, seasonal advice, time-of-day mentions, and source/domain signals. This is supplemental context, not scientific ground truth.
Search-context enrichment is optional and depends on configured API credentials. Search-derived context should support interpretation, not replace GBIF, NPSpecies, NOAA, or NPS visitation data.
SQL + Warehouse Layer
The SQLite warehouse includes cleaned tables for parks, species, sightings, weather, visitation, and joined wildlife features.
SELECT park_name, common_name, COUNT(*) AS sighting_count
FROM wildlife_features
GROUP BY park_name, common_name
ORDER BY sighting_count DESC;
Data Transparency
GBIF records are reported observations collected near parks with bounding boxes. They are not confirmed wildlife presence, real-time tracking, complete wildlife distributions, or true population density.
Project Entry
The deployed Vercel page is the public portfolio preview. The repository also includes a full Streamlit application with entry point app/main.py.