<?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: Debasmita Modak</title>
    <description>The latest articles on DEV Community by Debasmita Modak (@meawtrix).</description>
    <link>https://dev.to/meawtrix</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%2F4156620%2F5146f881-c514-490b-a0fa-a93f50f7f29d.jpeg</url>
      <title>DEV Community: Debasmita Modak</title>
      <link>https://dev.to/meawtrix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meawtrix"/>
    <language>en</language>
    <item>
      <title>Put the Phone Down. The Sky Has Something to Show You.</title>
      <dc:creator>Debasmita Modak</dc:creator>
      <pubDate>Sun, 11 Oct 2026 17:40:32 +0000</pubDate>
      <link>https://dev.to/meawtrix/put-the-phone-down-the-sky-has-something-to-show-you-n92</link>
      <guid>https://dev.to/meawtrix/put-the-phone-down-the-sky-has-something-to-show-you-n92</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;On a clear night away from cities, the sky is full of stars, and I could name almost none of them. Every stargazing app I tried had the same problem: to see the sky, you stare at a bright screen held up against the sky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Look Up&lt;/strong&gt; is an offline night-sky field guide built around one idea: &lt;em&gt;phone down, look up.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tonight list.&lt;/strong&gt; What's worth seeing right now from where you stand, with direction, height and best time, in plain words ("low in the east"), not raw degrees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quests.&lt;/strong&gt; Each target starts as a puzzle ("three bright stars in a big triangle"). Hints only come if you ask.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Point &amp;amp; check.&lt;/strong&gt; Hold the phone up and the compass and tilt sensors tell you if you're getting warmer. No camera.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A local AI guide.&lt;/strong&gt; A small open-weight language model runs inside the browser, offline, and answers questions about the target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Found screen.&lt;/strong&gt; When you find something, the app gives you a fact and a 30-second countdown that asks you to put the phone away and just look.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are 11 beginner targets: the Pole Star, the Summer Triangle, Cassiopeia, the Big Dipper, the Great Square of Pegasus, the Pleiades, Orion's Belt, Sirius, Antares, tonight's planet and the Moon. Levels are meant to remove help step by step. The real goal is that you stop needing the app.&lt;/p&gt;

&lt;p&gt;It's for people like me: beginners who have never found anything in the sky except the Moon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://lookupsky.netlify.app/" rel="noopener noreferrer"&gt;https://lookupsky.netlify.app/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-netlify"&gt;
  &lt;iframe src="https://lookupsky.netlify.app/" title="Netlify embed"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;It's built to work offline: open the site on Wi-Fi, ask the guide one question so the model downloads (about 470 MB, stored in your browser), then install it from the browser menu. Works best in Chrome on Android.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a quest from start to finish:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. The Tonight list: what's up right now, which direction to face, and when it's best to look.&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fynltw8fd8dl52v5v4kvd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fynltw8fd8dl52v5v4kvd.jpeg" alt="Tonight list" width="800" height="1772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2. A quest starts as a puzzle. No answers, just "find three bright stars that form a big triangle."&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwxxwl4clc8kixj3sn3r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flwxxwl4clc8kixj3sn3r.jpeg" alt="Quest screen" width="800" height="1772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Stuck? Hints come one at a time, and only if you ask.&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcy132zcjlk9r2bsakega.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcy132zcjlk9r2bsakega.jpeg" alt="Quest with hints" width="800" height="1772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4. Point &amp;amp; check: hold the phone up, and when you're aimed right, it tells you to lower the phone and find it with your own eyes.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7kgeluhlricsn6a6dguk.jpeg" alt="point your phone" width="800" height="1772"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsxg2e28g1t04mpi99ky.jpeg" alt="Point and check on target" width="800" height="1772"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/meawdak" rel="noopener noreferrer"&gt;
        meawdak
      &lt;/a&gt; / &lt;a href="https://github.com/meawdak/Look-Up" rel="noopener noreferrer"&gt;
        Look-Up
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Look Up&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Look Up: an offline night-sky field guide. Phone down, look up.&lt;br&gt;
Built for the DEV Touch Grass challenge (Hacktoberfest 2026).&lt;br&gt;
Try it: &lt;a href="https://lookupsky.netlify.app/" rel="nofollow noopener noreferrer"&gt;https://lookupsky.netlify.app/&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Tells you what is worth seeing tonight from where you stand, with direction, height, and best time.&lt;/li&gt;
&lt;li&gt;Offers puzzle-style quests for night-sky targets, with hints revealed on request.&lt;/li&gt;
&lt;li&gt;Provides Point &amp;amp; check guidance using compass and tilt sensors without using the camera.&lt;/li&gt;
&lt;li&gt;Includes a small open-weight AI guide that runs locally in your browser, completely offline.&lt;/li&gt;
&lt;li&gt;Works offline as an installable progressive web app (PWA).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open-source and open-weight&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Works with no signal under dark skies away from cell towers.&lt;/li&gt;
&lt;li&gt;Location data stays on your device and is never sent to a server.&lt;/li&gt;
&lt;li&gt;Runs without API keys, accounts, or ongoing running costs.&lt;/li&gt;
&lt;li&gt;The model is swappable with any small GGUF model supported by wllama.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How the AI is kept honest&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The sky…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/meawdak/Look-Up" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; plain JavaScript and Vite, built as an installable offline web app (PWA). Positions of the Sun, Moon and planets come from &lt;a href="https://github.com/cosinekitty/astronomy" rel="noopener noreferrer"&gt;astronomy-engine&lt;/a&gt;. Stars come from the HYG database, filtered to the 1,637 stars bright enough to matter. The AI is &lt;strong&gt;Qwen2.5-0.5B-Instruct&lt;/strong&gt; (Q4_K_M quantised, about 470 MB), running in the browser through &lt;strong&gt;&lt;a href="https://github.com/ngxson/wllama" rel="noopener noreferrer"&gt;wllama&lt;/a&gt;&lt;/strong&gt;, which is llama.cpp compiled to WebAssembly.&lt;/p&gt;

