<?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: Rishabh</title>
    <description>The latest articles on DEV Community by Rishabh (@rishabhvoid).</description>
    <link>https://dev.to/rishabhvoid</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%2F4173296%2Fdeb3162b-8624-4936-b021-b9688763c598.jpg</url>
      <title>DEV Community: Rishabh</title>
      <link>https://dev.to/rishabhvoid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rishabhvoid"/>
    <language>en</language>
    <item>
      <title>Pawpath: Talking Tom's guilt, Rain World's mood, and a reason to go outside</title>
      <dc:creator>Rishabh</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:38:40 +0000</pubDate>
      <link>https://dev.to/rishabhvoid/pawpath-talking-toms-guilt-rain-worlds-mood-and-a-reason-to-go-outside-5elj</link>
      <guid>https://dev.to/rishabhvoid/pawpath-talking-toms-guilt-rain-worlds-mood-and-a-reason-to-go-outside-5elj</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;When I was younger, I played Talking Tom. I remember its notifications making me feel guilty about leaving my virtual pet alone. That little feeling could pull me straight back into the app.&lt;/p&gt;

&lt;p&gt;For this challenge, I wanted to send that feeling somewhere useful: &lt;strong&gt;outside&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Pawpath&lt;/strong&gt;, a walking companion where caring for a virtual creature means taking it into the real world. A little guilt trip, aimed at getting you out for a walk.&lt;/p&gt;

&lt;p&gt;Rain World is my favourite game, and it gave me the visual direction: strange little creatures, a moody palette, and a world you want to wander through. Pawpath's companion designs are original, with Rain World as the aesthetic inspiration.&lt;/p&gt;

&lt;p&gt;My companion is &lt;strong&gt;Macha&lt;/strong&gt;, an adventurous marsh strider. A short setup matches your walking rhythm, interests, and preferred personality to one of ten pixel creatures. Recorded walks feed your companion, improve its mood, and earn XP. Gemma gives it a voice and helps turn things you photograph outside into discoveries it can remember.&lt;/p&gt;

&lt;p&gt;That emotional nudge lives in the pet's state and its short invitations to walk. I wanted the feeling of a buddy waiting for you, without having it insult you for staying inside. The companion prompt keeps that boundary explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Speak in first person, never guilt or shame.
Reply in fewer than 25 words. Encourage putting the phone away.
Never claim a walk or discovery happened unless provided.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The little tug comes from caring about the creature. Its dialogue should still be kind.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://pawpath.onrender.com" rel="noopener noreferrer"&gt;Take a look at Pawpath&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I took Macha outside for a short phone test. The app recorded &lt;strong&gt;76 metres in three minutes&lt;/strong&gt; and awarded &lt;strong&gt;7 XP&lt;/strong&gt;. A small walk was enough to try the whole loop: head outside, notice something, save it, and come back to a happier pet.&lt;/p&gt;

&lt;p&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%2Fxsokkq893kc9onwxjifo.png" 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%2Fxsokkq893kc9onwxjifo.png" alt="Pawpath during the outdoor walk" width="726" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I captured an outdoor discovery, and Gemma labelled it “Outdoor scene with foliage and urban environment,” under the tree category. It became a dated entry in &lt;strong&gt;Field notes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&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%2Ffiquwwxihwz1rvc9zqwg.png" 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%2Ffiquwwxihwz1rvc9zqwg.png" alt="The discovery saved in Field notes" width="726" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The label is fairly broad. It worked as a small memory of the outing; it did not demonstrate precise plant identification. &lt;strong&gt;Keep photos&lt;/strong&gt; was off, so the discovery note was saved without retaining the picture.&lt;/p&gt;

&lt;p&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%2F8uf2uo9a9ovld6a0ztxf.png" 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%2F8uf2uo9a9ovld6a0ztxf.png" alt="Completed walk: 76 metres, three minutes, seven XP" width="726" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reward is deliberately simple: &lt;code&gt;floor(recorded_metres / 10)&lt;/code&gt;. That is how 76 metres became 7 XP. Back at the Shelter, Macha had 93 XP left to level 2 and was wearing the free bandana from the Outfitter.&lt;/p&gt;

