HuntIQ

Data Sources & Methodology

← Back to Map

Every number on the map has a source

Hunt IQ combines public geospatial data (LiDAR, satellite imagery, water, parcels, weather) with published GPS collar research to produce stand recommendations. This page documents every dataset we load, every scoring module we run, and every research source those modules rely on. Every DOI on this page points to a verifiable paper or public dataset.

The registry is updated whenever a new feature, layer, or algorithm lands in the codebase. If you find a number in the app that doesn't trace to a source on this page, please file a bug.

Citations

26

Verified

21

Likely

5

Scoring modules

10

Registry version 1.0 · last updated 2026-04-06

1. Overview & philosophy

What Hunt IQ is, and what this page is for.

Hunt IQ is a map-first tool that recommends stand locations by combining real public geospatial data (terrain, land cover, water, public-land boundaries, weather forecasts) with real published research on white-tailed deer movement, habitat selection, and hunting-pressure response. The goal is to replace “I think this spot looks good” intuition with evidence the user can verify.

This page is the public methodology document. It exists because a biologist or detail-oriented client should be able to read our sources without having to browse the source code. When a new feature lands in Hunt IQ, the corresponding section here gets updated in the same pull request.

Three principles shape everything on this page:

  1. Every source is a real source. No fabricated citations, no invented DOIs, no generated data masquerading as an observation. If a dataset can't be obtained, we document that honestly rather than faking it. Published literature, field observations, and synthetic demo data are all welcome — they just have to be labeled honestly.
  2. Every number is traceable. Every constant in the scoring engine either comes from a live input value, a published coefficient with a citation, or a runtime user setting. There are no black-box magic numbers. If you see one, file a bug.
  3. Honest limitations. Some of our sources are extension publications rather than peer-reviewed papers. Some coefficients are extrapolated across seasons the original study didn't cover. Some datasets only cover one region. We label these honestly with badges and notes rather than hiding them.

2. Observed, literature, synthetic — what the badges mean

Three neutral categories describe what a data source IS. All three are legitimate; the badge just tells you which category each number comes from.

These badges describe the nature of each data source, not its quality. Published RSF coefficients applied to local terrain are real science — they just come from a different place than a satellite pixel. Synthetic demo data is useful for testing — it just isn't a field observation. The point of the badges is to let you see the category of each number at a glance, not to rank them.
OBSERVED

Observations of the physical world. USGS 3DEP LiDAR elevation, NLCD land cover pixels, NHD water polygons, PAD-US parcel boundaries, Open-Meteo HRRR weather forecasts, iNaturalist citizen-science sightings, user-reported deer sightings, and GPS collar fixes from published telemetry studies. If the underlying data is a measurement of something that exists in the physical world, it gets this badge.

LITERATURE

Published peer-reviewed coefficients and models. The RSF beta coefficients from Darlington 2022, the HMM activity budgets from MSU P3927, the Auburn pressure decay curves, the Oklahoma hunt-day effect from Marantz 2016 — all real published science with real DOIs. The model APPLIES those numbers to local covariates. This is rigorous science; it just isn't a live measurement of your specific hunt area.

SYNTHETIC

Demo data generated in-house for testing. The collar_sample.geojson file is the only synthetic data we ship, and it's explicitly opt-in via the --synthetic flag on load_collar_data.sh. Clearly labeled in every UI surface that displays it so you can never confuse it with an observation. Useful for running the pipeline without requiring network access or external datasets.

3. Observed datasets

10 public datasets loaded or ingested by the Hunt IQ pipeline. Every one is a real observation of the physical world — satellite imagery, LiDAR, GPS telemetry, or field surveys — with a verified DOI or stable URL.

Open-Meteo Weather API (NOAA HRRR model)

Open-Meteo / NOAA HRRR · 2026

VERIFIED
Venue
Open-Meteo · Open-Meteo (wrapping NOAA HRRR)
Sample / Scope
3 km HRRR grid, hourly forecasts, CONUS coverage

Findings used in Hunt IQ

  • Temperature, wind, pressure, precipitation per hunt date
  • Temperature delta (rate of change) for cold front detection

Referenced from

  • src/lib/scoring/weather.ts
  • src/lib/scoring/weather-movement.ts
  • src/lib/wind-grid-service.ts

USGS 3D Elevation Program (3DEP) LiDAR / DEM

U.S. Geological Survey · 2024

VERIFIED
Venue
USGS National Map · U.S. Geological Survey
Sample / Scope
Nationwide high-resolution DEM coverage

Findings used in Hunt IQ

  • Slope, aspect, TPI, elevation position covariates for every candidate

Referenced from

  • pipeline/process_geography.sh
  • src/lib/scoring/terrain.ts

USGS National Hydrography Dataset High Resolution (NHD HR)

U.S. Geological Survey · 2024

VERIFIED
Venue
USGS National Map · U.S. Geological Survey
Sample / Scope
Nationwide water body and stream data at 1:24,000 scale

Findings used in Hunt IQ

  • Water body polygons for distance-to-water covariates
  • Stream network for corridor cost surface barriers

Referenced from

  • pipeline/pmtiles/water.pmtiles
  • db/init (water_bodies table)

Protected Areas Database of the United States (PAD-US)

U.S. Geological Survey Gap Analysis Project · 2024

VERIFIED
Venue
USGS Gap Analysis Project · U.S. Geological Survey
Sample / Scope
Nationwide public land boundaries, owner, and manager attributes

Findings used in Hunt IQ

  • Public vs private land classification for pressure model (pressure.ts:calcLandTypeFactor)
  • Huntable parcel identification

Referenced from

  • pipeline/parcels/build-tiles.sh
  • src/lib/scoring/pressure.ts

Resource selection by New York City deer reveals the effective interface between wildlife, zoonotic hazards, and humans

VanAcker, M., DeNicola, V., DeNicola, A., Aucoin, S.G., Simon, R., Toal, K., Diuk-Wasser, M., Cagnacci, F. · 2023