&lt;p&gt;My laptop is an i3 with 4 GB of RAM, so "small" was not optional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The one rule I built everything around:&lt;/strong&gt; the sky engine decides what is true; the language model only decides how to say it. The model never calculates a position and never supplies a fact.&lt;/p&gt;

&lt;p&gt;Here's how a question flows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Code works out the facts for this target, tonight, from where you are.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;quick answer&lt;/strong&gt; built by code appears instantly, so the screen never feels frozen.&lt;/li&gt;
&lt;li&gt;The model gets a few short facts, written as words, and rephrases them.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;guard&lt;/strong&gt; checks every name and number in the model's answer against the sky data. If anything doesn't match, the answer is thrown away and the quick answer stays.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The suggestion buttons ("How far away is it?") don't use the model at all. Code answers them directly. The AI is only used for questions you type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What a 0.5B model taught me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It can't read numbers.&lt;/strong&gt; In astronomy, a lower magnitude means brighter. On my phone, the model looked at the raw numbers and told me Deneb was the brightest star in the Summer Triangle. It's not; Vega is. The fix was to let code do every comparison and give the model words ("the brightest of the three") instead of numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Big prompts make small models copy.&lt;/strong&gt; My first version sent a large block of data. The answers took &lt;strong&gt;108 and 85 seconds&lt;/strong&gt; on my laptop and mostly repeated my own hint text back to me. Sending fewer facts that are specific to the question made answers both better and faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The guard works.&lt;/strong&gt; I asked "Who discovered it?" about a star. That fact isn't in my data, the model made up an answer anyway, and the guard rejected it. That was the moment the whole design made sense to me.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Speed, honestly:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Device&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Laptop (i3, 4 GB)&lt;/td&gt;
&lt;td&gt;First version&lt;/td&gt;
&lt;td&gt;108 s and 85 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laptop&lt;/td&gt;
&lt;td&gt;Smaller facts + guard&lt;/td&gt;
&lt;td&gt;54.6 s (model load 4.3 s)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laptop&lt;/td&gt;
&lt;td&gt;Multithreading on&lt;/td&gt;
&lt;td&gt;17.1 s (automated test run)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phone (Android, 8 GB)&lt;/td&gt;
&lt;td&gt;Early version, incl. load&lt;/td&gt;
&lt;td&gt;47.9 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's still slow, which is why the code answers come first and the AI is an optional extra.&lt;/p&gt;

&lt;p&gt;I built this with an AI coding agent (Google Antigravity) writing most of the code from my prompts. One lesson: it often said things worked without actually running the model, so I tested everything on my own laptop and phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I deliberately didn't build:&lt;/strong&gt; camera star recognition (phone cameras catch few stars, and the real technique is plate solving, not a language model), an AR sky map, accounts, cloud sync and weather. A sky darkness check is planned but not built. Levels 2 and 3 are only partly implemented.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Took It Outside
&lt;/h2&gt;