&lt;p&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%2Fv7jdeue52vtg1zeo3zxf.png" 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%2Fv7jdeue52vtg1zeo3zxf.png" alt="Macha wearing the bandana after the walk" width="726" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The rest of the companion's world
&lt;/h3&gt;

&lt;p&gt;The walk is the centre of Pawpath, but I wanted the creature to feel like someone you come home to. All four main areas work on desktop and phone:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What you can do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shelter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;See your companion, level and XP; open its profile for fullness, energy and mood; start or finish a walk; say hello; find nearby spots; manage Gemma.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field notes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Revisit dated discoveries and completed walks, add another discovery, and choose whether resized photos are kept. The desktop journal now shows both my tree discovery and our 0.08 km outing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Friends&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Share an invite code, add a friend by theirs, and meet their companion through a public pet card. Location, private memories and walking preferences stay private.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Outfitter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Browse five accessories, try them on your actual companion, claim the free starters, and switch to &lt;strong&gt;My wardrobe&lt;/strong&gt; to equip or remove owned items.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Memories on desktop.&lt;/strong&gt; The same journal follows the account across devices. Here are the walk and discovery together, with photo retention still off.&lt;/p&gt;

&lt;p&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%2Fe7wmj57aelubtkz0y9bt.jpg" 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%2Fe7wmj57aelubtkz0y9bt.jpg" alt="Desktop Field notes with the completed walk and tree discovery" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Friends.&lt;/strong&gt; This is my current walking club, ready for its first friend. Sharing codes connects companion cards; it does not expose the outdoor journal or location. Friend messaging is still unfinished.&lt;/p&gt;

&lt;p&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%2Fl5ir7n172eu1pv0g0yf7.jpg" 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%2Fl5ir7n172eu1pv0g0yf7.jpg" alt="Desktop Friends page with invite-code and add-friend controls" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The shop and My wardrobe.&lt;/strong&gt; One view is for exploring outfits; the other is for the pieces your companion already owns.&lt;/p&gt;

&lt;p&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%2F7mmkd97wtxz02cp1krjv.jpg" 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%2F7mmkd97wtxz02cp1krjv.jpg" alt="Desktop shop showing all five accessories" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fh38pa3m44jgct6w0013g.jpg" 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%2Fh38pa3m44jgct6w0013g.jpg" alt="My wardrobe showing the owned and equipped bandana" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Outfitter has a bandana, bell, leaf cap, scarf and star pin. The bandana and bell are free. The other three use a separate points wallet; event-based point earning is unfinished, so I am showing the free outfit I actually own.&lt;/p&gt;

&lt;p&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%2F4uzu2vv1u337pltf8kqy.png" 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%2F4uzu2vv1u337pltf8kqy.png" alt="Trying the free bandana on Macha in the Outfitter" width="726" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond those tabs, onboarding matches walking rhythm, favourite outdoor discoveries and company style to one of ten creatures. Nearby spots can suggest a park, path or waterside destination, with an own-route option. The profile also opens a creature guide. Account settings include pet sounds, companion preferences and controls for clearing memories, signing out or deleting the account; Gemma controls manage loading, sleeping and its cached model. The phone-continuation QR connects the desktop setup to the actual outdoor journey.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Macha's profile&lt;/th&gt;
&lt;th&gt;All ten wanderers&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%2Fraw.githubusercontent.com%2FRishabhVoid%2Fpawpath%2Fmain%2Fdocs%2Fscreenshots%2F11-desktop-profile.jpg" alt="Macha's fullness, mood, energy and personality" width="800" height="458"&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%2Fraw.githubusercontent.com%2FRishabhVoid%2Fpawpath%2Fmain%2Fdocs%2Fscreenshots%2F12-desktop-creature-guide.jpg" alt="The field guide with ten original pixel creatures" width="800" height="458"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Trying it yourself
&lt;/h3&gt;

&lt;p&gt;Create your own account on the &lt;a href="https://pawpath.onrender.com" rel="noopener noreferrer"&gt;HTTPS app&lt;/a&gt; and complete the companion setup. On a compatible computer, open the Gemma controls, download the model once, and wait for warmup. Keep that tab and computer awake.&lt;/p&gt;

