🐾Dog Parks Hub

Our methodology

Everything you need to evaluate, cite, or replicate our data. Open-book.

Data sources

  • Public park databases β€” US National Park Service, state park departments, municipal parks-and-rec sites, and county metropark systems.
  • Google Maps via Outscraper β€” used to seed names, addresses, hours, and visitor star ratings. Aggregate ratings only; no scraping of individual reviews.
  • OpenStreetMap β€” coordinates, polygon footprints, named amenities (where tagged).
  • Wikimedia Commons β€” park photos under CC-BY-SA / CC0 / public-domain licenses with proper attribution per the about page.
  • Editorial review β€” every park is reviewed by a human (one of our editors) before publication.

Amenity-flag enrichment

Each park is scored against 11 amenity flags: shade, water on-site, fenced, off-leash zone, small-dog area, benches, restrooms, parking, waste bags, indoor, trash cans.

Enrichment is a 4-step pipeline:

  1. Pull the park's first-party description (official site / parks-and-rec page) and any aggregate review summaries from Google Maps.
  2. Run a Claude (Anthropic) prompt that extracts evidence for each flag from the prose. The model returns true / false / unknown for each flag.
  3. Verify against OpenStreetMap tags (e.g. shelter=yes, drinking_water=yes, barrier=fence) and the park's own facility list when published.
  4. Editor review: a human signs off before the record goes live. Flags marked unknown stay unknown β€” they're never inferred to "no" silently. Stats counts only confirmed yes/no.

Vibe Scoreβ„’ formula

Per-park 0-10 score, deterministic from the public dataset. Open formula:

VibeScore =
   rating                               // 0..5
 + min(2.5, features_yes_count / 11 Γ— 2.5)  // 0..2.5
 + min(1.5, [log10(1 + acres/5) + log10(1 + trail_miles)] Γ— 0.5)
 + min(0.7, 0.5*off_leash + 0.3*(fenced && kind∈{dog-park,metropark}))
 + 0.5 Γ— kind_bonus

   where kind_bonus is 1.2 (NP), 1.0 (state-park / beach), 0.9 (metropark),
   0.8 (preserve), 0.7 (trail, dog-park), 0.5 (campground / training / daycare),
   0.0 for vet / hotel / restaurant / pet-store / groomer / rescue.

   Final clamped to [0, 10] and rounded to 1 decimal.

Source code: /src/lib/vibe.ts. The formula is open and stable β€” anyone can re-derive scores from the public dataset.

Update cadence

  • Continuous β€” new parks added as we discover them; bug-fix updates roll out via CI.
  • Quarterly β€” full re-enrichment of all amenity flags against the latest park descriptions. Ratings refreshed.
  • Photo refresh β€” Wikimedia Commons checked for newer/higher-quality photos twice a year.

What we don't do

  • We don't infer "yes" or "no" amenity flags without first-party evidence.
  • We don't accept paid placements in rankings (Vibe Score is purely formula-driven).
  • We don't track individual users or sell data.
  • We don't republish copyrighted reviews β€” only aggregate star ratings and review counts (which are themselves factual data points, not creative expression).

Use the data

Everything is free under CC-BY-4.0 β€” pull /api/parks.json or /api/parks.csv. Cite "Dog Parks Hub 2026" with a link back. Read the full dataset page.

Questions?

Methodology questions, bug reports, partnership inquiries: see /about.