# sledville.com: local roadmap

_Cluster: **adventure-tours** (Leadville, CO outfitter + motorsports repair; next-generation companion to leadvilleoffroad.com). Generated 2026-09-14. noindex._

## Current state (real signals, 2026-09-14)

- Brand new build. Same business and the same verified facts as leadvilleoffroad.com (see `_night/leadville/RESEARCH.md`); Sledville adds the trip planner (/plan/), the concierge (/ask/), a month-by-month calendar, a season-switch hero, a tour comparison table, and a kb.json knowledge file.
- AI approach: free, open, client-side only. The droplet (3.8 GiB RAM, ~290 MiB free, 2 vCPU, load ~3) cannot safely host even a 3B model, so no LLM was installed; see AGENTS.md.
- 23 pages, 37 photos (real, credited), 14 verified YouTube embeds, JSON-LD on every page incl. WebApplication for both tools, Markdown twin of every page, /api/*.json, /kb.json, llms.txt, AGENTS.md, MCP card.
- Sister-site question is open: both sites self-canonicalise and point at each other via sameAs.

## Upgrade checklist

- ✅ Trip planner + concierge, grounded in kb.json, no cloud AI
- ✅ Agents First surfaces (AGENTS.md, llms.txt, api/, kb.json, MCP card, openapi, Markdown twins)
- ✅ FAQ with FAQPage schema on every commercial page and both tools
- ✅ /videos/ (14 embeds), /gallery/ (37 photos, credited)
- ✅ Designed font system (Bricolage Grotesque, Instrument Sans, JetBrains Mono), six themes incl. Burnt Orange dark/day, motion with reduced-motion fallback
- ⬜ Markdown content negotiation in nginx (Accept: text/markdown -> index.md). Needs a vhost `map`; ask before touching nginx.
- ⬜ Optional self-hosted LLM rewrite layer over the local engine (only if the droplet is resized or a separate box appears; see AGENTS.md)
- ⬜ Conditions feed (/conditions/) so the month calendar can show "this week" instead of norms
- ⬜ Lead capture instrumentation (wt-leads /l/ needs an nginx location + ALLOWED entry); today the planner's booking handoff is a mailto
- ⬜ Booking widget

## Staged, additive upgrades (nothing here changes the live site without a snapshot + approval)

### Stage 1: owner confirmations (zero design work)
1. Confirm with the owner: hours; cancellation/deposit/weather policy; shop brands, turnaround, drop-off hours; UTV driver age; passenger minimum size; snowbike and winter UTV prices; whether the $295 sled rate is per rider or per sled. Then edit `lv_content.py` / `sv_content.py` and regenerate both sites.
2. Decide the sister-site relationship (standalone brand vs canonical to leadvilleoffroad.com) and set canonicals accordingly.
   Prompt: "Read AGENTS.md on sledville.com. Apply the owner's confirmed facts to sv_content.py (and lv_content.py), regenerate with gen-sledville.py, redeploy, verify every page 200 and the planner's cost lines."

### Stage 2: make the tools smarter without a cloud
3. /conditions/: a dated weekly note in season (snow depth, roads open, aspen color) written as JSON + HTML; the concierge's month intent and the planner's day plan read it when present.
4. Add "Ask about this tour" deep links on every tour block (`/ask/?q=`), and a concierge transcript export (copy to clipboard) that a human can paste into the booking request.
5. If a separate box or a resized droplet ever exists: Ollama + a 3B instruct model bound to 127.0.0.1, nginx `/ai/` proxy with a 20 s timeout and `limit_req`, and `ask.js` tries it first with the engine's retrieved facts as the only context, falling back to the local engine. Never a paid API.

### Stage 3: content that ranks
6. Grow /kb/ to the nine guides listed in leadvilleoffroad.com's roadmap, sharing the same source files so both sites update together.
7. A "Leadville in <month>" page per month generated from MONTHS + THINGS, each with FAQPage schema and the planner prefilled for that month.

### Stage 4: media and performance
8. Current-season photos and short vertical videos from the owner; replace the 2015 GoPro clips.
9. Core Web Vitals pass from a Windows box (never a scanner on the droplet): LCP on the season hero under 2.5 s on 4G, no CLS from fonts.
10. Markdown content negotiation in nginx (with approval).

_Roadmap = the map. Nothing above is applied automatically; AWE is propose-only for this client site._