&lt;p&gt;Starting a walk on the computer prepares a phone journey QR. Scan it, tap &lt;strong&gt;Allow location &amp;amp; start&lt;/strong&gt;, and walk with Pawpath visible on your phone. You can select a nearby spot or follow your own route. The two devices need internet but do not need the same Wi-Fi network.&lt;/p&gt;

&lt;p&gt;Allow roughly &lt;strong&gt;3.4 GB&lt;/strong&gt; for the initial model download and use a computer with compatible WebGPU hardware. The phone uses that computer's model. Walking and account features are available without an awake AI host; chats and discovery-photo understanding require one.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/RishabhVoid/pawpath" rel="noopener noreferrer"&gt;Pawpath on GitHub&lt;/a&gt;&lt;/strong&gt; — application code is MIT licensed.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/RishabhVoid/pawpath#readme" rel="noopener noreferrer"&gt;README&lt;/a&gt; covers setup, screenshots, deployment, and current limits. The app has four main areas: Shelter, Field notes, Friends, and Outfitter. Friends share public pet cards through reciprocal invite codes. Outfitter has five accessories, including two free starters; earning points for the other three through events is still unfinished.&lt;/p&gt;

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

&lt;p&gt;Pawpath uses React, Vite, TypeScript, Express, MongoDB, Zod, and Transformers.js. Render serves the client and API from one HTTPS origin.&lt;/p&gt;

&lt;p&gt;The main engineering problem was getting &lt;strong&gt;a model on my computer to accompany a walk on my phone&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leave the model at home
&lt;/h3&gt;

&lt;p&gt;The computer runs &lt;a href="https://huggingface.co/onnx-community/gemma-4-E2B-it-ONNX" rel="noopener noreferrer"&gt;Gemma 4 E2B&lt;/a&gt; through Transformers.js in a WebGPU worker, using quantized &lt;code&gt;q4f16&lt;/code&gt; weights pinned to a specific revision. It handles text and image requests, with short replies and bounded generation.&lt;/p&gt;

&lt;p&gt;The download happens explicitly. Complete cached weights can wake automatically on later visits, but missing files do not silently start another large download. The model must finish a real warmup before the interface declares it ready.&lt;/p&gt;

&lt;p&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%2Fi7sv3jzmk9w0agfkmmmc.jpg" 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%2Fi7sv3jzmk9w0agfkmmmc.jpg" alt="Desktop settings for account continuation, pet sounds and Gemma model controls" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The signed-in computer becomes the account's AI host. Render relays authenticated phone jobs over HTTPS, and the computer polls for work and returns the answer. Gemma executes on the user's GPU; Render hosts the app, API, and relay. The normal flow needs no Ollama installation, tunnel, or helper script.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    Phone[Phone: GPS and discoveries] &amp;lt;--&amp;gt;|Authenticated HTTPS| Render[Render: app, API and relay]
    Computer[Computer: Gemma WebGPU worker] &amp;lt;--&amp;gt;|Jobs and results| Render
    Render &amp;lt;--&amp;gt; Atlas[MongoDB data and vector memories]
    Render --&amp;gt; MiniLM[MiniLM text embeddings]
    MiniLM --&amp;gt; Atlas&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This choice kept a recurring hosted-model bill out of the project. It also introduced a very real limitation: the computer needs to stay awake while its companion is out walking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Give the creature a memory
&lt;/h3&gt;

&lt;p&gt;A discovery produces a short label and category, which are saved as text. The server embeds that text using &lt;code&gt;Xenova/all-MiniLM-L6-v2&lt;/code&gt; into normalized, 384-dimensional vectors. The MongoDB integration supports Atlas Vector Search, filters by companion ID, and retrieves up to three relevant memories for the pet prompt.&lt;/p&gt;

&lt;p&gt;If the index is unavailable, retrieval can compare stored vectors for that pet. If embeddings fail, the saved personality still works without discovery recall. Onboarding preferences are also included directly in the prompt.&lt;/p&gt;

&lt;p&gt;Photos have a separate retention choice. &lt;strong&gt;Keep photos&lt;/strong&gt; defaults off. Opting in stores resized private JPEGs, with a limit of 50 per pet and 150 KB each. Original camera files are not saved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep the game rules in code
&lt;/h3&gt;