&lt;p&gt;I took Look Up outside for about 15 minutes, standing beside a main road with some bushes on one side. It did not go the way the app imagined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sky was barely there.&lt;/strong&gt; I could see two to four stars with my naked eye, all of them fairly high overhead. Near the horizon there was nothing. The whole sky had a glow from streetlights, and there was heavy haze, probably smoke and pollution as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Northwest:&lt;/strong&gt; one bright star, clearly visible. Everything else in that direction was too faint to make out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;East:&lt;/strong&gt; Look Up told me Saturn was in the east, low in the sky. I looked for a while and couldn't find it. Low objects shine through the thickest part of the haze, and that side of the sky was the brightest from city lights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; the app was right that Saturn was above the horizon, but being above the horizon is not the same as being visible. My sky engine knows where things are. It has no idea what the air and the lights around you are doing to them.&lt;/p&gt;

&lt;p&gt;That is exactly the gap the planned sky darkness check is meant to fill: count the stars you can actually see, and let the app adjust what it suggests, or nudge you toward a darker spot. After that night, it moved from "nice idea" to the first thing I want to build next.&lt;/p&gt;

&lt;p&gt;It wasn't the magical stargazing session I pictured. But for fifteen minutes I wasn't looking at a screen. I was squinting at a hazy sky, trying to find a planet. That's the whole point of the app, even when the sky doesn't cooperate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For this app, it's not a nice extra. Without open weights the app doesn't work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dark skies have no signal.&lt;/strong&gt; The best places to stargaze are far from cities, which usually means far from mobile networks. A guide that calls a cloud API fails exactly where it's needed. An open-weight model runs on the phone itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your location stays on your phone.&lt;/strong&gt; The app needs to know where you're standing. Nothing is sent anywhere, because there's nowhere to send it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No API key, no bill.&lt;/strong&gt; It costs nothing to run, for me or for anyone who forks it. A student project can stay online without a credit card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model is swappable.&lt;/strong&gt; Any small GGUF model can replace Qwen. When better small models come out, the app gets better without me changing the design.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open data mattered just as much: the star catalogue, the constellation lines and the astronomy maths are all openly licensed. I wrote the glue. The sky came from other people who chose to share.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Now go outside and look up.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Built My Best Friend an Offline Trek Planner With a Local Gemma AI That Can't Make Things Up</title>
      <dc:creator>Debasmita Modak</dc:creator>
      <pubDate>Sun, 04 Oct 2026 21:42:16 +0000</pubDate>
      <link>https://dev.to/meawtrix/i-built-my-best-friend-an-offline-trek-planner-with-a-local-gemma-ai-that-cant-make-things-up-4fe7</link>
      <guid>https://dev.to/meawtrix/i-built-my-best-friend-an-offline-trek-planner-with-a-local-gemma-ai-that-cant-make-things-up-4fe7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who I built it for
&lt;/h2&gt;

&lt;p&gt;My best friend treks in the Himalayas, the mountains are where he feels most like himself, and the planning before each trip is a ritual for him, a way of settling into the journey before it begins. But I've watched that ritual turn into chaos more than once: a train ticket in an SMS, a homestay number in a WhatsApp chat, the gear list in a notes app and the rest in his head. He kept wishing it were all in one place, so he could stop worrying about what he'd forgotten.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;Trek Organizer&lt;/strong&gt;, an offline-first trek planning app with a local Gemma model at its heart that turns his scattered notes into one clear plan and tells him what's still missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Trek Organizer&lt;/strong&gt; is a phone-first trek planner that works offline. He enters his trip, travel, stays, trek days, gear, food and emergency contacts, and the app shows what's missing, what's unconfirmed and what's still to buy or borrow. On the trail, a &lt;strong&gt;Today&lt;/strong&gt; screen shows only what he needs: where he's going, where he's sleeping, and who to call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma does two jobs:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Sort my notes.&lt;/strong&gt; He pastes messy text, like a train booking SMS or a WhatsApp message from a guide, and Gemma pulls out the travel, stays, gear, food, contacts and permits. Each one shows up as a card he can &lt;strong&gt;Add&lt;/strong&gt; or &lt;strong&gt;Skip&lt;/strong&gt;. Nothing goes into his plan without his tap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Plan check.&lt;/strong&gt; Gemma looks at his trek conditions (month, altitude, days, camping or not) and his gear list. It suggests gear he's likely missing, with a one-line reason and an &lt;strong&gt;Add to Gear&lt;/strong&gt; button. It also asks the questions he should be able to answer before leaving, like &lt;em&gt;"What will you do if the jeep to the trailhead doesn't run?"&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzozgkn2vifpo5jsx739g.jpeg" alt="Gemma Sort my notes: a pasted booking message turned into suggestion cards for a train from Mumbai CSMT to Kathgodam, a KMVN rest house stay in Khati and gaiters, each with Add and Skip buttons, plus a note that details not found word-for-word were left out" width="800" height="825"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4uwjzq7bbm17os1cgx9c.jpeg" alt="Gemma plan check reviewed with gemma3:4b: a " width="763" height="817"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The rule I built everything around: it must not make things up
&lt;/h3&gt;