VERIFIED
Venue
Dryad Digital Repository · Smithsonian Conservation Biology Institute / Columbia University / NYC Parks & Recreation / White Buffalo Inc. / Fondazione Edmund Mach
Sample / Scope
89.54 MB of real GPS tracking data from New York City white-tailed deer as part of NYC's Deer Impact Management Plan, divided by individual, sex, season, and year. Mixed formats: .rds, .csv, .tif, plus R script and README.
DOI
10.5061/dryad.t76hdr85p

Findings used in Hunt IQ

  • Real white-tailed deer GPS telemetry (Odocoileus virginianus) from an urban/suburban landscape
  • Multi-scale hierarchical resource selection analysis with landcover covariates
  • Deer select highly vegetated and accessible residential properties
  • Movement modeling across individuals, sexes, seasons, and years
  • Primary validation dataset for STORY-060 RSF harness
  • Primary map layer data for STORY-055 collar track visualization

Referenced from

  • pipeline/collar_data/import_dryad_nyc.py
  • pipeline/collar_data/load_collar_data.sh (default after STORY-055)
  • scripts/validate_rsf_against_dryad.py (STORY-060)

Note

DOI verified live against Dryad landing page on 2026-04-06. 89.54 MB. This is the dataset that replaces synthetic collar_sample.geojson as the default load target per STORY-055. ALL DATA MUST BE REAL — this is real NYC DIMP GPS telemetry, not synthesized.

Ungulate Migrations of the Western United States, Volume 3 — Washington Selkirk White-tailed Deer subset (Routes, Corridors, Stopovers, Winter Range)

Kauffman, M., Lowrey, B., Berg, J., Bergen, S., Brimeyer, D., Burke, P., Cufaude, T., Cain, J.W., III, Cole, J., Courtemanch, A., Cowardin, M., Cunningham, J., DeVivo, M., et al. · 2022

VERIFIED
Venue
U.S. Geological Survey Scientific Investigations Report 2022-5088 / ScienceBase · U.S. Geological Survey / University of Wyoming Cooperative Research Units / Washington Department of Fish and Wildlife
Sample / Scope
43 GPS-collared white-tailed deer, 121 migration sequences at 4-hour fix intervals, Northeast Washington Game Management Units 105/108/111/113/117/121/124, January 2017 - November 2022. Four shapefile layers: Routes, Corridors (modeled high-use polygons), Stopovers, Winter Range. Distributed as part of UMRv3_Complete_dataset.zip (9.27 MB / 9,271,141 bytes) at the parent ScienceBase collection.
DOI
10.3133/sir20225088

Findings used in Hunt IQ

  • Only published nationwide white-tailed deer migration corridor dataset on USGS ScienceBase as of 2026-04
  • Ground-truth reference for validating Hunt IQ's computed A* corridors against published USGS corridors
  • Per-herd Routes/Corridors/Stopovers/WinterRange layers supplied via the usgs_migration_corridors PostGIS table
  • Used to badge Hunt IQ corridors with alignment percentage when within the Selkirk extent

Referenced from

  • pipeline/corridors_ref/fetch_usgs_corridors.py
  • db/init/013_usgs_corridors.sql

Note

Verified live on 2026-04-06 — the parent ScienceBase collection (63598d30d34ebe442503eb3f) hosts UMRv3_Complete_dataset.zip and inspection confirmed all 20 expected white-tailed deer files (4 layers × 5 shapefile components: shp/shx/dbf/prj/xml). White-tailed deer rarely migrate long distances, so this Washington Selkirk subset is the only species-matched corridor dataset available; it is appropriate as a validation reference for our computed corridors but is geographically limited to the WA Selkirk population. STORY-059 / EPIC-010.

Data from: Influence of visual perception on movement decisions by an ungulate prey species

Movebank Data Repository contributors (related publication: see DOI) · 2022

VERIFIED
Venue
Movebank Data Repository (DSpace) · Movebank Data Repository (Max Planck Institute of Animal Behavior / University of Konstanz)
Sample / Scope
40,811 GPS fixes from white-tailed deer (Odocoileus virginianus) collared in Florida; CSV (~6.8 MB) plus deployment reference data (~3 KB) and README. Released as Movebank Data Repository handle 10255/move.1657 with related publication in Biology Open.
DOI
10.1242/bio.059932

Findings used in Hunt IQ

  • Real Florida white-tailed deer GPS telemetry, public domain (CC0)
  • Hidden-Markov-model behavioral state labels (1=encamped, 2=movement) included in reference data
  • Adult male sample with 10-minute fix intervals, August 2019 — collar tracks layer for STORY-055/057
  • Validates and supplements the Dryad NYC and Dryad Alabama corpora with a southern, free-ranging Florida population

Referenced from

  • pipeline/collar_data/import_movebank.py
  • pipeline/collar_data/load_collar_data.sh (default after STORY-057)

Note

Discovered via the Movebank Data Repository DSpace REST search at datarepository.movebank.org/server/api/discover/search/objects?query=Odocoileus. The standard Movebank `direct-read` API requires authentication for anonymous queries (returns 401); the data repository's REST API is fully open. Verified live on 2026-04-06 — bitstream content URLs return 200 and the CSV header parses cleanly with the standard Movebank schema. STORY-057 / EPIC-010.

National Land Cover Database (NLCD) 2021

Multi-Resolution Land Characteristics (MRLC) Consortium · 2021

VERIFIED
Venue
USGS / MRLC · USGS / MRLC Consortium
Sample / Scope
30m resolution CONUS-wide land cover classification

Findings used in Hunt IQ

  • Land cover class for every candidate (forest/crop/grassland/developed/water/wetland)
  • Canopy cover percentage
  • Edge and food source detection

Referenced from

  • pipeline/compute_rsf_surface.py
  • pipeline/compute_cost_surface.py
  • src/lib/scoring/landcover-context.ts

Data: A novel method for detecting extra-home range movements (EHRMs) by animals and recommendations for future EHRM studies

