WA Trail Finder · About

← Back to dashboard

A personal weekly dashboard summarizing the current state of Washington (and select Oregon) hiking trails, plus nearby campgrounds and rest stops. The map is centered on WA / OR; trip-report status comes from wta.org and is summarized by an LLM.

What's on the map

Trail markers (circles)

IconMeaning
Open — fit hiker, regular boots, no special gear.
Snow gear — traction needed on the main route a typical hiker walks (microspikes / crampons / snowshoes / ice axe), route-finding above continuous snow, or impassable creek crossings. Snow only above the normal turnaround stays Open.
Closed — trail or access impassable: road washout, severe damage, active fire closure, etc.
Stale / unknown — last trip report is over 30 days old, so the classification is no longer reliable.
Dark outer ring — a trip report came in within the last 7 days. Combines with any of the colors above.

Campground markers (small squares, "Camps" toggle)

IconMeaning
NPS — National Park Service (Olympic, Rainier, North Cascades, etc.)
USFS — Forest Service (Mt Baker–Snoqualmie, Okanogan–Wenatchee, Gifford Pinchot, etc.)
State Parks — Washington or Oregon State Parks
Other — county, city, DNR, BLM, USACE, tribal, etc.

Rest area / truck stop markers ("Stops" toggle)

IconMeaning
🚗Rest area — WSDOT (WA) or ODOT (OR) safety rest area. Restrooms, picnic, sometimes RV dump or info.
🛻Truck stop — Pilot / Flying J / Love's / TA. Fuel, food, showers, parking.

Oregon trail markers ("OR Trails" toggle)

IconMeaning
Oregon trail — no WTA trip reports (different source), so no green/amber/red status. Click for distance, elevation gain, season, and a link to the source page.

Card badges (left pane)

BadgeMeaning
Open / Snow gear / ClosedCurrent accessibility derived by GPT from the latest trip reports.
StaleNo trip report in 30+ days; the classification is no longer trustworthy.
✦ NewTrail was just added to the dashboard.
ReportA new trip report came in within the last 7 days.
UpdatedAccessibility classification just flipped (e.g. snow_gear → open), or the GPT summary text materially changed.

How trail status is determined

A trail's Open / Snow gear / Closed status isn't set by hand — it's classified by GPT-4o-mini from the 3 most recent WTA trip reports for that trail. The model reads each report's hike date, "Beware of" issues, feature flags, and body text, then picks the single best-fit bucket using fixed rules:

The most recent report wins. Report 1 (newest) describes current conditions; older reports are only used for facts the latest one doesn't contradict. If the newest report says a hazard melted out or was cleared, that overrides older reports that still mention it.

Why a trail flips from Open to Snow gear

Status tracks the latest conditions, so it changes whenever a newer report describes something different. A common case in spring and early summer:

The reverse happens as snow melts out: once recent reports stop mentioning traction or snow on trail, it flips back to Open. In the Recent updates panel the date shown is the date of the report that drove the change — not when our refresh happened to notice it.

How data is collected

Trails

Trip reports

The latest 3 trip reports per trail are scraped from WTA's @@related_tripreport_listing endpoint at 1 req/sec with an identifying User-Agent. Each report carries hike date, author, "Beware of" issues, feature flags, and body text.

Trail status (GPT)

For each trail with a new latest report, GPT-4o-mini is given the trail metadata and the latest 3 reports, and asked to return:

The most recent report is authoritative — older reports are only used for facts the latest one doesn't contradict. Results are cached by the latest report's URL, so a trail is only re-summarized when a genuinely new report arrives.

Drive times

From both Seattle and Bellevue, computed once per trailhead via the public OSRM driving profile. Cached forever by (lat, lng). Note: OSRM doesn't include ferries, so Whidbey / Olympic Peninsula times are conservative (e.g. Ebey's Landing shows ~140 min via Deception Pass vs. ~90 min via Mukilteo ferry).

Campgrounds (~419)

Public-agency campgrounds in Washington and Oregon, curated from these sources:

Per entry: name, managing agency, lat/lng, location, elevation, season, site count, facilities, fee tier, activities, phone, reservable.

Rest areas / truck stops (76)

Hand-curated WSDOT and ODOT safety rest areas + major truck stops (Pilot, Flying J, Love's, TA) along I-5, I-90, I-84, I-82, US 2, US 97, US 101, US 26, US 395.

Oregon trails (~69)

Curated from public sources:

Filters and toggles

Recent updates panel

Folded by default; click the amber bar to expand. Shows trails with any of:

The sort dropdown drives both the updates list and the main LHS trail cards in sync.

Update button

The "Update status" button at the top right re-scrapes trip reports for every trail, re-summarizes any that have a new latest report, and re-renders the dashboard. Typical wall time is 90–120 seconds. The request is async (the server returns a job ID immediately, the dashboard polls every 4 seconds) so reverse proxies like Cloudflare don't time out.

It's password-gated because it spends OpenAI tokens. Enter the password once and it's remembered in localStorage for 7 days.

Privacy & etiquette

Architecture

Five-step pipeline. Each step reads the previous step's JSON and writes its own, so steps are debuggable and re-runnable in isolation.

Plus server.py — a small ThreadingHTTPServer that serves dist/ and exposes /api/search, /api/add, /api/refresh for the live dashboard interactions.

Source

Source code: github.com/jykim/wa-trail-guide. Trail data: wta.org. Oregon trails: oregonhikers.org. Map tiles: © OpenStreetMap contributors. Routing: OSRM public profile.

Personal use — not affiliated with WTA, Olympic / Mt Rainier / North Cascades National Parks, USFS, ODOT, WSDOT, or any other agency mentioned.