&lt;p&gt;Gemma provides the personality and photo interpretation. Code handles the rewards and account boundaries.&lt;/p&gt;

&lt;p&gt;Walks are checkpointed, have one tracking device at a time, and receive completion rewards once—even if an end request is repeated. A two-minute, single-use QR lets the phone continue the account and journey without copying model weights or a permanent password.&lt;/p&gt;

&lt;p&gt;GPS filtering rejects poor accuracy, stationary noise, implausible speed, and long gaps. Nearby spots come from Geoapify or Overpass, and model-selected destinations are checked against real candidates. The pet cannot invent a new destination and have it accepted as a provider result.&lt;/p&gt;

&lt;h3&gt;
  
  
  What worked, and what still needs testing
&lt;/h3&gt;

&lt;p&gt;The documentation review passed &lt;strong&gt;78 existing tests&lt;/strong&gt; and TypeScript checking. Tests cover accounts, QR claims, phone relay permissions, duplicate rewards, GPS filters, private photos, retrieval fallback, and production assets. GPU workers and database services are simulated in those tests.&lt;/p&gt;

&lt;p&gt;The deployed API reported MongoDB storage and vector readiness. Two public GitHub Actions release checks also passed, including &lt;a href="https://github.com/RishabhVoid/pawpath/actions/runs/38210000157" rel="noopener noreferrer"&gt;this run&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There was a real Gemma response in Brave too:&lt;/p&gt;

&lt;p&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%2Fnndvjz2qdzzw5gp6raqc.jpg" 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%2Fnndvjz2qdzzw5gp6raqc.jpg" alt="A real Gemma reply in the deployed desktop app" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When asked what we noticed on the walk, the companion gave a general invitation to another outing rather than naming the foliage discovery. Inference worked; precise recall still needs repeated tests. The 76-metre outing likewise shows a working walk loop, rather than establishing GPS accuracy across devices and routes.&lt;/p&gt;

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

&lt;p&gt;Open weights made this architecture possible. I can run the actual companion model on a user's GPU, inspect and change its prompts, pin the files, and work on a different inference path later. Transformers.js and the ONNX conversion make that accessible through the browser.&lt;/p&gt;

&lt;p&gt;That matters for a small project built under budget constraints. Every chat and photo does not need a metered hosted Gemma request. There are still costs—hardware, electricity, storage, downloads, and the services behind the app—but I can keep experimenting without paying for a model call each time.&lt;/p&gt;

&lt;p&gt;It also lets me decide how much an adventure needs to remember. A small text discovery can be enough. A photo archive is optional.&lt;/p&gt;

&lt;p&gt;Local execution is only part of the privacy story, though. Phone inputs pass through Render's relay; accounts and memories live in MongoDB. The deployed phone journey needs internet and is not fully offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  The part I would change next
&lt;/h3&gt;

&lt;p&gt;My childhood Talking Tom memory gave me the motivation for Pawpath. Taking Macha outside showed me the main obstacle to that idea: &lt;strong&gt;the phone still needs to stay awake with Pawpath visible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Locking it or switching apps pauses browser GPS. A wake lock helps with auto-lock, but native background-location support would let this companion come along while the phone stays in a pocket. That is the next change I would want most.&lt;/p&gt;

&lt;p&gt;Hosting Gemma on a DigitalOcean GPU service could also remove the awake-computer requirement. Recurring GPU costs did not fit the current budget, so it remains a future option. The current relay supports one Render instance and loses pending work on restart; shared queues or signaling would be needed to scale it. Password recovery, event-point earning, and broader vision/recall evaluation are still on the list.&lt;/p&gt;

&lt;p&gt;For now, I have a little creature that got me outside for three minutes. That is a small result, but it is the direction I wanted that old virtual-pet feeling to take.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; hosting the app/API and the authenticated phone-to-computer inference relay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; browser-local Gemma 4 E2B for companion conversations and outdoor-photo understanding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; the documented production data layer and pet-scoped vector-memory integration; the live API reports MongoDB storage and vector readiness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; the category's GitHub Actions automation option, with successful release-check runs. The evidence here is Actions automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These claims follow the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Week 1 category descriptions&lt;/a&gt;.&lt;/p&gt;

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