Inspiration

Wildlife conservation often starts with a deceptively difficult question: where can a species actually thrive, and why? Traditional range maps can show where a species has been observed, but they do not always capture how suitable a specific location is or what environmental factors may be helping or limiting that habitat.

We built Wild-Locate to turn scattered wildlife observations and environmental data into something more useful. Our goal was to create a tool that could not only estimate habitat suitability, but also help users investigate why a location receives that assessment and identify areas that may deserve greater conservation attention.

What it does

Wild-Locate is a machine-learning platform for analyzing wildlife habitat suitability and investigating local environmental conditions.

A user selects a species and location, and Wild-Locate analyzes the surrounding landscape using environmental variables such as land cover, water, elevation, development, and roads. It then returns a relative habitat suitability score, percentile, category, and the environmental conditions contributing to the result.

Users can analyze either a single location or a larger region using an 81-point spatial grid across a 10, 25, or 50 km radius.

Wild-Locate also includes a Deep Dive mode. Instead of simply giving another habitat score, Deep Dive investigates the selected landscape in greater detail. It examines real mapped features—including roads, buildings, habitat areas, and terrain locations—and compares their surrounding environmental conditions with the species model. Users can explore potentially limiting or supporting conditions, possible ecological mechanisms worth investigating, source information, and suggested field checks.

This makes Wild-Locate useful not just for predicting suitable habitat, but for helping researchers, conservationists, and curious users identify where further investigation or conservation efforts may be most valuable.

Importantly, Wild-Locate treats its predictions as model-based evidence rather than ecological certainty. A high suitability score is not the probability that an animal is currently present, and the Deep Dive does not claim that an individual road or building caused habitat degradation.

How we built it

Wild-Locate's backend is built primarily in Python and combines wildlife occurrence data, geospatial processing, and machine learning.

For custom species models, Wild-Locate retrieves research-grade iNaturalist observations and filters out duplicate, obscured, captive, and excessively imprecise records. Instead of generating completely random absence points, we use target-group background observations from related animals to create a more realistic comparison dataset.

For each observation, we extract environmental information from several geospatial datasets, including:

  • NLCD land-cover and impervious-surface data
  • USGS 3DEP elevation and terrain data
  • Hydrography and water features
  • Road and development information
  • Surrounding habitat characteristics measured at multiple spatial scales

Wild-Locate evaluates Logistic Regression, Random Forest, and XGBoost models using spatial cross-validation. Models are primarily compared using PR-AUC, followed by ROC-AUC and model complexity, before the selected model is retrained on the complete dataset.

The Deep Dive system combines these trained models with OpenStreetMap / Overpass geometry. It searches the selected landscape for real roads, buildings, habitat polygons, and terrain locations and evaluates the environmental conditions around those specific places.

We built both a browser interface using HTML, CSS, JavaScript, and Leaflet and a PyQt6 desktop interface, while keeping the machine-learning and prediction logic centralized in the same Python backend.

Challenges we ran into

One of our biggest challenges was realizing that wildlife observations are inherently biased data. Species are recorded where people happen to look, and an absence of observations does not necessarily mean an animal is absent. This forced us to think carefully about filtering observations, selecting background data, and validating models geographically rather than treating the dataset like a standard random classification problem.

Geospatial data created another major challenge. Different datasets have different coordinate systems, resolutions, geographic coverage, and formats. Combining land cover, elevation, water, roads, wildlife observations, and map geometry into one consistent pipeline required substantial preprocessing and debugging.

Interpretability was also difficult. It would have been easy to label every nearby road or building as a "threat," but the model cannot prove ecological causation. We redesigned our Deep Dive around model comparisons and evidence, showing supporting and limiting conditions while clearly communicating uncertainty rather than presenting speculative conclusions as facts.

Finally, we had to balance technical depth with usability. Habitat modeling can involve dozens of variables and validation statistics, but most users need a result they can understand quickly. We therefore designed the initial habitat assessment to be compact while allowing users who want more detail to open the full Deep Dive.

Accomplishments that we're proud of

We're especially proud that Wild-Locate became more than a simple species-location classifier.

We built an end-to-end system that can:

  • Collect and clean real wildlife observations
  • Construct species-specific training datasets
  • Extract environmental features from large geospatial datasets
  • Train and spatially validate multiple machine-learning models
  • Analyze individual coordinates and entire surrounding regions
  • Train custom mammal and reptile models
  • Investigate real mapped locations through Deep Dive
  • Explain predictions without presenting correlations as proven ecological causes
  • Export analyses for further review

We are also proud of the distinction Wild-Locate makes between prediction and conservation analysis. Rather than stopping at "this habitat scores 0.72," the system helps users investigate what is actually happening in that landscape and where additional research may matter.

What we learned

The biggest lesson we learned was that building an accurate model is only one part of solving a real scientific problem.

We learned how important data quality, spatial validation, background-point selection, geographic scale, and uncertainty are when working with ecological machine learning. A model can produce impressive-looking numbers while still being misleading if its data or validation process is poorly designed.

We also gained experience working with geospatial raster and vector data, machine-learning pipelines, APIs, coordinate systems, web mapping, and full-stack application development.

Most importantly, we learned that responsible environmental technology should communicate what it doesn't know. Wild-Locate became stronger when we stopped trying to turn every model relationship into a definite ecological conclusion and instead designed the system to help users investigate those relationships further.

What's next for Wild-Locate

We want to expand Wild-Locate beyond its current environmental datasets and geographic coverage by incorporating additional species, regions, and ecological variables.

Future versions could include habitat connectivity and wildlife-corridor analysis, temporal land-use change, climate variables, seasonal habitat differences, and improved comparisons between landscapes.

We also want to strengthen Wild-Locate's conservation applications by working with ecological experts and field data so that model findings can be connected to real conservation priorities and validated outside the software.

Ultimately, our goal is for Wild-Locate to bridge the gap between wildlife observations, machine learning, and actionable ecological investigation—helping people understand not only where wildlife may thrive, but what we can learn from the landscapes around them.

Built With

Share this project:

Updates

Submission history