Inspiration

Birds carry ticks hundreds of miles during migration, and ticks only go hunting ("questing") when soil temperature and humidity are right. Lyme and other tick-borne diseases keep spreading into new areas, but the signals that matter (bird movement, weather, tick sightings) live in separate databases nobody looks at together. We wanted one map that connects them.

What it does

  • 3D map of all 50 states + DC, colored and raised by an experimental tick questing suitability score from real 7-day forecasts
  • Play through the forecast day by day with a timeline; states animate between days
  • Click a state for a smoothed weather heatmap, county/city labels, and recent bird and tick report counts
  • Animated flocks follow broad seasonal migration corridors (northbound spring, southbound fall)
  • Every value shows its source and freshness; stale or missing inputs are labeled, never faked
  • No disease probability is calculated. It's a conditions map, not a diagnosis ## How we built it
  • Pipeline (Python, zero dependencies): samples a 50 km grid across the US (3,846 points), pulls hourly soil temp, soil moisture, humidity, and vapor pressure deficit from Open-Meteo, 6 ground-foraging bird species from eBird, and research-grade tick sightings from iNaturalist
  • Model: hourly suitability = temperature factor × humidity factor × VPD factor × moisture factor, daily peak over at least 18 valid hours, scaled 0 to 100. Missing data stays null instead of becoming zero
  • Publishing: writes a national manifest plus 51 per-state snapshots as static JSON, swapped in atomically so a failed run never breaks the live map
  • Frontend: React 19, TypeScript, Vite, MapLibre GL with custom WebGL bird meshes, reduced-motion support, WebGL context-loss recovery, and a non-WebGL fallback
  • Teamwork: three people coordinating AI coding agents through GitHub Issues, with every PR independently audited by someone other than its author ## Challenges we ran into
  • Lining up data with totally different resolutions: hourly UTC weather, local-time bird sightings, tick reports with location uncertainty
  • Forecast runs crossing UTC midnight split across two days until we pinned the window at start
  • Keeping the eBird API key backend-only and out of every published file
  • Rendering thousands of animated birds without killing the GPU ## Accomplishments that we're proud of
  • Real national data, not a mockup, refreshed from three public sources
  • Honest by design: the UI separates observed, estimated, and unavailable
  • Unit-tested pipeline and frontend data layer ## What we learned Making a map look convincing is easy; making it truthful is the hard part. We also learned how to run a multi-agent dev workflow without agents stomping on each other's work. ## What's next for VectorCast
  • Turn on the twice-daily GitHub Actions refresh and public hosting
  • Add habitat data and county-level pathogen surveillance (CDC, NY DOH)
  • Real bird tracks from radar and Movebank instead of seasonal corridors
  • Saved areas that alert you when conditions change
Share this project:

Updates

Submission history