<?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%2F7db2871f-9fc6-4373-9fce-3e0bcc091f4c.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>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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0NzI2LTg5MzM3NzJiLWRmYmMtNDBhMC04ZmFlLTJkMDVkYWNjYzk0Ni5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTQzN2ViMzYwYjQzYWFmZTQyYjljZTMyNzg2MGJhMzBjY2I1ZDgzYTIxMDdlOWU5NjAyOWVhMTcyMWE5MGRmMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.9vYzJu34y6JjxyxDNGQ2DCFakcLCBm2E3OQLGWpt4Xk"&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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0NzI2LTg5MzM3NzJiLWRmYmMtNDBhMC04ZmFlLTJkMDVkYWNjYzk0Ni5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTQzN2ViMzYwYjQzYWFmZTQyYjljZTMyNzg2MGJhMzBjY2I1ZDgzYTIxMDdlOWU5NjAyOWVhMTcyMWE5MGRmMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.9vYzJu34y6JjxyxDNGQ2DCFakcLCBm2E3OQLGWpt4Xk" 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODE5LTg0MWFjYzQzLTdjYjEtNGQxNy04Yjc4LTJiMTk3NGU1ZDQ5Yy5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzQ3MWFlOWVmZWVjYjUzNmFkOGU5YmUxMWYyZDJhYTNmYmZiYWQ4ZTRjMzAwMzgzYzcxNGE4ZmQ1YTcxNjNkMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.S6PqP1NnR0trEE_lNluzN0z2SpvS-_bEDEH_J7k5K_I"&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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODE5LTg0MWFjYzQzLTdjYjEtNGQxNy04Yjc4LTJiMTk3NGU1ZDQ5Yy5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzQ3MWFlOWVmZWVjYjUzNmFkOGU5YmUxMWYyZDJhYTNmYmZiYWQ4ZTRjMzAwMzgzYzcxNGE4ZmQ1YTcxNjNkMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.S6PqP1NnR0trEE_lNluzN0z2SpvS-_bEDEH_J7k5K_I" 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODgwLTVlMWRiYjc0LTI1NTctNDU5Yi1hYmRjLTkwZjAzOTM1N2JkZC5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MThlNjc1YmU4N2MyNTI4OTk4MGEwODdkYjNmMWVhN2EzNzRkYjU1NDc5ODZhOGIzYjI4YTNiMGRlZGEyMWZjZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.kMyeJC7fcINVMuZkwgZ-T_V1zNn397ygFGkOBbOvduE"&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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0ODgwLTVlMWRiYjc0LTI1NTctNDU5Yi1hYmRjLTkwZjAzOTM1N2JkZC5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MThlNjc1YmU4N2MyNTI4OTk4MGEwODdkYjNmMWVhN2EzNzRkYjU1NDc5ODZhOGIzYjI4YTNiMGRlZGEyMWZjZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.kMyeJC7fcINVMuZkwgZ-T_V1zNn397ygFGkOBbOvduE" 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0OTMxLWZkZDg5N2ZjLTIwODYtNDEzMC05MGViLTY0ZjdhMDk5Y2E1Mi5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGE2ODYwNmIwYWZmYmRlMTIxNTVkOTg5YjlhYmI1Y2ViYzQ4YTFmOTU3NzlkYTk1MzEwN2NmYjZhY2M5NWYyOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.VUarYK8sBtmib29QVqVraYXdBKUYsReD93AVfKs7MSc"&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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTExNTE2NzksIm5iZiI6MTc5MTE1MTM3OSwicGF0aCI6Ii8yMDU4NDI1NTAvNjY1MjQ0OTMxLWZkZDg5N2ZjLTIwODYtNDEzMC05MGViLTY0ZjdhMDk5Y2E1Mi5qcGVnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjEwMDRUMjIwMjU5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGE2ODYwNmIwYWZmYmRlMTIxNTVkOTg5YjlhYmI1Y2ViYzQ4YTFmOTU3NzlkYTk1MzEwN2NmYjZhY2M5NWYyOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.VUarYK8sBtmib29QVqVraYXdBKUYsReD93AVfKs7MSc" 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>