Jacobsen, T., Wiskirchen, K., Ditchkoff, S. · 2020

VERIFIED
Venue
Dryad Digital Repository · Auburn University (Ditchkoff Deer Lab) / Washington Department of Fish & Wildlife / Missouri Department of Conservation
Sample / Scope
13.10 MB single CSV (Jacobsen_et_al._All_Deer.csv, 13,083,286 bytes, sha256 9b3b780886f224ae670c13486f49050abc4793ba69dc0753de4337f289e67a6e). 191,867 GPS relocations from 33 (32 with usable data) free-ranging white-tailed deer (16 female, 16 male) collared 2014-2016 across four Alabama study sites: Barbour WMA (~114 km²), Oakmulgee WMA (~180 km²), Pickens County (~49 km²), and Marengo County (~31 km²). Fix interval 3.5h Apr-Sep, 1h Oct-Mar. Coordinates published as UTM zone 16N (EPSG:32616).
DOI
10.5061/dryad.jsxksn05t

Findings used in Hunt IQ

  • Real white-tailed deer GPS telemetry (Odocoileus virginianus) from southeastern US (Alabama)
  • Extra-home range movement (EHRM) detection — Moving-Window method finds 1.5x more excursions than the Fixed-Period method
  • EHRMs extend up to ~5 km beyond typical home range boundaries
  • Hourly-resolution October-March data captures Alabama rut movement patterns directly (peak rut late January)
  • Balanced sex sampling (16F + 16M) supports sex-stratified RSF and step-selection analyses

Referenced from

  • pipeline/collar_data/import_dryad_alabama.py
  • pipeline/collar_data/load_collar_data.sh (default after STORY-056)

Note

DOI and file metadata verified live against the Dryad landing page on 2026-04-06. The 13.10 MB total matches the EPIC-009 'Alabama EHRM GPS Data — 13 MB' line item. Dryad's API requires authentication for downloads as of 2026 (https://datadryad.org/openapi.yml: 'Anonymous users... are not allowed to download data files'); the importer supports both OAuth2 client_credentials and a manually-staged cache file. CSV header schema and 191,867 GPS fixes verified by direct parse of the cached file. ALL DATA MUST BE REAL — this dataset is real Auburn University Deer Lab / Ditchkoff GPS telemetry from Alabama, not synthesized.

Digitized white-tailed deer densities for the continental United States

Hanberry, B.B., Hanberry, P. · 2019

VERIFIED
Venue
USDA Forest Service Research Data Archive · USDA Forest Service
Sample / Scope
7.55 MB ZIP containing three Esri shapefiles covering the continental United States, one per time period (1982, 1994-1999, 2001-2005). Density classified into QDMA color categories: Green <15, Yellow 15-30, Orange 30-45, Red >45 deer/sq mi.
DOI
10.2737/RDS-2019-0053

Findings used in Hunt IQ

  • Real nationwide white-tailed deer density polygons (1982, 1994-1999, 2001-2005)
  • QDMA density class categories (Green/Yellow/Orange/Red)
  • Public domain US Government work — no attribution restrictions
  • Used as the base density layer claimed in EPIC-009 (STORY-058)

Referenced from

  • pipeline/density/fetch_deer_density.py
  • db/init/012_deer_density.sql
  • src/app/api/deer-density/route.ts

Note

Replaces the vaporware USDA density layer from EPIC-009 with a real, verified, publicly-available dataset. STORY-058 / EPIC-010.

4. Live APIs

1 external service APIs queried at runtime or in the pipeline.

iNaturalist Observations API

iNaturalist Network · 2026

VERIFIED
Venue
iNaturalist
Sample / Scope
Hundreds of thousands of georeferenced Odocoileus virginianus observations (taxon_id=42223)

Findings used in Hunt IQ

  • Citizen-science white-tailed deer presence observations for density heat maps

Referenced from

  • src/lib/density-service.ts

5. Scoring modules

10 modules contribute to every recommendation. Each module documents its inputs, outputs, and the citations that back its coefficients.

Terrain Scoring

Scores DEM-derived terrain features (slope, aspect, TPI, elevation position, canopy fit) per candidate.

src/lib/scoring/terrain.ts

Classic heuristic terrain scoring. Given a candidate location extracted from the LiDAR pipeline (saddle, funnel, ridge, bench, field edge, or bedding area), computes a 0–100 score based on how well the local terrain matches the weapon-specific canopy range and general deer movement heuristics (preference for moderate slopes, south/southeast aspects, concave TPI for saddles, etc.).

Inputs

  • Candidate feature type (saddle, funnel, ridge, bench, field edge, bedding)
  • Slope, aspect, TPI, elevation position from USGS 3DEP DEM
  • Canopy percentage from NLCD 2021 or Esri Sentinel-2
  • Weapon type (bow / crossbow / rifle)

Output

0–100 terrain score with per-factor breakdown for the Score Breakdown UI.

Note: This is the heuristic layer that RSF scoring replaces when real GPS-collar data coefficients are available.

Resource Selection Function (RSF) Scoring

Replaces heuristic terrain scoring with published Resource Selection Function beta coefficients applied to local covariates.

src/lib/scoring/rsf-scoring.ts

The RSF surface is pre-computed per geography by pipeline/compute_rsf_surface.py using published seasonal beta coefficients from Darlington et al. 2022 (Scientific Reports) applied to DEM slope/aspect, NLCD land cover, NHD distance-to-water, and computed distance-to-edge. At request time, rsf-scoring.ts reads the candidate's pre-enriched RSF probability, rescales it to 0–100, adds feature-type bonuses (funnel +25, saddle +20, etc.), and applies weapon-specific canopy modifiers. When RSF data is unavailable for a geography (pipeline not yet run), it falls back gracefully to the heuristic terrain score.

Inputs

  • Pre-enriched rsf_score from the pipeline (if available)
  • Feature type (funnel / saddle / ridge / bench / field edge / bedding)
  • Weapon type
  • Canopy percentage

Output