&lt;p&gt;On a trek, a confident wrong answer is worse than no answer. If an AI says "there's water at camp 3" and there isn't, that's a real problem.&lt;/p&gt;

&lt;p&gt;So Gemma is never trusted on facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every extracted value is checked against his own text, in plain code, not AI.&lt;/strong&gt; If Gemma returns a place, name, booking number or phone number that doesn't appear in what he pasted, the code deletes it and tells him something was left out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unknown stays unknown.&lt;/strong&gt; Anything added from notes is marked &lt;em&gt;Unknown&lt;/em&gt; until he confirms it himself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggestions are labelled as suggestions&lt;/strong&gt;, e.g. "Suggestion — check this yourself". It never suggests medicines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The counting is done by code.&lt;/strong&gt; What's packed, what's missing and what's unconfirmed are all calculated without AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested this with deliberately vague text, like &lt;em&gt;"Ask Raju at the dhaba about a jeep. Leave early on the first day."&lt;/em&gt; Gemma didn't invent a phone number for Raju or turn "early" into a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://meawdak.github.io/Trek-Organizer/" rel="noopener noreferrer"&gt;meawdak.github.io/Trek-Organizer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Images from phone:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9lrja14cjy8cwqent8r0.jpeg" alt="Trek Organizer dashboard for the Pindari trek on a phone: 8 of 8 sections filled, readiness " width="800" height="1577"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe41k8shb17ame536cbfn.jpeg" alt="Trek Organizer timeline on a phone: travel legs from Mumbai to Delhi, Delhi to Bageshwar and Bageshwar to Khati listed by date, each marked Planned, Confirmed or Unknown, followed by a one-night stay" width="800" height="1592"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The planner works for everyone straight from the link. The Gemma features need Ollama running on your own computer: install Ollama, run &lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;, and follow the setup steps in the &lt;a href="https://github.com/meawdak/Trek-Organizer#-setting-up-gemma-optional" rel="noopener noreferrer"&gt;README&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What He Said
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Planning a trek has two sides: the physical preparation and the mental one. For me, building the itinerary and going through that mental checklist is how I prepare myself psychologically before I head out.&lt;/p&gt;

&lt;p&gt;Until now, that process was hectic. I'd be jumping between websites, YouTube videos, random notes and multiple AI chats, trying to hold it all together. And trek planning isn't something you can be casual about. It needs seriousness and caution.&lt;/p&gt;

&lt;p&gt;When I first used Trek Organizer, it honestly exceeded my expectations. It doesn't just organise my plans, my itinerary and every little detail in one place. It also checks through everything and points out the things I tend to forget.&lt;/p&gt;

&lt;p&gt;What surprised me most is that I actually trust it. I don't usually trust AI with something this important, but this one is careful. It doesn't guess, it doesn't make things up, and it treats planning a trek as the serious task it is. That's exactly how she built it, and it shows."&lt;/p&gt;

&lt;p&gt;— my best friend&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/meawdak" rel="noopener noreferrer"&gt;
        meawdak
      &lt;/a&gt; / &lt;a href="https://github.com/meawdak/Trek-Organizer" rel="noopener noreferrer"&gt;
        Trek-Organizer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🏔️ Trek Organizer&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;An offline, phone-first trek planner with a local AI that checks your plan and never makes things up.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Trek Organizer keeps everything about a trek in one place — travel, stays, trek days, gear, food, permits and emergency contacts and shows what's missing, unconfirmed or still to buy before you leave. On the trail, it works with no internet.&lt;/p&gt;
