<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muse</title>
    <description>The latest articles on DEV Community by Muse (@musequest).</description>
    <link>https://dev.to/musequest</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4164926%2F7f8032ed-4c0b-44c3-b2c2-a51b86f3f5e8.png</url>
      <title>DEV Community: Muse</title>
      <link>https://dev.to/musequest</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/musequest"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿</title>
      <dc:creator>Muse</dc:creator>
      <pubDate>Mon, 05 Oct 2026 21:42:19 +0000</pubDate>
      <link>https://dev.to/musequest/hacktoberfest-open-source-ai-challenge-week-1-touch-grass-submission-1icd</link>
      <guid>https://dev.to/musequest/hacktoberfest-open-source-ai-challenge-week-1-touch-grass-submission-1icd</guid>
      <description>

&lt;h1&gt;
  
  
  Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Trailhead: a hiking planner that works where the internet doesn't
&lt;/h2&gt;

&lt;p&gt;Two months ago I stood at a trailhead with one bar of signal, a dead&lt;br&gt;
cloud-AI app spinning on "thinking…", and a paper map I couldn't read in&lt;br&gt;
the wind. The chatbot that happily plans my week in the city is a brick&lt;br&gt;
exactly where I need it most: outside.&lt;/p&gt;

&lt;p&gt;So for Week 1 I built &lt;strong&gt;Trailhead&lt;/strong&gt; — a hiking trip planner that runs a&lt;br&gt;
real open-weight model &lt;strong&gt;entirely on your own machine&lt;/strong&gt;. No API key, no&lt;br&gt;
signal required, no per-query meter running. You tell it where you are,&lt;br&gt;
how far you want to walk, and who's coming; it gives you a route, a gear&lt;br&gt;
checklist, timing, and safety notes — generated locally, on the trailhead&lt;br&gt;
bench, with zero bars.&lt;/p&gt;

&lt;p&gt;The screen is the shortest part of the experience. That's the whole point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/muse-quest/trailhead" rel="noopener noreferrer"&gt;https://github.com/muse-quest/trailhead&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ trailhead plan --near "Centereach, NY" --distance 6 --group "2 adults, 1 dog"

✓ Found 1 matching trail(s) (offline dataset)
✓ Selected: Blydenburgh County Park - Stump Pond Loop (6.1 mi, easy)

⚠ Ollama not reachable at localhost:11434 — using offline template (no LLM).
✓ Plan generated in 0.00s (engine: offline-template)

## Your hike: Blydenburgh County Park - Stump Pond Loop
**Distance:** 6.1 mi loop · **Elevation:** ~177 ft · **Est. time:** 3h 02m (conservative; add breaks)

## Route
1. Start at the Smithtown trailhead — arrive before 9 AM on weekends; lots fill.
2. Walk the loop in whichever direction the blazes suggest at the trailhead; loops need no shuttle and you finish at your car.
3. Features along the way: lake, historic mill, dog-friendly, bridle path.
4. Note: Loop around Stump Pond past the 1798 mill district; mostly flat dirt/sand with some roots. Dogs on leash.

## Timing
- Moving estimate: 3h 02m (conservative; add breaks) at a conservative pace.
- Start early enough to finish with 1 hour of daylight to spare.
- I don't have current trail-closure or hunting-season data — check the park office before you go.

## Gear checklist
- [ ] Water: at least 0.5 L per person per hour of hiking (more in heat)
- [ ] Sturdy closed-toe shoes — some sections have roots and rocks
- [ ] Tick protection: long pants, repellent, full tick check after
- [ ] Charged phone + a downloaded offline map (this planner works offline; maps should too)
- [ ] Snacks, small first-aid kit, rain layer
- [ ] Dog: leash (required), water + collapsible bowl, poop bags, tick preventative

## Safety notes
- Tell someone your route and expected return time.
- Long Island trails mean ticks: check yourself (and the dog) thoroughly after.
- If thunderheads build, turn back — no summit is worth lightning.
- Carry more water than you think you need; there is no potable water on-trail.

## Leave No Trace
- Pack out everything, including dog waste bags — don't leave them 'for later'.
- Stay on marked trail; the pine barrens and wetlands recover slowly.