Blended terrain score, feature bonus, weapon modifier, and a scoring_mode flag (rsf | heuristic | both).

HMM-Inspired Behavior States

Hour-by-hour prediction of deer behavior states (BEDDING / FORAGING / TRAVELING) from real GPS collar activity budgets.

src/lib/scoring/behavior-states.ts

Implements a 3-state hidden-Markov-inspired model using real GPS collar activity budgets loaded from src/lib/scoring/config/behavior-matrices.json. The matrices encode 24-hour activity percentages from MSU Deer Lab 15-minute GPS fix data (Strickland et al. 2023) plus the counterintuitive midday-buck-peak finding from the Penn State Deer-Forest Study. Photoperiod-based season detection auto-adjusts the rut phase by latitude and date. Moon phase is explicitly excluded per Webb et al. 2010's seven-year, 32-deer finding of zero measurable effect.

Inputs

  • Hunt date and latitude (photoperiod calculation)
  • Hour of day
  • Sex (buck or doe)
  • Current rut phase

Output

Per-hour movement probability and dominant behavior state for the timing chart.

Note: Paterson 2023 is cited for HMM methodology only — that paper studied pronghorn and mule deer, not white-tailed deer. WTD-specific numbers come from Strickland 2023 and Webb 2010.

Rut Phase Tracker

Photoperiod-based rut phase detection with daily distance and home range predictions.

src/lib/scoring/rut-tracker.ts

Walks forward and backward from the given date to detect phase boundaries using photoperiod (day length), then looks up phase-specific daily movement distance (yards), home range expansion (acres), and hunting strategy from the MSU P3927 publication. The 1.7× rut-movement claim in EPIC-009 was reconciled against this source: the actual published numbers are 4,800 yd/day pre-rut → 7,500+ yd/day peak rut (1.56× daily total), with NET DISPLACEMENT growing 1.7× (see STORY-065 for details).

Inputs

  • Hunt date
  • Latitude (drives photoperiod)

Output

Rut phase, days into phase, phase progress, buck daily distance, home range acres, hunting strategy text, day length.

Hunting Pressure Response

Multi-factor hunting pressure model combining season-long decay, stand-specific learning, and the Oklahoma hunt-day effect.

src/lib/scoring/pressure.ts

Composite 0–1 pressure score that multiplies the behavior score. Four factors: (1) temporal decay via exp(−0.025 × daysSinceOpener) calibrated to Penn State's ~25% of opener by late November finding; (2) stand-specific sigmoid avoidance via 1 / (1 + exp(2.0 × (effectiveVisits − 2.5))) calibrated to Auburn's 4+ visit abandonment finding (Sullivan et al. 2018); (3) calendar weekend/weekday modifier; (4) land-type multiplier (0.67 public / 1.0 private). STORY-063 added the explicit Oklahoma hunt-day effect from Marantz et al. 2016: weekends during hunting season get an additional multiplier (−17% daytime / −31% nighttime movement) applied via applyHuntDayEffect. STORY-040 also exposes getCoverPreferenceShift() for the Penn State 240% cover-use escalation used by the terrain path.

Inputs

  • Hunt date, latitude (for season opener estimation)
  • Day of week
  • Stand visit count and last visit date (per candidate)
  • Public vs private land (from PAD-US)

Output

Composite pressure score 0–1, per-factor breakdown, human-readable label, days-to-recovery estimate, cover-shift multiplier.

Weather-Movement Correlation

Rate-of-change weather modifier (temperature delta, pressure trend, cold fronts) applied to the base weather score.

src/lib/scoring/weather-movement.ts

GPS collar research consistently shows that RATE OF CHANGE is a stronger movement predictor than absolute values. A 15°F+ temperature drop with rising barometric pressure (a cold front) produces the single strongest movement response in the literature. This module computes a composite multiplier (0.3–2.0) from temp delta, pressure trend, wind impact, and precipitation impact, then applies it to the raw weather score from the Open-Meteo HRRR forecast. Moon phase is explicitly excluded.

Inputs

  • Current and previous-day high temperature
  • Barometric pressure and trend
  • Wind speed and direction
  • Precipitation probability and inches

Output

Weather-movement modifier 0.3–2.0, per-factor breakdown, cold-front-detected flag.

Food Plot Arrival Timing

Predicts deer arrival time at food sources with pressure-adjusted shift from early to late season.

src/lib/scoring/food-plot-timing.ts

For candidates near food sources (NLCD land cover 71/81/82 or field_edge feature), predicts the estimated arrival time relative to sunset. Opening-week arrivals average 30–60 min before sunset; by gun-season week 2 arrivals shift to at-or-after dark. Includes a rut-disruption flag for bucks during peak rut (when food-plot patterns break down in favor of doe-seeking). Pressure level is derived from the pressure model's spatial factor.

Inputs

  • Hunt date and location
  • Days since opener
  • Pressure level (derived from pressure.spatial factor)
  • Bedding distance (approximate)
  • Sex and rut phase

Output

Estimated arrival HH:MM, minutes relative to sunset, legal-hours flag, recommended setup time, rut-disrupted flag, explanation text.

Movement Corridor Detection

A* least-cost-path corridors between predicted bedding and feeding areas with funnel detection.

src/lib/corridor/auto-corridors.ts

Pre-computes a cost surface per geography from DEM slope + NLCD land cover + water barriers (pipeline/compute_cost_surface.py). At recommendation time, detects bedding and feeding clusters from PostGIS terrain features, runs A* with a MinHeap across the cost grid to find least-cost paths between each bedding-feeding pair, and identifies topographic funnels (pinch points) along the paths. Candidates near a corridor or funnel get a terrain score boost of 0–15 points.

Inputs

  • Cost grid (pre-computed per geography)
  • Terrain features from PostGIS (bedding and feeding classifications)
  • Candidate locations for proximity scoring

Output

CorridorResult[] with paths, travel times, funnels detected, and per-candidate corridor proximity boost.

Hunter Approach Route Planner