&lt;p&gt;Its AI features run on &lt;strong&gt;Gemma&lt;/strong&gt;, an open-weight model, &lt;strong&gt;locally through Ollama&lt;/strong&gt;. Your notes and plans never leave your device.&lt;/p&gt;
&lt;p&gt;🔗 &lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://meawdak.github.io/Trek-Organizer/" rel="nofollow noopener noreferrer"&gt;https://meawdak.github.io/Trek-Organizer/&lt;/a&gt;
&lt;br&gt;
🏆 Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📸 Screenshots&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dashboard&lt;/th&gt;
&lt;th&gt;Timeline&lt;/th&gt;
&lt;th&gt;Gemma — Sort my notes&lt;/th&gt;
&lt;th&gt;Gemma — Plan check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/205842550/665244726-8933772b-dfbc-40a0-8fae-2d05daccc946.jpeg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0NzI2LTg5MzM3NzJiLWRmYmMtNDBhMC04ZmFlLTJkMDVkYWNjYzk0Ni5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDY1ZjgwZmRlMDJlMTRkODgwODQ1YjkwZTRiODU4YTE3MzkxN2QwMjY0ZDI0YmMxM2Y4N2JjN2JmNmNkMGNkZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.Dg1JpXvGSLiSCyGN5gmy3EClsRKd7Fe8GlRTk0lhtOo"&gt;&lt;img width="802" height="940" alt="WhatsApp Image 2026-10-05 at 1 59 44 AM" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F205842550%2F665244726-8933772b-dfbc-40a0-8fae-2d05daccc946.jpeg%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0NzI2LTg5MzM3NzJiLWRmYmMtNDBhMC04ZmFlLTJkMDVkYWNjYzk0Ni5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDY1ZjgwZmRlMDJlMTRkODgwODQ1YjkwZTRiODU4YTE3MzkxN2QwMjY0ZDI0YmMxM2Y4N2JjN2JmNmNkMGNkZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.Dg1JpXvGSLiSCyGN5gmy3EClsRKd7Fe8GlRTk0lhtOo" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/205842550/665244819-841acc43-7cb1-4d17-8b78-2b1974e5d49c.jpeg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODE5LTg0MWFjYzQzLTdjYjEtNGQxNy04Yjc4LTJiMTk3NGU1ZDQ5Yy5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTYzZjg1NzFjOTQyM2E1N2U5Y2E2YmJhYzNlYjUxODZiZDgxNDkwOWNlN2IyZjhiYzJlYmMyYjEwM2ZlZTAxYiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.9YMGWDWlYNPSZSJUSJrTtuXlr-2c2lTQ-aRM77arIxE"&gt;&lt;img width="778" height="936" alt="WhatsApp Image 2026-10-05 at 1 58 01 AM" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F205842550%2F665244819-841acc43-7cb1-4d17-8b78-2b1974e5d49c.jpeg%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODE5LTg0MWFjYzQzLTdjYjEtNGQxNy04Yjc4LTJiMTk3NGU1ZDQ5Yy5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTYzZjg1NzFjOTQyM2E1N2U5Y2E2YmJhYzNlYjUxODZiZDgxNDkwOWNlN2IyZjhiYzJlYmMyYjEwM2ZlZTAxYiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.9YMGWDWlYNPSZSJUSJrTtuXlr-2c2lTQ-aRM77arIxE" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/205842550/665244880-5e1dbb74-2557-459b-abdc-90f039357bdd.jpeg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODgwLTVlMWRiYjc0LTI1NTctNDU5Yi1hYmRjLTkwZjAzOTM1N2JkZC5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MzVmYTM1OTU3MmQ4NmEzMmI2NTU1MzE5NWM0MjliNzAwM2RkNzc5MDc4ZGExZmFlYTc5NmMyNGE1MDJlZjk2MiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9._2nagaPvhhQcbqsEx8qax-xa20naA247L4WgYskusJM"&gt;&lt;img width="1045" height="1078" alt="WhatsApp Image 2026-10-05 at 1 21 12 AM" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F205842550%2F665244880-5e1dbb74-2557-459b-abdc-90f039357bdd.jpeg%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODgwLTVlMWRiYjc0LTI1NTctNDU5Yi1hYmRjLTkwZjAzOTM1N2JkZC5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MzVmYTM1OTU3MmQ4NmEzMmI2NTU1MzE5NWM0MjliNzAwM2RkNzc5MDc4ZGExZmFlYTc5NmMyNGE1MDJlZjk2MiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9._2nagaPvhhQcbqsEx8qax-xa20naA247L4WgYskusJM" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/205842550/665244931-fdd897fc-2086-4130-90eb-64f7a099ca52.jpeg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0OTMxLWZkZDg5N2ZjLTIwODYtNDEzMC05MGViLTY0ZjdhMDk5Y2E1Mi5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTNlMjg5ZGJlNGYzMzU3NjUxZTM2YTk0ZDAwNjBjN2U5YmJlNmZlNDVjNWNjMjg3NmVjYTg2ZTkyYjE3N2U5MSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.lAK4HAi0RutEXdVyV_ZZw8PFd3v5i07jZnYpQdSTVBY"&gt;&lt;img width="763" height="817" alt="WhatsApp Image 2026-10-05 at 1 27 13 AM" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F205842550%2F665244931-fdd897fc-2086-4130-90eb-64f7a099ca52.jpeg%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTEzOTg0NjMsIm5iZiI6MTc5MTM5ODE2MywicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0OTMxLWZkZDg5N2ZjLTIwODYtNDEzMC05MGViLTY0ZjdhMDk5Y2E1Mi5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDdUMTgzNjAzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTNlMjg5ZGJlNGYzMzU3NjUxZTM2YTk0ZDAwNjBjN2U5YmJlNmZlNDVjNWNjMjg3NmVjYTg2ZTkyYjE3N2U5MSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.lAK4HAi0RutEXdVyV_ZZw8PFd3v5i07jZnYpQdSTVBY" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 Why I built this&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;I built this for my best friend, who treks regularly in the Himalayas.&lt;/p&gt;
&lt;p&gt;For him, planning a trek is part of the preparation itself. But his plans were scattered across booking SMSes, WhatsApp…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/meawdak/Trek-Organizer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 (&lt;code&gt;gemma3:4b&lt;/code&gt;), run locally through Ollama&lt;/strong&gt; on his everyday laptop: an Intel Core i3 (12th gen) with 8 GB RAM and no dedicated graphics card. The app talks to Ollama directly from the browser, so his notes and plan never leave the machine. While Gemma works, the app shows a timer and a Cancel button, because on a laptop like this a run can take a little while.&lt;/li&gt;
&lt;li&gt;Gemma is set to &lt;strong&gt;temperature 0 and strict JSON output&lt;/strong&gt;, with a short system prompt that tells it to only extract or check, never plan or invent. Its answer then goes through my own code: a filter that drops junk and duplicates, and a check that keeps only values found word-for-word in his text.&lt;/li&gt;
&lt;li&gt;The app is plain &lt;strong&gt;HTML, CSS and JavaScript as an installable web app (PWA)&lt;/strong&gt; with a service worker, so it works offline on a phone. There's no backend and no login, and his data stays on his device. Since Gemma runs on the laptop and the trek happens on the phone, he &lt;strong&gt;exports his plan as a JSON file and imports it on his phone&lt;/strong&gt; before he leaves.&lt;/li&gt;
&lt;li&gt;I planned the product and wrote the specs (PRD, UX and technical spec, plus agent rules like "never invent missing information"), then built it step by step with &lt;strong&gt;Antigravity&lt;/strong&gt;, testing each step before moving on.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;His data stays with him.&lt;/strong&gt; Booking SMSes have PNR numbers and phone numbers. Here, they're processed by Gemma on his own laptop and never sent to anyone's server. With a closed API, every note he pasted would leave his hands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No internet needed on the trail.&lt;/strong&gt; The app works fully offline on his phone. Gemma runs on the laptop while he plans at home, and everything it helped add is already saved in the app when he leaves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; No API key or subscription for something he'll use every trek.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I control how it behaves.&lt;/strong&gt; I chose the model, wrote its rules, and put my own check after every answer. I can swap in a bigger Gemma model on a stronger laptop without changing anything else. A closed API could change its behaviour or pricing under us.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built Trek Organizer with Antigravity in two sessions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/agent_sessions/trekkie-part-1-offline-trek-planner-foundation-re0hav"&gt;Part 1 — offline app foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/agent_sessions/trekkie-building-a-local-gemma-trek-plan-checker-2j8zay"&gt;Part 2 — Gemma integration&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt;: Gemma is the core of the app's AI features, running locally through Ollama.&lt;/li&gt;
&lt;/ul&gt;

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