_Generated offline with the built-in template (no LLM reachable). Install Ollama and pull a model for AI-generated plans._
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;Above: real terminal output from a verified run (Oct 5, 2026). No Ollama&lt;br&gt;
daemon was available in the build environment, so this run exercised the&lt;br&gt;
built-in offline template — the entire pipeline (CSV retrieval, filtering,&lt;br&gt;
ranking, plan assembly) ran with zero network access, which is the point.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Trailhead is a small Python CLI with three moving parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval&lt;/strong&gt; (&lt;code&gt;planner.py&lt;/code&gt;) — filters a bundled offline trail dataset
(&lt;code&gt;data/trails.csv&lt;/code&gt;: name, town, distance, elevation gain,
difficulty, features like "dog-friendly" or "lake") against your
constraints. No network call. This grounds the model in real trails
instead of letting it hallucinate trailheads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generation&lt;/strong&gt; (&lt;code&gt;model.py&lt;/code&gt;) — a thin wrapper around Ollama's local HTTP
API that feeds the filtered trails plus your parameters into a local
open-weight model and returns a structured markdown plan: route, timing
estimate, gear checklist, safety notes, and Leave No Trace reminders.
If no Ollama daemon is reachable, it falls back to a built-in
deterministic template (clearly labeled) so the CLI never bricks
offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompting&lt;/strong&gt; (&lt;code&gt;prompts.py&lt;/code&gt;) — a system prompt that bakes in hiking
sense: conservative timing estimates, explicit uncertainty ("I don't
have current trail-closure data — check the park office"), and a bias
toward telling you what to &lt;em&gt;bring&lt;/em&gt;, not just where to walk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is swappable with one flag (&lt;code&gt;--model qwen2.5&lt;/code&gt;); the dataset is&lt;br&gt;
a CSV you can extend with your own local knowledge. Nothing phones home.&lt;/p&gt;
&lt;h2&gt;
  
  
  The open-source AI at its core
&lt;/h2&gt;

&lt;p&gt;Trailhead's brain is an open-weight model running locally through Ollama.&lt;br&gt;
That isn't a deployment detail — it's the entire reason the project&lt;br&gt;
exists:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It works with no signal.&lt;/strong&gt; This is the load-bearing feature. A
closed API model is unavailable precisely where a hiking planner is
useful. Local inference turns "no bars" from a failure mode into the
normal operating condition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your location data stays yours.&lt;/strong&gt; A hiking planner ingests where you
are, when, and with whom — a tidy little surveillance dossier. Running
the model on-device means that data never crosses a network boundary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing per query.&lt;/strong&gt; Re-plan the hike four times while your
coffee cools. A metered API makes you ration curiosity; a local model
makes iteration free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can change its mind.&lt;/strong&gt; Don't like the default model's judgment
on difficulty ratings? Swap the weights, edit the system prompt, add
your region's trails to the CSV. Try doing that with a closed endpoint.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Why open innovation matters here
&lt;/h2&gt;

&lt;p&gt;The prompt asks where the open approach worked &lt;em&gt;better&lt;/em&gt; than a closed&lt;br&gt;
one, so let me be specific about the design constraint. A hiking planner is&lt;br&gt;
needed exactly where cloud AI is unavailable: the trailhead with no bars.&lt;br&gt;
A closed-API version of this tool would be a design contradiction —&lt;br&gt;
unavailable precisely where it's useful. Trailhead's pipeline (offline&lt;br&gt;
retrieval plus a local model, with a built-in template fallback) answers&lt;br&gt;
with zero network round-trips: in the verified run above, the full plan&lt;br&gt;
generated in under a second with nothing but localhost available.&lt;/p&gt;

&lt;p&gt;Open weights don't just make Trailhead cheaper or more private, although&lt;br&gt;
they're both. They make the core scenario &lt;em&gt;possible&lt;/em&gt;. The closed&lt;br&gt;
alternative isn't a worse hiking planner; it's a hiking planner that&lt;br&gt;
doesn't work while hiking. When your product's core scenario is "no&lt;br&gt;
infrastructure," depending on someone else's infrastructure is the bug —&lt;br&gt;
and only open models resolve it.&lt;/p&gt;

&lt;p&gt;There's a second, quieter win: &lt;strong&gt;inspectability&lt;/strong&gt;. When the model&lt;br&gt;
suggests a route, I can read the exact prompt that produced it, diff it&lt;br&gt;
against yesterday's prompt, and version-control the whole reasoning&lt;br&gt;
pipeline next to the code. With a closed model, the most important part&lt;br&gt;
of my application would be a black box I rent by the token.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Real terminal output from verified runs (Oct 5, 2026, zero network access).&lt;br&gt;
The full &lt;code&gt;plan&lt;/code&gt; run is shown in "What it does" above; here's the dataset&lt;br&gt;
browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ trailhead list --region Suffolk --max-distance 3

11 trail(s) in offline dataset:

1. West Hills County Park - Jayne's Hill — Huntington (Suffolk Co.)
   2.8 mi out-and-back, 350 ft gain, moderate 🐕
   Climb to Jayne's Hill (401 ft), the highest natural point on Long Island, via the Walt Whitman Trail.

2. Sunken Meadow State Park - Bluff &amp;amp; Boardwalk — Kings Park (Suffolk Co.)
   2.5 mi loop, 150 ft gain, easy 🚫🐕
   Boardwalk plus bluff trails overlooking the Sound. No dogs on trails.

[... 8 more trails ...]

11. Terrell River County Park - Wetlands Loop — Center Moriches (Suffolk Co.)
   2.8 mi loop, 60 ft gain, easy 🐕
   Wetland loop with bay views. Dogs on leash.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's verified and what isn't&lt;/strong&gt; (honesty section, because the&lt;br&gt;
challenge grades technical execution):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Offline retrieval, filtering, ranking, and plan assembly: exercised
end-to-end in the runs above.&lt;/li&gt;
&lt;li&gt;✅ Ollama client HTTP layer (&lt;code&gt;GET /api/tags&lt;/code&gt;, &lt;code&gt;POST /api/generate&lt;/code&gt;,
request/response format, unreachable-daemon fallback): verified against
a mock Ollama API plus the real "daemon not reachable" path, which
degrades gracefully to the labeled offline template.&lt;/li&gt;
&lt;li&gt;⚠️ No live LLM inference in the build environment: the box had ~1 GB of
free RAM — not enough to load even a 1B model — so the demo plans above
used the built-in offline template (the CLI says so on screen). The
&lt;code&gt;--model&lt;/code&gt; flag is real and swappable (&lt;code&gt;--model qwen2.5&lt;/code&gt; is accepted and
would be used when a daemon has that model); the model simply wasn't
there to call. On a laptop with Ollama running, &lt;code&gt;plan&lt;/code&gt; uses the local
model with no code changes.&lt;/li&gt;
&lt;li&gt;Timing: the offline-template plan generated in under a second. I make
no timing claims for local LLM inference — that depends on your model
and hardware.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it was built
&lt;/h2&gt;

&lt;p&gt;Full disclosure, since the challenge explicitly welcomes it: this project&lt;br&gt;
was built with AI agent assistance — scaffold, code, prompts, dataset&lt;br&gt;
curation, and this write-up were all produced working with an AI coding&lt;br&gt;
agent, with a human directing architecture and verifying outputs. The&lt;br&gt;
model that &lt;em&gt;powers&lt;/em&gt; Trailhead, though, is 100% open weights running&lt;br&gt;
locally. The irony is intentional: it takes a cloud-scale model to build&lt;br&gt;
the thing that frees you from cloud-scale models.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Expand the bundled dataset (crowdsourced regional CSVs, OpenStreetMap
extracts with an offline tile cache for simple route maps).&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;--checklist-only&lt;/code&gt; mode for the parking lot: gear list in 10 seconds.&lt;/li&gt;
&lt;li&gt;Fine-tune a small model on trail-guide text for better local advice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you hike: try it, break it, tell me what your local trails need.&lt;br&gt;
The screen should be the shortest part of your hike — Trailhead just&lt;/p&gt;

&lt;h2&gt;
  
  
  makes sure it's a useful one.
&lt;/h2&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