A* walking route from the property edge to each recommended stand, with wind, bedding, and water cost layers.

src/lib/routing/approach-planner.ts

For every top-N recommendation, plans the lowest-cost walking route from a polygon edge entry point to the stand. The ~10m grid composes four cost layers: (1) base distance, (2) downwind scent exposure — a wind cone projected from each other predicted deer position toward the hunter so the route avoids carrying scent into the rest of the herd, (3) bedding-zone avoidance — a gradient around predicted bedding sites so the hunter doesn't bump deer on the approach, and (4) NHD HR water polygons — a hard barrier inside the polygon plus a soft shoreline buffer within ~30m. The auto-detected entry point is biased toward crosswind/downwind approach bearings, or the user can pin an explicit entry point. The static layers (polygon mask, bedding cost, water cost) are built once per request via buildSharedRouteContext and reused across all candidate routes; only the per-candidate scent overlay is recomputed. A* uses a binary min-heap open set, and the path is smoothed via Chaikin's corner-cutting after pathfinding.

Inputs

  • User-drawn polygon (defines walkable area)
  • Predicted bedding zones from PostGIS terrain features
  • NHD HR water polygons intersecting the polygon bbox
  • Wind direction + speed from Open-Meteo HRRR forecast
  • Other top-N recommendations as predicted deer positions (scent avoidance)
  • Optional user-specified entry point (overrides auto-detection)

Output

GeoJSON LineString attached to each recommendation as approach_route, with distance_miles, time_minutes, wind_exposure_score (0–100), and a natural-language start_description.

Note: Water avoidance was added to fix routes that drew across reservoirs and large lakes. The hard-barrier polygon mask plus soft shoreline buffer guarantee no path segment crosses standing water, even at the cost of longer walks. The shared static grid + binary heap optimization in STORY-068 took the per-request planner cost from 25,778 ms to 40 ms.

RSF Validation Harness (STORY-060)

Validates predicted RSF probabilities against real Dryad GPS collar fixes using the continuous Boyce Index and AUC.

pipeline/validation/validate_rsf_against_dryad.py

Standard wildlife-ecology validation methodology. Loads real used-points from the collar_tracks PostGIS table (with a hard safeguard that REFUSES to validate against synthetic data), generates 10× random available-background points within the study minimum convex polygon, samples the RSF GeoTIFF at both sets of points, and computes the continuous Boyce Index (Hirzel et al. 2006) plus Mann-Whitney U AUC plus per-season calibration bins. Outputs a markdown report and machine-readable JSON artifact the UI can display.

Inputs

  • Real Dryad GPS fixes from collar_tracks (study_source=dryad_nyc by default)
  • Seasonal RSF GeoTIFF per geography
  • Target season (early / pre_rut / rut / post_rut / late)

Output

Boyce Index, AUC, calibration bin table, research/validation/rsf_validation_<season>.md + .json

Note: This is the story that lets a client ask "how do you know the RSF model actually works?" and get a real number back instead of hand-waving.

6. The recommendation pipeline

How a single candidate becomes a ranked recommendation.

When a user draws a hunt area and clicks “Optimize”, Hunt IQ runs the following pipeline. Each step either reads real input data or applies a literature-derived model, with every coefficient traceable to a citation on this page.

  1. 1

    Extract terrain candidates

    Query the terrain_features PostGIS table for saddles, ridges, funnels, benches, field edges, and bedding areas within the user's drawn polygon. These come from the USGS 3DEP LiDAR pipeline.

  2. 2

    Water exclusion (schema invariant)

    The terrain_features query already excludes any feature whose location intersects an NHD HR water polygon. This is enforced as a schema-level invariant — the is_in_water flag is populated once at seed time by intersecting every terrain feature against the water_bodies table — rather than re-evaluated per request. Flooded candidates never reach the scoring engine. Deer don't bed in open water.

  3. 3

    Score terrain

    Run terrain.ts heuristic + rsf-scoring.ts RSF blend. RSF takes precedence when pipeline has pre-enriched rsf_score for the geography. Apply feature-type bonus (funnel +25, saddle +20, etc.) and weapon modifier.

  4. 4

    Fetch weather

    Query Open-Meteo HRRR for the hunt date/time and location. Compute base weather score (wind / pressure / precip / temperature). Apply weather-movement.ts cold-front modifier on top.

  5. 5

    Score behavior

    Run behavior-states.ts HMM model to predict hour-by-hour movement probability for the hunt window. Apply rut-tracker.ts phase-specific multipliers.

  6. 6

    Apply pressure

    Run pressure.ts to compute the composite pressure modifier. Multiply the behavior score by pressure.score, then apply the Oklahoma hunt-day effect (−17% on weekend in-season days) via applyHuntDayEffect.

  7. 7

    Detect corridors

    If a cost grid exists for the geography, run auto-corridors.ts to compute A* least-cost paths between predicted bedding and feeding clusters. Boost terrain score for candidates near a corridor or funnel.

  8. 8

    Food plot timing

    For candidates near food sources, run food-plot-timing.ts to predict arrival time relative to sunset, factoring in pressure level and rut phase.

  9. 9

    Sighting boost

    Query the sightings PostGIS table for real user-reported sightings within 500m. Apply a recency-weighted boost (14-day exponential half-life) to the behavior score.

  10. 10

    Compute composite

    composite = 0.40·terrain + 0.20·weather + 0.25·behavior + 0.15·access. Rank candidates by composite score and return the top N.

  11. 11

    Plan approach routes

    For each top-N recommendation, run approach-planner.ts to find the lowest-cost walking path from a polygon edge entry point to the stand. The cost grid composes downwind scent exposure (a wind cone projected toward other predicted deer positions), bedding-zone avoidance, NHD HR water polygons (hard barrier inside polygons + ~30m soft shoreline buffer), and base travel distance. Returns a smoothed GeoJSON LineString attached to the recommendation as approach_route with distance, time, and a wind-exposure score.

  12. 12

    Aggregate citations

    Build the movement_intelligence.citations[] array from the union of CITATIONS_USED exports across every module that contributed. This is what powers the clickable CitationTip popovers in the UI.

