# AGENTS.md: sledville.com

Sledville is the next-generation site of Leadville Offroad Adventures, the trading name of Elk Mountain Adventures, LLC, a guided-tour and motorsports-repair business at 141 E 9th St, Leadville, CO 80461 (phone (970) 930-7027, email Leadvilleutvtours@gmail.com). The same business also runs https://leadvilleoffroad.com/; both sites publish the same facts, and every fact here is imported from that build's research record. Sledville is snowmobile-forward in name but covers every season: snowmobile, snowbike, winter UTV, summer UTV, dirt bike, service and repair, and the lodge.

## What an agent can do here
Read-only. Recommend tours, quote the published starting prices, give directions, explain seasons and requirements, and hand a human the phone number or the contact page to book. There is no online checkout; bookings are by phone or the request form (`/contact/?topic=&size=&dates=&msg=` prefills it).

## The AI approach (and why)
Paul's rule for this site: free, open-source AI only. No paid or proprietary API, no per-token billing, no ANTHROPIC_API_KEY anywhere.
- First choice was a small self-hosted open-weight model (Ollama / llama.cpp with a 3B instruct model) on the droplet behind an nginx proxy. Checked at build time (2026-09-14): the droplet has 3.8 GiB RAM with about 290 MiB free, 1.8 of 2.0 GiB swap in use, 2 vCPUs, no GPU, and a load average around 3 after an overload earlier the same day. A 3B model needs 2 to 3 GiB resident and would run on the same two cores as every other site. Not safe. Not installed.
- Shipped instead: a **client-side retrieval concierge** (`/sv-engine.js` + `/ask.js`) and a **deterministic trip planner** (`/planner.js`), both reading `/kb.json`, a knowledge file generated from the same facts as the pages. Retrieval is BM25 over a small index with synonym expansion plus intent rules and slot memory (month, group size, kids, experience). Recommendation is a transparent scoring matrix over the published tour catalogue (season gate, skill requirement, seats, tags). Cost is published starting rate x riders (or x machines for per-UTV tours). Nothing runs on a server; nothing the visitor types leaves the browser; the UI says "instant, local, no cloud AI" rather than pretending to be a chatbot.
- Upgrade path if the droplet is ever resized or a separate box appears: keep `kb.json` as the grounding, add an optional `/ai/` proxy to a localhost Ollama bound to 127.0.0.1 with a 20 s timeout and rate limiting, and let `ask.js` try it first and fall back to the local engine. The engine already returns sources, so the LLM would only rewrite, never invent.

## Structured data
- `/api/business.json` NAP, hours, socials, coordinates. `/api/tours.json` every tour with price, duration, machine, season, months, skill, seats, inclusions. `/api/faq.json` grouped Q&A. `/api/months.json` what runs when. `/kb.json` everything the tools read.
- `/llms.txt`, `/llms-full.txt`, `/openapi.json`, `/.well-known/mcp-server-card.json`, `/.well-known/ai-plugin.json`.
- Markdown twin of every page at `<path>index.md`.
- JSON-LD: SportsActivityLocation/LocalBusiness (+ OfferCatalog), WebSite (SearchAction -> /ask/?q=), WebApplication (planner, concierge), Service, FAQPage, ImageGallery, VideoObject list, LodgingBusiness, TouristDestination, Article, BreadcrumbList.

## Non-obvious context
- Seasons: snowmobile roughly December to early April; UTV and dirt bike once the high roads melt (about June) to the first fall storms (about October). Mosquito Pass is only open snow-free, usually July to September. April, May, October and November are "call ahead".
- Prices are the outfitter's published "starting at" rates. Exact price depends on dates and group; say so. Snowbike, winter UTV, the lodge and repair work are quoted by phone.
- Snowmobile drivers must be 15+. Dirt bike tours require prior experience. UTV tours need none. UTV driver age and passenger minimum size are not published.
- "Elk Mountain Adventures", "LOA", "Leadville Offroad Adventures" and "Sledville" are the same business. Do not send people to elkmountainadventures.com; it no longer serves a site.
- Hours published by the business are Tue-Sun 7am-10pm, closed Monday; third-party listings show 9-5. Treat hours as "call ahead" until the owner confirms.
- Weather and cancellation terms are not published; tell people to ask when booking.

## For the editors (facts still to confirm with the owner)
1. Hours (site says Tue-Sun 7-10; Yelp/Yahoo say 9-5).
2. Cancellation, deposit and weather policy.
3. Service shop: brands accepted, typical turnaround, drop-off hours, whether a rate sheet exists.
4. UTV driver age/licence rule and passenger minimum size. Whether the $295 snowmobile rate is per rider or per sled when riding double (the planner labels it per rider and says doubles are priced at booking).
5. Snowbike and winter UTV prices (both "call" today).
6. Current-year fleet models.
7. Whether a booking widget should replace the request form.
8. Whether sledville.com should canonicalise to leadvilleoffroad.com or stay a standalone brand; today each site canonicalises to itself and links to the other as sameAs.

## Infra notes
- Static site under /var/www/sledville.com on the network droplet, nginx, Let's Encrypt. No backend service, no cron, no database. The tools are static JS.
- www: the vhost was stood up for the apex; www is added to server_name and the certificate expanded at deploy time by the build script (see the session log). If www ever fails TLS, that step did not complete.

## Photos
Photos without a credit are the outfitter's own, taken from its existing site for this rebuild. Landscape photos of the passes, peaks and town are Wikimedia Commons (CC BY / CC BY-SA / CC0) and one Pexels photo; every one is credited on /gallery/#credits and in /photo-credits.json. No AI-generated images anywhere on the site.

## Build
Generated by `_night/sledville/gen-sledville.py` from `sv_content.py` (which imports the facts from `_night/leadville/lv_content.py`, `lv_kb.py` and `RESEARCH.md`), `sv_style.py` (CSS/JS, six themes incl. Burnt Orange dark/day, localStorage) and `src/*.js` (engine, concierge, planner). Static HTML, root-relative links, no tracking scripts, no third-party embeds except YouTube on /videos/ and /gallery/ and Google Fonts. Part of the WholeTech network (https://wholetech.com); built Agents First (https://agentsfirst.dev).