7. Validation & honesty

How we know the models actually work (and where we don't yet know).

Any RSF-style habitat model is worth less than the validation backing it up. Applying published coefficients to local covariates is arithmetic; verifying that the resulting surface tracks real deer use is science.

Hunt IQ ships a validation harness at pipeline/validation/validate_rsf_against_dryad.py that samples the predicted RSF probability at real GPS fixes from the Dryad NYC dataset (VanAcker et al. 2023) versus random available-background points, and computes two standard validation metrics:

Continuous Boyce Index

Spearman rank correlation between habitat-suitability class and P(used)/P(available) ratio. Values above 0.5 are good, above 0.8 excellent, below 0 are a red flag (inverse relationship).

Hirzel et al. 2006 — Ecological Modelling, DOI 10.1016/j.ecolmodel.2006.05.017

AUC (Mann-Whitney U)

Probability that a random used point has a higher RSF value than a random available point. Values above 0.7 are good, above 0.8 excellent, below 0.6 indicate the model barely beats random.

Standard ROC analysis

The harness refuses to run against synthetic study sources as a hard safeguard against fake validation numbers. Actual execution requires the Dryad NYC cache to be pre-staged (Dryad auth policy blocks anonymous downloads) and the RSF GeoTIFF to be computed for the matching region. When those are in place, the results will be published at research/validation/rsf_validation_<season>.md and surfaced on the RSF layer legend.

8. Limitations & what Hunt IQ does not do

Honest science requires honest limitations.

No live GPS collar feeds

Hunt IQ does not ingest live collar data from an ongoing study. The GPS datasets we load (Dryad NYC, Dryad Alabama, Movebank Florida) are historical and static. When collar partnerships materialize in the future, the ingestion pipeline is ready (pipeline/collar_data/) but it's not currently running against a live feed.

RSF coefficients are extrapolated beyond their source study's season

The primary RSF source (Darlington et al. 2022) studied female white-tailed deer in Alberta, Canada during winter. Hunt IQ applies those betas across five seasons (early / pre-rut / rut / post-rut / late). This is a reasonable extrapolation but it's not a guarantee that the coefficients generalize perfectly. STORY-060's validation harness is the check.

Penn State percentages come from extension content, not peer-reviewed papers

The specific 25% / 240% / 10→21% / midday buck peak numbers appear in Penn State Deer-Forest Study extension articles and blog posts on deer.psu.edu, not in peer-reviewed journal publications. The study itself is real and long-running, but these specific numbers are extension content. The registry entry for penn-state-deer-forest-study is marked LIKELY rather than VERIFIED to reflect this.

Paterson et al. 2023 studied pronghorn and mule deer, not white-tailed deer

This HMM methodology paper is cited for its modeling approach, not for WTD-specific findings. The WTD-specific empirical grounding comes from Strickland et al. 2023 (MSU P3927) and Webb et al. 2010. The species caveat is documented on the citation entry.

USGS migration corridors only cover the Washington Selkirk population

The Kauffman et al. 2022 UMRv3 dataset is the only published white-tailed deer migration corridor dataset on USGS ScienceBase. It's geographically limited to 43 GPS-collared deer in Northeast Washington. Hunt IQ users outside that extent will see no published reference corridors — which is a data-availability reality, not a bug.

Sex-aware RSF not yet implemented

The RSF coefficients currently apply equally to buck and doe hunting. STORY-064 is planned to add buck/doe differentiation using real published sex-specific betas where available.

Moon phase is explicitly excluded

This is a deliberate design choice, not a limitation. MSU Deer Lab and Webb et al. 2010 (32 deer, 7-year GPS collar study) both found zero measurable effect of moon phase on deer movement rates. Including moon phase would be pseudoscience.

9. References (peer-reviewed)

15 published papers and extension publications. Grouped by kind.

Hidden Markov movement models reveal diverse seasonal movement patterns in two North American ungulates

Paterson, J.T., Johnston, A.N., Ortega, A.C., Wallace, C., Kauffman, M. · 2023

VERIFIED
Venue
Ecology and Evolution · University of Wyoming
Sample / Scope
Pronghorn (Antilocapra americana) and mule deer (Odocoileus hemionus) — NOT white-tailed deer
DOI
10.1002/ece3.10282

Findings used in Hunt IQ

  • 2-state HMM (short-distance local vs long-distance movements) reveals seasonal transition probabilities
  • Methodological foundation for Hunt IQ's HMM-inspired 3-state behavior model
  • NOTE: studied pronghorn + mule deer, not white-tailed deer — cited as methodology only

Referenced from

  • behavior-states.ts (HMM methodology)

Note

Species caveat: this paper did NOT study white-tailed deer. It is cited as the HMM ungulate methodology reference. The white-tailed-deer-specific empirical grounding comes from strickland-2023-buck-movement and webb-2010-fine-scale-movements.

Cumulative effects of human footprint, natural features and predation risk best predict seasonal resource selection by white-tailed deer

Darlington, S., Ladle, A., Burton, A.C., Volpe, J.P., Fisher, J.T. · 2022

VERIFIED
Venue
Scientific Reports · University of Victoria / University of Alberta
Sample / Scope
99,148 telemetry locations from 38 (36 used in analysis) GPS-collared female white-tailed deer in Alberta, Canada, winters 2012-2014
DOI
10.1038/s41598-022-05018-z

Findings used in Hunt IQ

  • Cumulative-effects model combining human footprint + natural features + predation risk best predicts seasonal resource selection
  • Seasonal RSF beta coefficients for slope, aspect, canopy, distance to water, distance to edge, land cover class
  • Female white-tailed deer; winter-season focus — coefficients in pipeline/config/rsf_coefficients.json were extrapolated to other seasons based on this foundation

Referenced from

  • pipeline/config/rsf_coefficients.json
  • pipeline/compute_rsf_surface.py

Note

Author correction (2026-04-06): prior EPIC-009 drafts guessed 'Kjær' — the real lead authors are Darlington, Ladle, Burton, Volpe, Fisher, verified via the DOI landing page. Sample is 38 female WTD in Alberta (not mixed-sex), winter-focused.

The Movebank system for studying global animal movement and demography

Kays, R., Davidson, S.C., Berger, M., Bohrer, G., Fiedler, W., Flack, A., et al. · 2022

VERIFIED
Venue
Methods in Ecology and Evolution · Max Planck Institute for Animal Behavior / North Carolina Museum of Natural Sciences
Sample / Scope
Canonical Movebank system paper
DOI
10.1111/2041-210X.13767

Findings used in Hunt IQ

  • Canonical citation for the Movebank system when ingesting Movebank Data Repository studies (STORY-057)
  • Required attribution when using Movebank-sourced GPS telemetry

Referenced from

  • pipeline/collar_data/import_movebank.py

Risky movements? Natal dispersal does not decrease survival of white-tailed deer

Long, E.S., Diefenbach, D.R., Lutz, C.L., Rosenberry, C.S., Wallingford, B.D. · 2021

VERIFIED
Venue
Ecology and Evolution · Penn State / Pennsylvania Game Commission
Sample / Scope
Pennsylvania PA Deer-Forest Study collared deer
DOI
10.1002/ece3.7227

Findings used in Hunt IQ

  • Dispersing juveniles do not have lower survival than non-dispersers
  • Peer-reviewed Diefenbach-lab Deer-Forest Study output

Referenced from

  • research/CITATIONS.md (peer-reviewed companion to penn-state-deer-forest-study)

Recognizing the danger zone: response of female white-tailed deer to discrete hunting events

Sullivan, J.D., Ditchkoff, S.S., Collier, B.A., Ruth, C.R., Raglin, J.B. · 2018

VERIFIED
Venue
Wildlife Biology · Auburn University (Ditchkoff Deer Lab)
Sample / Scope
GPS-collared white-tailed deer (adult females), 30-minute fix intervals, South Carolina
DOI
10.2981/wlb.00455

Findings used in Hunt IQ

  • Deer recognize and respond to localized threats at specific stand locations
  • Deer response appears to result from the number of times a stand is hunted
  • Deer capable of recognizing even low levels of localized pressure
  • Behavior modification follows additional experiences at the stand (sigmoid-like decay)

Referenced from

  • pressure.ts:calcSpatialFactor

Impacts of human hunting on spatial behavior of white-tailed deer (Odocoileus virginianus)

Marantz, S.A., Long, J.A., Webb, S.L., Gee, K.L., Little, A.R., Demarais, S. · 2016

VERIFIED
Venue
Canadian Journal of Zoology · St. Andrews / Mississippi State / Noble Foundation (south-central Oklahoma study site)
Sample / Scope
GPS-collared adult white-tailed deer on a ~4,600-acre study area partitioned into no-risk, low-risk (1 hunter per 250 ac), and high-risk (1 hunter per 100 ac) zones
DOI
10.1139/cjz-2016-0125

Findings used in Hunt IQ

  • Total distance travelled, microrange area, and exploratory behavior decreased during hunting season
  • Greatest decrease occurred during the active hunting period
  • High-risk zone: daytime movement reduced ~17% relative to no-risk baseline
  • High-risk zone: nighttime movement reduced ~31% relative to no-risk baseline
  • High-risk zone: deer sightings declined ~62% after opening weekend
  • Low-risk zone: minimal effect on deer movement — patterns near-identical to no-risk zone

Referenced from

  • pressure.ts:OKLAHOMA_HUNT_DAY_EFFECTS
  • pressure.ts:applyHuntDayEffect

moveHMM: an R package for the statistical modelling of animal movement data using hidden Markov models

Michelot, T., Langrock, R., Patterson, T.A. · 2016

VERIFIED
Venue
Methods in Ecology and Evolution · University of Sheffield / Bielefeld University / CSIRO
Sample / Scope
Methods paper
DOI
10.1111/2041-210X.12578

Findings used in Hunt IQ

  • Canonical moveHMM software citation
  • Supports 2-3 state HMM activity models from GPS step-length and turn-angle data
  • Methodological foundation for Hunt IQ's behavior-states.ts HMM model

Referenced from

  • behavior-states.ts (methodology reference)

Population density influences dispersal in female white-tailed deer

Lutz, C.L., Diefenbach, D.R., Rosenberry, C.S. · 2015

LIKELY
Venue
Journal of Mammalogy · Penn State / Pennsylvania Cooperative Fish and Wildlife Research Unit
Sample / Scope
Pennsylvania radio-collared juvenile female deer from the Penn State Deer-Forest Study footprint
DOI
10.1093/jmammal/gyv054

Findings used in Hunt IQ

  • Population density influences dispersal in female white-tailed deer
  • Peer-reviewed Diefenbach-lab output that grounds the Penn State Deer-Forest Study in the scientific literature

Referenced from

  • research/CITATIONS.md (peer-reviewed companion to penn-state-deer-forest-study)

Does human predation risk affect harvest susceptibility of white-tailed deer during hunting season?

Little, A.R., Demarais, S., Gee, K.L., Webb, S.L., Riffell, S.K., Gaskamp, J.A., Belant, J.L. · 2014

VERIFIED
Venue
Wildlife Society Bulletin · Mississippi State / Samuel Roberts Noble Foundation
Sample / Scope
Adult male white-tailed deer on a ~4,600-acre Oklahoma study area with three hunting-risk zones
DOI
10.1002/wsb.449

Findings used in Hunt IQ

  • GPS-collared bucks recognize hunting pressure regardless of hunter density
  • Exposure to high-pressure zones shifts bucks toward reduced daytime movement
  • Harvest susceptibility decreases after sustained pressure exposure

Referenced from

  • pressure.ts:calcTemporalFactor
  • pressure.ts:OKLAHOMA_HUNT_DAY_EFFECTS

Measuring fine-scale white-tailed deer movements and environmental influences using GPS collars

Webb, S.L., Gee, K.L., Strickland, B.K., Demarais, S., DeYoung, R.W. · 2010

VERIFIED
Venue
International Journal of Ecology · Mississippi State University / Samuel Roberts Noble Foundation (Oklahoma)
Sample / Scope
32 white-tailed deer, 7-year GPS collar study, Oklahoma
DOI
10.1155/2010/459610

Findings used in Hunt IQ

  • Moon phase has zero measurable effect on deer movement rates (debunks popular hunting mythology)
  • Fine-scale terrain preference measurable via GPS telemetry
  • Environmental covariates drive movement more than lunar cycle

Referenced from

  • behavior-states.ts (moon phase exclusion)
  • weather-movement.ts (explicitly excludes moon phase)
  • cost_weights.json (terrain preference validation)

Forks in the road: choices in procedures for designing wildland linkages

Beier, P., Majka, D.R., Spencer, W.D. · 2008

LIKELY
Venue
Conservation Biology · Northern Arizona University / Conservation Biology Institute
Sample / Scope
Review paper synthesizing best practices across wildlife corridor studies
DOI
10.1111/j.1523-1739.2008.00942.x

Findings used in Hunt IQ

  • Best practices for cost-weighted distance and least-cost path corridor modeling
  • Framework for selecting cost surface weights
  • Validation approaches for predicted corridors

Referenced from

  • pipeline/config/cost_weights.json
  • src/lib/corridor/pathfinder.ts
  • src/lib/corridor/auto-corridors.ts

Corridors for Conservation: Integrating Pattern and Process

Chetkiewicz, C.B., St. Clair, C.C., Boyce, M.S. · 2006

LIKELY
Venue
Annual Review of Ecology, Evolution, and Systematics · University of Alberta
Sample / Scope
Review paper
DOI
10.1146/annurev.ecolsys.37.091305.110050

Findings used in Hunt IQ

  • Functional connectivity framework for wildlife corridors
  • Integration of behavioral and landscape-level data in corridor modeling
  • Resource selection approach to corridor identification

Referenced from

  • pipeline/config/cost_weights.json
  • src/lib/corridor/auto-corridors.ts

Evaluating the ability of habitat suitability models to predict species presences

Hirzel, A.H., Le Lay, G., Helfer, V., Randin, C., Guisan, A. · 2006

LIKELY
Venue
Ecological Modelling · University of Lausanne
Sample / Scope
Methodology paper (continuous Boyce Index development)
DOI
10.1016/j.ecolmodel.2006.05.017

Findings used in Hunt IQ

  • Continuous Boyce Index for presence-only habitat model validation
  • Standard wildlife ecology metric for evaluating RSF predictions

Referenced from

  • scripts/validate_rsf_against_dryad.py (STORY-060)

Understanding Buck Movement: How, When, and Why Bucks Navigate the Landscape

Strickland, B.K., Demarais, S., Cain, R., Chance, A., Henderson, C., Street, G., Resop, L., McKinley, W. · 2023

VERIFIED
Venue
Mississippi State University Extension Service · Mississippi State University Deer Lab
Sample / Scope
60+ GPS-collared adult bucks over 3 years, 15-minute fix intervals, 50,000 acre study area along the Big Black River, Mississippi

Findings used in Hunt IQ

  • Pre-rut daily movement: ~4,800 yards/day
  • Peak rut daily movement: 7,500+ yards/day (4 miles)
  • Net displacement during peak/late rut is 1.7× farther than pre-rut (not the same as daily total, which is 1.56×)
  • Annual median home range: 860 acres
  • Sedentary bucks: 786 acres; mobile bucks: 12,406 acres
  • Daily home range during peak rut: ~210 acres
  • Bucks shift focal areas every 6–10 hours (74% observed)

Referenced from

  • rut-tracker.ts:PHASE_DATA
  • behavior-states.ts (MSU activity budgets)

Penn State Deer-Forest Study (extension content and blog posts)

Diefenbach, D.R., McDill, M., Pennsylvania Cooperative Fish and Wildlife Research Unit · 2013-ongoing

LIKELY
Venue
Pennsylvania Game Commission / Penn State University / PA DCNR / USGS · Penn State University / Pennsylvania Game Commission
Sample / Scope
1,200+ GPS-collared deer across Rothrock, Bald Eagle, and Susquehannock state forests; >1 million GPS locations over 10 years

Findings used in Hunt IQ

  • Walking behavior increases from ~10% (October) to ~21% (December) — reported in extension/blog content
  • Daytime cover use increases substantially as hunting season progresses (~240% by second weekend of gun season) — reported in extension/blog content
  • Counterintuitive midday movement peak (~12-1 PM) for adult bucks — reported in extension/blog content
  • Daylight harvest-zone entry probability decays through the season (~25% of opener by late November) — reported in extension/blog content
  • Food plot arrival times shift from pre-sunset to post-sunset as pressure accumulates — reported in extension/blog content

Referenced from

  • behavior-states.ts:midday_buck_bonus
  • pressure.ts:calcTemporalFactor
  • pressure.ts:getCoverPreferenceShift
  • food-plot-timing.ts

Note

CAVEAT (2026-04-06 research agent audit): the specific numeric claims listed above (25%, 240%, 10→21%, 12-1 PM midday peak) could NOT be traced to peer-reviewed Deer-Forest Study publications. They appear in extension articles, blog posts, and podcast transcripts on deer.psu.edu, not in journal papers. They are still grounded in real GPS collar observations from a real long-term study, but any scientific client should be told these specific percentages come from extension content rather than peer-reviewed literature. Peer-reviewed Diefenbach-lab outputs include: Lutz et al. 2015 (Journal of Mammalogy) on female dispersal, and Long et al. 2021 (Ecology and Evolution, DOI 10.1002/ece3.7227) on dispersal survival. See lutz-2015-dispersal and long-2021-dispersal-survival citations for peer-reviewed alternatives.