<?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: maitri-vv</title>
    <description>The latest articles on DEV Community by maitri-vv (@maitrivv).</description>
    <link>https://dev.to/maitrivv</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%2F947890%2F380489f2-46bf-4e28-89b8-67e27ed62f3e.png</url>
      <title>DEV Community: maitri-vv</title>
      <link>https://dev.to/maitrivv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maitrivv"/>
    <language>en</language>
    <item>
      <title>Plain Sight Walk is a walking game that lives in your pocket.</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Fri, 09 Oct 2026 15:18:26 +0000</pubDate>
      <link>https://dev.to/maitrivv/plain-sight-walk-is-a-walking-game-that-lives-in-your-pocket-gjo</link>
      <guid>https://dev.to/maitrivv/plain-sight-walk-is-a-walking-game-that-lives-in-your-pocket-gjo</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;Plain Sight Walk is a walking game that lives in your pocket.&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%2Faj58p5tskg98baczo7wy.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%2Faj58p5tskg98baczo7wy.png" alt="plain-sight-walk powered by Gemma" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every walk has a secret word, say WANDER. You spell it one letter at a time with things you actually find outside: W is for wall, A is for acorn, N is for nest. Gemma writes you a riddle for each letter and can read it aloud, so the phone stays away. When you find the thing, you photograph it, and an open vision model checks the photo. When the word is complete, the app turns your walk into a photo carousel: each slide is one of your photos, stamped with its letter, the object, and how many kilometres into the walk you took it. The secret word picks the look of the whole set. WANDER becomes "Roadside Almanac", a warm sepia. SHADOW becomes "Chiaroscuro", black and white.&lt;/p&gt;

&lt;p&gt;The screen is only for the start and the end. The middle of the experience is looking at things.&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;a href=""&gt;plain-sight-walk.vercel.app&lt;/a&gt; (best in recent Chrome or Edge; it needs WebGPU for Gemma)&lt;/p&gt;

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

&lt;p&gt;Code (MIT):&lt;/p&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/maitri-vv" rel="noopener noreferrer"&gt;
        maitri-vv
      &lt;/a&gt; / &lt;a href="https://github.com/maitri-vv/plain-sight-walk" rel="noopener noreferrer"&gt;
        plain-sight-walk
      &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;Plain Sight Walk&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Every walk has a secret word. You spell it one letter at a time with real things you find outside (a leaf, a rock, the sky). Built for the DEV "Touch Grass" challenge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Everything runs in your browser, with no server and no API key.&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;Job&lt;/th&gt;
&lt;th&gt;Open model&lt;/th&gt;
&lt;th&gt;How it runs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Writes the riddles, field notes and closing postcard&lt;/td&gt;
&lt;td&gt;Gemma (2B, the Gemma build available in WebLLM)&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt;, WebGPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checks your photo matches the clue&lt;/td&gt;
&lt;td&gt;CLIP ViT-B/32 (ONNX port by Xenova)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/huggingface/transformers.js" rel="noopener noreferrer"&gt;transformers.js&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Photos are never uploaded. After the first load, models are cached and the app works with no signal.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run it&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python3 -m http.server 8000   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; WebGPU needs https or localhost&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; open http://localhost:8000 in recent Chrome or Edge, tap "Prepare for the walk"&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deploy (Vercel)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Push this folder to GitHub, then import the repo in Vercel. Framework preset "Other", no build command, no output…&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/maitri-vv/plain-sight-walk" 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;You cannot play this at a desk. The only way to earn a letter is to stand in front of a real wall, a real patch of moss, a real nest. The riddles are read aloud, so between finds the phone can stay in your pocket. A six-letter word takes about [X] minutes of walking when you actually look. The carousel at the end gives you a reason to look properly: you are composing a photograph, not ticking a box.You cannot play this at a desk. The only way to earn a letter is to stand in front of a real wall, a real patch of moss, a real nest. The riddles are read aloud, so between finds the phone can stay in your pocket. A six-letter word takes about [X] minutes of walking when you actually look. The carousel at the end gives you a reason to look properly: you are composing a photograph, not ticking a box.&lt;/p&gt;

&lt;p&gt;It is a static site: no backend, no API key, no database. It is deployed on Vercel straight from GitHub.&lt;/p&gt;

&lt;p&gt;Gemma, running in the browser through WebLLM on WebGPU. It writes the riddles, a one-line "look closer" note after each find, and the closing postcard. The app picks the Gemma build WebLLM offers; in my run that was [model id shown in the app].&lt;br&gt;
CLIP, running through transformers.js. This does zero-shot image classification. Your photo is scored against the twenty possible objects plus distractors like "a person" and "a computer screen". A match means the target is the top label above a confidence threshold.&lt;br&gt;
The device's own GPS. The app adds up distance as you walk and keeps only the running total. Coordinates are never stored or sent anywhere.&lt;br&gt;
A service worker caches the app shell. WebLLM and transformers.js cache the model files themselves, so after the first load the app can run with no signal.&lt;br&gt;
A canvas renderer composes the carousel as 1080x1350 slides, ready to save or share.&lt;/p&gt;

&lt;p&gt;Three design decisions mattered more than any code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The object for each letter comes from a fixed table; Gemma writes the language around it. My first instinct was to let the model choose a thing for each letter. But a small model sometimes picks something you cannot photograph, and CLIP is far more reliable on common objects. Splitting the work this way made the game dependable outdoors, where there is no retry button for a bad clue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gemma is told to give attention, not facts. Small models invent facts about nature, confidently. So the field notes only invite you to look closer. [If you tested the unconstrained version, say what it did.]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The game never calls you wrong without an exit. CLIP will sometimes be mistaken, so there is always a "Count it anyway" button. A walk is not an exam.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;It works where signal does not. A walk is exactly where signal disappears. Both models run in the browser and are cached, so [describe what you saw when you went offline].&lt;br&gt;
Your photos stay on your phone. A game that asks you to photograph your neighbourhood should not upload it. With open weights running locally, there is nothing to upload them to.&lt;br&gt;
It costs nothing to run. There is no per-request bill, so I can leave the demo public without worrying that a stranger's walk costs me money.&lt;br&gt;
I can swap the model. The app selects Gemma from WebLLM's list and CLIP is one line. When a better small model appears, the game improves with a small edit.&lt;br&gt;
Where a closed approach would have been worse: [your honest comparison, or delete this line].&lt;br&gt;
What Went Wrong&lt;br&gt;
The first download failed on my network. My first attempt stopped at Cache.add() encountered a network error. The DevTools Network tab showed the tokenizer.json request returning a redirect, and the file it redirected to failing. CLIP, which comes from the same site, loaded fine, so Hugging Face itself was reachable; something between me and its file host was not. [How you resolved it: a hotspot, secure DNS, another network, or not at all.] The lesson: an offline-first app needs a graceful path when the first download fails. The app now retries once and then falls back to built-in riddles instead of stopping.&lt;br&gt;
My own service worker served me a stale page. I cached the app shell "cache first", so my fixes did not show up and I debugged old code for a while. App files are now fetched network-first.&lt;br&gt;
The first load is large, roughly 2 GB [check your own number under DevTools, Application, Cache Storage], so it should be prepared on Wi-Fi before you leave home.&lt;br&gt;
GPS can pause when a phone screen locks. I added a "keep screen awake" option, at a battery cost. [Your own result.]&lt;br&gt;
CLIP is sometimes wrong, and GPS is only accurate to roughly a few metres under open sky, less under trees. Treat the kilometres as "about".&lt;/p&gt;

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

&lt;p&gt;Best Use of Gemma: Gemma is the voice of the whole game, and it runs entirely on the player's device.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Built for Touch Grass. Go outside; it is better than the screen.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>FollowUp: I Built My Dad a Private AI That Remembers Where His Messages Came From</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Sat, 03 Oct 2026 12:27:22 +0000</pubDate>
      <link>https://dev.to/maitrivv/followup-i-built-my-dad-a-private-ai-that-remembers-where-his-messages-came-from-471f</link>
      <guid>https://dev.to/maitrivv/followup-i-built-my-dad-a-private-ai-that-remembers-where-his-messages-came-from-471f</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;
  
  
  What I Built
&lt;/h2&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%2Fq2r5nj0r8d7w1x3aak0a.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%2Fq2r5nj0r8d7w1x3aak0a.png" alt="FollowUp: I Built My Dad a Private AI That Remembers Where His Messages Came From" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My dad remembers the thing.&lt;/p&gt;

&lt;p&gt;He just doesn't always remember &lt;strong&gt;where it came from&lt;/strong&gt; 🥲 or what he still needed to do about it.&lt;/p&gt;

&lt;p&gt;A society payment. An AC offer. A quotation someone sent as a PDF. A document buried somewhere in a family WhatsApp chat.&lt;/p&gt;

&lt;p&gt;The information exists.&lt;/p&gt;

&lt;p&gt;Finding it again is the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;So I built FollowUp for him.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;FollowUp turns buried conversations into things you actually need to act on.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FollowUp is a private-first AI memory assistant that turns scattered messages, notes, documents, and screenshots into something you can actually ask questions about.&lt;/p&gt;

&lt;p&gt;You can ask things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"When is the society payment due?"&lt;/li&gt;
&lt;li&gt;"Who sent me that AC offer?"&lt;/li&gt;
&lt;li&gt;"Where did I get that quotation?"&lt;/li&gt;
&lt;li&gt;"What payments do I need to make?"&lt;/li&gt;
&lt;li&gt;"What am I forgetting?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But FollowUp isn't designed to just give you an answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It shows you the source behind the answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If FollowUp tells you that the society maintenance is ₹4,800 and due on 7 October, you can open the result and see the original message, sender, group, and date that the answer came from.&lt;/p&gt;

&lt;p&gt;That makes the result traceable instead of just another AI response.&lt;/p&gt;

&lt;h3&gt;
  
  
  The feature I built specifically for my dad
&lt;/h3&gt;

&lt;p&gt;The most interesting part ended up being &lt;strong&gt;"What am I forgetting?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of requiring my dad to remember the right question, FollowUp looks through imported memories for things that appear actionable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;payments&lt;/li&gt;
&lt;li&gt;renewals&lt;/li&gt;
&lt;li&gt;requests&lt;/li&gt;
&lt;li&gt;offers&lt;/li&gt;
&lt;li&gt;deadlines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns those buried messages into actionable cards.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SOCIETY MAINTENANCE&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
₹4,800&lt;br&gt;&lt;br&gt;
&lt;strong&gt;PAY BY 7 October 2026&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click it, and FollowUp opens the original message that caused it to appear.&lt;/p&gt;

&lt;p&gt;So the loop becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;find the thing → understand why it matters → verify where it came from&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the public demo, I use synthetic memories rather than uploading my dad's private conversations.&lt;/p&gt;


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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://hacktoberfest-followup-peach.vercel.app/" rel="noopener noreferrer"&gt;https://hacktoberfest-followup-peach.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo is built around the actual problem rather than a generic chatbot flow.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the demo.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Load demo Dad data&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;"What am I forgetting?"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;See payments, requests, and offers surfaced from the imported memories.&lt;/li&gt;
&lt;li&gt;Click an actionable item.&lt;/li&gt;
&lt;li&gt;Inspect the exact original source.&lt;/li&gt;
&lt;li&gt;Ask a natural-language question such as:

&lt;ul&gt;
&lt;li&gt;"Who sent me the AC offer?"&lt;/li&gt;
&lt;li&gt;"When is the society payment due?"&lt;/li&gt;
&lt;li&gt;"Where did I get the quotation?"&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Get a grounded answer with the supporting memories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The public deployment currently starts with an empty browser memory store by design. The demo data is loaded explicitly so nobody's private history is part of the public deployment.&lt;/p&gt;


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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/maitri-vv/FollowUp" rel="noopener noreferrer"&gt;https://github.com/maitri-vv/FollowUp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Transformers.js&lt;/li&gt;
&lt;li&gt;Gemma 3 270M IT&lt;/li&gt;
&lt;li&gt;browser-side WASM inference&lt;/li&gt;
&lt;li&gt;IndexedDB&lt;/li&gt;
&lt;li&gt;semantic + lexical retrieval&lt;/li&gt;
&lt;li&gt;optional Backboard RAG&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository contains the ingestion/parsing logic, retrieval pipeline, local Gemma inference, actionable-memory detection, source tracing, and optional Assisted Mode.&lt;/p&gt;


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

&lt;p&gt;The main constraint was simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI shouldn't be a chatbot bolted onto the product. It should be part of how FollowUp works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WhatsApp exports / notes / documents
              ↓
        Local ingestion
              ↓
           Chunking
              ↓
     Embeddings + retrieval
              ↓
     Local open-weight Gemma
              ↓
    Grounded answer + sources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  1. Importing memories
&lt;/h3&gt;

&lt;p&gt;FollowUp turns imported information into structured memories containing things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source&lt;/li&gt;
&lt;li&gt;sender&lt;/li&gt;
&lt;li&gt;group&lt;/li&gt;
&lt;li&gt;date&lt;/li&gt;
&lt;li&gt;category&lt;/li&gt;
&lt;li&gt;original message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WhatsApp exports can be parsed into individual messages so they can be retrieved independently.&lt;/p&gt;

&lt;p&gt;The public demo also includes synthetic Dad memories so the entire flow can be tested without using real personal data.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Retrieval
&lt;/h3&gt;

&lt;p&gt;FollowUp uses both semantic retrieval and lexical matching.&lt;/p&gt;

&lt;p&gt;Semantic retrieval helps when the question and the original message use different words.&lt;/p&gt;

&lt;p&gt;Lexical matching helps preserve exact information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;names&lt;/li&gt;
&lt;li&gt;dates&lt;/li&gt;
&lt;li&gt;amounts&lt;/li&gt;
&lt;li&gt;"pay"&lt;/li&gt;
&lt;li&gt;"renewal"&lt;/li&gt;
&lt;li&gt;"quotation"&lt;/li&gt;
&lt;li&gt;"before Friday"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The results are combined before the answer layer sees them.&lt;/p&gt;

&lt;p&gt;This matters because personal-memory search isn't just a keyword problem.&lt;/p&gt;

&lt;p&gt;If my dad asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Who sent me that AC thing?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the useful memory might actually say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Voltas AC service package at the festival offer price."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Semantic matching helps connect those ideas, while lexical matching protects the exact details.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Gemma runs locally
&lt;/h3&gt;

&lt;p&gt;The open-weight model at the core of FollowUp is &lt;strong&gt;Gemma 3 270M IT&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I run it through &lt;strong&gt;Transformers.js&lt;/strong&gt; using browser-side WASM inference.&lt;/p&gt;

&lt;p&gt;That gives FollowUp a local inference path without requiring a hosted LLM for Private Mode.&lt;/p&gt;

&lt;p&gt;The model receives retrieved context and generates an answer from that evidence.&lt;/p&gt;

&lt;p&gt;I also added a deterministic grounded-answer layer for common memory tasks such as payments, senders, locations, and actionable items.&lt;/p&gt;

&lt;p&gt;That makes common queries faster while still keeping Gemma available as the general language layer.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Grounded answers
&lt;/h3&gt;

&lt;p&gt;FollowUp is deliberately conservative.&lt;/p&gt;

&lt;p&gt;The retrieval layer provides the evidence.&lt;/p&gt;

&lt;p&gt;The answer layer is instructed to answer from that evidence rather than inventing missing details.&lt;/p&gt;

&lt;p&gt;If the available memories don't contain enough information, FollowUp should say so.&lt;/p&gt;

&lt;p&gt;And when an answer is produced, the user can inspect the underlying memory.&lt;/p&gt;

&lt;p&gt;For a personal-memory product, I cared more about:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Show me why you think that."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;than making the assistant sound confident.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. "What am I forgetting?"
&lt;/h3&gt;

&lt;p&gt;This is where retrieval becomes more than a search box.&lt;/p&gt;

&lt;p&gt;FollowUp identifies imported memories containing actionable signals such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;payment amounts&lt;/li&gt;
&lt;li&gt;due dates&lt;/li&gt;
&lt;li&gt;renewal dates&lt;/li&gt;
&lt;li&gt;requests&lt;/li&gt;
&lt;li&gt;offers&lt;/li&gt;
&lt;li&gt;deadlines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It extracts the relevant action and date and presents those memories as cards.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PAYMENT

Society maintenance

₹4,800

PAY BY 7 October 2026

Society Admin · Green View Society
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The card is clickable, so the user can immediately inspect the evidence behind it.&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Optional Assisted Mode
&lt;/h3&gt;

&lt;p&gt;FollowUp also has an optional &lt;strong&gt;Assisted Mode&lt;/strong&gt; using Backboard.&lt;/p&gt;

&lt;p&gt;In this mode, retrieved memories can be sent to Backboard for hosted RAG assistance.&lt;/p&gt;

&lt;p&gt;I deliberately kept this separate from Private Mode.&lt;/p&gt;

&lt;p&gt;Private Mode is designed around keeping imported memories in the browser and running the open-weight model locally.&lt;/p&gt;

&lt;p&gt;Assisted Mode is an explicit choice to use hosted assistance.&lt;/p&gt;

&lt;p&gt;I also added deduplication to the Backboard memory sync so repeatedly syncing the same imported memories doesn't blindly create duplicates.&lt;/p&gt;


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

&lt;p&gt;I tested FollowUp with a synthetic WhatsApp conversation containing realistic examples of the problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a ₹4,800 society maintenance payment&lt;/li&gt;
&lt;li&gt;an AC service offer from Rajesh&lt;/li&gt;
&lt;li&gt;a quotation sent as a PDF&lt;/li&gt;
&lt;li&gt;an electricity bill request&lt;/li&gt;
&lt;li&gt;a bank statement sent in a family chat&lt;/li&gt;
&lt;li&gt;an LIC renewal reminder&lt;/li&gt;
&lt;li&gt;repeated references to the same offer and quotation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The import worked, and the main natural-language queries returned the expected information.&lt;/p&gt;

&lt;p&gt;The important test wasn't simply whether an AI model could answer a question.&lt;/p&gt;

&lt;p&gt;It was whether FollowUp could answer the question &lt;strong&gt;and let me trace the answer back to the original memory.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That source trail is the part I wanted to build for my dad.&lt;/p&gt;


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

&lt;p&gt;FollowUp deals with exactly the kind of information people may not want to send to a third-party AI service:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;family conversations, reminders, documents, payments, and personal history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That made the choice of open-weight AI more than a technology preference.&lt;/p&gt;

&lt;p&gt;FollowUp's Private Mode can run its language model locally in the browser through Transformers.js.&lt;/p&gt;

&lt;p&gt;The basic path is:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Personal memories
       ↓
    Browser
       ↓
Local retrieval
       ↓
Local Gemma inference
       ↓
     Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A hosted LLM isn't required for that core path.&lt;/p&gt;

&lt;p&gt;That gives the product a different privacy boundary from a design where every personal memory has to be sent to a remote model before it can be useful.&lt;/p&gt;

&lt;p&gt;It also gives me control over the model layer.&lt;/p&gt;

&lt;p&gt;I can experiment with different open models, change the inference setup, change the retrieval strategy, and keep the application architecture under my control.&lt;/p&gt;

&lt;p&gt;There is a tradeoff.&lt;/p&gt;

&lt;p&gt;Running a model locally in the browser is slower than calling a large hosted model.&lt;/p&gt;

&lt;p&gt;But for FollowUp, that tradeoff is meaningful.&lt;/p&gt;

&lt;p&gt;If I'm building something whose job is to help remember personal conversations, I don't want uploading an entire history to a closed API to be the default requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open innovation made the privacy-first version of FollowUp possible.&lt;/strong&gt;&lt;/p&gt;


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

&lt;p&gt;I used DevRelay during the submission workflow to inspect the project, verify the live Hacktoberfest Weekend Challenge requirements, and prepare this submission.&lt;/p&gt;

&lt;p&gt;The curated agent session is publicly available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/preparing-followup-for-the-hacktoberfest-weekend-challenge-with-devrelay-mhdiqn"&gt;https://dev.to/agent_sessions/preparing-followup-for-the-hacktoberfest-weekend-challenge-with-devrelay-mhdiqn&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="GitHub Copilot"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Preparing FollowUp for the Hacktoberfest Weekend Challenge with DevRelay&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Use DevRelay to inspect the current FollowUp project and tell me what DevRelay capabilities are relevant to my Hacktoberfest Weekend Challenge submission.&lt;/p&gt;

&lt;p&gt;FollowUp is already built and deployed.&lt;/p&gt;

&lt;p&gt;Public repository: &lt;a href="https://github.com/maitri-vv/FollowUp" rel="noopener noreferrer"&gt;https://github.com/maitri-vv/FollowUp&lt;/a&gt;&lt;br&gt;
Live demo: &lt;a href="https://hacktoberfest-followup-peach.vercel.app/" rel="noopener noreferrer"&gt;https://hacktoberfest-followup-peach.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I specifically want to qualify for the DevRelay prize.&lt;/p&gt;

&lt;p&gt;Do not modify any code yet.&lt;/p&gt;

&lt;p&gt;First:&lt;br&gt;
1. Inspect the current FollowUp project.&lt;br&gt;
2. Use DevRelay to inspect the Hacktoberfest Weekend Challenge and DevRelay information.&lt;br&gt;
3. Identify how DevRelay can make a genuine contribution to this project or its submission workflow.&lt;br&gt;
4. Pay particular attention to Agent Sessions because I need to include the resulting session in my DEV submission.&lt;br&gt;
5. Tell me exactly what you recommend doing next.&lt;/p&gt;

&lt;p&gt;Do not rewrite or refactor FollowUp.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll inspect FollowUp locally and pull live Hacktoberfest/DevRelay rules so the prize-track advice matches the current challenge, not last year's PR-based Hacktoberfest.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getknowledgedocument"&gt;get_knowledge_document&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;topic: hacktoberfest&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;topic: hacktoberfest&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Hacktoberfest 2026 is run by MLH and DEV. Pull requests no longer count. DEV Challenges are the submission path. Install-and-log-in to DevRelay is a Tools sticker. Challenge prompts and prizes are live data, not in this static guide.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getknowledgedocument"&gt;get_knowledge_document&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;topic: dev-challenges&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;topic: dev-challenges&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;You enter by publishing a DEV post with the required tag and template. AI is allowed with disclosure. Optional: embed an agent session. Weekend Challenges usually allow one submission per person. New work during the entry window.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getchallenges"&gt;get_challenges&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;page: 1, per_page: 20&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;page: 1, per_page: 20&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Active: Hacktoberfest Weekend Challenge: Build for a Friend (id 78, slug hacktoberfest-weekend-2026-10-01). Starts 2026-10-02T02:00:00Z, ends 2026-10-05T06:59:00Z. Prompt: open-source AI at the core, built for a friend or loved one. Writing quality weighted most heavily. DevRelay agent session encouraged, not a cash category.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-mlhconnectionstatus"&gt;mlh_connection_status&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{}&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Connected. DEV read/write scopes present. Identity redacted.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-listagentsessions"&gt;list_agent_sessions&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{}&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;No existing agent sessions on this DEV account.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getmyarticles"&gt;get_my_articles&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;state: all&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;state: all&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Unpublished Hacktoberfest Weekend Challenge draft exists, using the official template. Demo and repo placeholders still incomplete. My Agent Session section empty. Draft edit URL omitted here because unpublished DEV URLs are share-secret.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-searchdevtosemantic"&gt;search_dev_to_semantic&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;query: Hacktoberfest Weekend Challenge DevRelay prize agent session submission&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;query: Hacktoberfest Weekend Challenge DevRelay prize agent session submission&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Official launch post: Join the Hacktoberfest Weekend Challenge: Build for a Friend. Show-your-work: save an agent session with DevRelay and embed it. Cash prizes are overall, Gemma, Backboard, Entire, and other listed partners — not a DevRelay cash prize.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;FollowUp in this workspace is branded Recall: a private-first memory assistant for Dad. Local IndexedDB storage, MiniLM embeddings plus lexical retrieval, and Gemma 3 270M in the browser via Transformers.js. Optional Assisted Mode sends retrieved snippets to Backboard. Synthetic demo data is the public judging path.&lt;/p&gt;

&lt;p&gt;The live Weekend Challenge matches the product: open-weight local inference for one real person. DevRelay's genuine contribution is the submission workflow, not a new app feature: inspect live rules, confirm there is no DevRelay cash prize, then save and embed an Agent Session so judges can see the process. Closest honest cash categories are Best Use of Gemma and, if Assisted Mode is real, Best Use of Backboard. Entire is a different product.&lt;/p&gt;

&lt;p&gt;Recommended next: save a curated Agent Session, Make Public on DEV, patch the existing draft (live demo URL, FollowUp repo, session embed). Do not publish the article until you say so. Do not rewrite FollowUp.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Yes. Save the DevRelay Agent Session for this work.&lt;/p&gt;

&lt;p&gt;Before submitting it:&lt;br&gt;
1. Curate the session so it clearly shows how DevRelay contributed to preparing my FollowUp Hacktoberfest Weekend Challenge submission.&lt;br&gt;
2. Remove or redact any secrets, API keys, tokens, credentials, private URLs, local machine paths, or other sensitive information.&lt;br&gt;
3. Keep the useful parts: FollowUp inspection, Weekend Challenge verification, DevRelay's role in the submission workflow, and the Agent Session reasoning.&lt;br&gt;
4. Do not modify the FollowUp application code.&lt;br&gt;
5. Submit/save the curated agent session using DevRelay.&lt;br&gt;
6. Give me the resulting session ID or slug and tell me exactly how I make it public on DEV.&lt;/p&gt;

&lt;p&gt;Do not publish my Hacktoberfest article yet.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Curation rules applied before submit:&lt;br&gt;
- Kept: public repo and live demo, challenge dates and judging, DevRelay session workflow, Gemma/Backboard category fit, empty-session finding.&lt;br&gt;
- Redacted: local filesystem paths, MLH user IDs, unpublished draft secret URLs, environment variable values, account identifiers.&lt;br&gt;
- Not included: application code changes. FollowUp was not modified.&lt;br&gt;
- Article remains unpublished.&lt;/p&gt;

&lt;p&gt;Submitting this curated transcript to DEV via DevRelay submit_agent_session.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        4 of 4 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;






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

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;FollowUp uses &lt;strong&gt;Gemma 3 270M IT&lt;/strong&gt; as its open-weight language model, running locally through Transformers.js and WASM.&lt;/p&gt;

&lt;p&gt;Gemma is part of the core Private Mode architecture rather than being used only as a separate chatbot feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Backboard
&lt;/h3&gt;

&lt;p&gt;FollowUp also uses &lt;strong&gt;Backboard&lt;/strong&gt; for its optional Assisted Mode.&lt;/p&gt;

&lt;p&gt;Backboard provides the hosted RAG path while FollowUp keeps its local/private path separate.&lt;/p&gt;




&lt;p&gt;I built FollowUp for one person because one person's annoying everyday problem was enough.&lt;/p&gt;

&lt;p&gt;My dad didn't need another chatbot.&lt;/p&gt;

&lt;p&gt;He needed to stop asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Where did I get that?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I built something that could help him find it  and remember what he needed to do about it. &lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Bringing 3d-blockstack to Life</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Fri, 31 Oct 2025 07:13:25 +0000</pubDate>
      <link>https://dev.to/maitrivv/bringing-3d-blockstack-to-life-4ba4</link>
      <guid>https://dev.to/maitrivv/bringing-3d-blockstack-to-life-4ba4</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;🎃 Maintainer Spotlight: Bringing 3d-blockstack to Life&lt;/em&gt;
&lt;/h2&gt;




&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/maitri-vv/3D-Blockstack" rel="noopener noreferrer"&gt;3D-Blockstack&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.amazonaws.com%2Fuploads%2Farticles%2Fhmi2a564gvndirek2622.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.amazonaws.com%2Fuploads%2Farticles%2Fhmi2a564gvndirek2622.jpg" alt="Hack Rewards" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hacktoberfest isn't just a month; it's a feeling—especially when you're on the other side of the pull request. For me, the month of October is when my &lt;strong&gt;GitHub activity chart goes from 0 to 100&lt;/strong&gt;, and there's simply nothing more exhilarating. It's a time for finding new tech stacks, squashing bugs, and seeing the open-source community explode with collaborative energy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My Hacktoberfest journey started back in my college days, thanks to my &lt;strong&gt;GDSC chapter&lt;/strong&gt;. I was instantly hooked on the thrill of contributing and learning. Now, as a maintainer for &lt;strong&gt;3d-blockstack&lt;/strong&gt;, I get to experience that excitement from a whole new angle.&lt;/p&gt;




&lt;h3&gt;
  
  
  What is &lt;strong&gt;3d-blockstack&lt;/strong&gt; and Why I Maintain It
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;3d-blockstack&lt;/strong&gt; is an open-source, mesmerizing 3D stacking game built using Three.js for captivating graphics and Cannon.js for realistic physics. It challenges players to build the tallest tower by precisely dropping blocks, featuring responsive design, a high score system, and multiple color themes. I maintain it because it’s a perfect sandbox for developers who want a hands-on experience in game development, 3D rendering, and performance optimization—turning challenging code into a truly addictive user experience.&lt;/p&gt;

&lt;p&gt;The best part about being a maintainer is fostering that same spirit of excitement I felt as a first-time contributor. I truly believe that the most valuable contributions often come from fresh eyes. It is surreal to realize that I’m not just leveraging my own skills, but the collective genius of the entire community. Open source embodies the highest form of collaboration, proving that no single person can build a great project alone; like the famous adage, it takes a village of committed contributors to raise a project to its full potential.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✨ How to Contribute to &lt;strong&gt;3d-blockstack&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you're looking for a project that offers real-world impact and a welcoming community, look no further! We've made it easy to jump in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Read the &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;:&lt;/strong&gt; This is your map! It has all the information about our code style, commit conventions, and setup instructions.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Look for the Labels:&lt;/strong&gt; We actively label issues with:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;hacktoberfest&lt;/code&gt;: General issues suitable for the challenge.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;good first issue&lt;/code&gt;: Perfect for beginners or those new to the project.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;enhancement&lt;/code&gt;: Ideas for new features or improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Pick an Issue &amp;amp; Comment:&lt;/strong&gt; Once you find one you like, &lt;strong&gt;comment on the issue&lt;/strong&gt; to let us know you're working on it. This helps prevent multiple people from working on the same thing.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Ask Questions!&lt;/strong&gt; Don't struggle in silence. If you get stuck, please reach out via &lt;strong&gt;GitHub Discussions or Discord&lt;/strong&gt;. I'm here to help you get that PR merged!&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  The Hacktoberfest Vibe: A Maintainer's View
&lt;/h3&gt;

&lt;p&gt;As a maintainer during Hacktoberfest, I get to wear a few hats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Reviewer:&lt;/strong&gt; I meticulously check every pull request, focusing on clear communication and constructive feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Cheerleader:&lt;/strong&gt; Seeing a contributor, especially a new one, solve a challenging issue or implement a requested feature is incredibly rewarding. I make sure to &lt;strong&gt;celebrate every successful merge&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Vibe Setter:&lt;/strong&gt; My goal is to make sure every contributor feels welcome, understood, and a valuable part of the &lt;strong&gt;3d-blockstack&lt;/strong&gt; family. Getting to know that &lt;strong&gt;vibe&lt;/strong&gt; through comments and discussions is what makes the experience so unique and satisfying.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hacktoberfest transforms the maintenance experience. We get to &lt;strong&gt;enhance our project&lt;/strong&gt; with diverse skills and perspectives, turning good projects into truly great ones.&lt;/p&gt;




&lt;p&gt;As Hacktoberfest 2025 draws to a close, the true victory isn't measured just in merged PRs, but in the &lt;strong&gt;connections forged&lt;/strong&gt; and the collaborative energy gained. Serving as a maintainer for &lt;strong&gt;3d-blockstack&lt;/strong&gt; has been the most rewarding experience, validating the "village" concept of open source collaboration. Thank you to every single contributor who helped us squash a bug, implement a new feature, and make this project truly shine. It is your enthusiasm that powers the open-source world, and I look forward to carrying this spirit alive every year ahead. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;May the open source passion keep your charts green and your projects standing tall! Happy Hacking! 🎃&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Calling All Contributors: Join the Coffee-Bean Project!</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Tue, 24 Oct 2023 05:59:42 +0000</pubDate>
      <link>https://dev.to/maitrivv/calling-all-contributors-join-the-coffee-bean-project-1j3d</link>
      <guid>https://dev.to/maitrivv/calling-all-contributors-join-the-coffee-bean-project-1j3d</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome to the "coffee-bean" project, a delightful open-source project where we brew up the perfect blend of HTML, CSS, and JavaScript. As the project maintainer, I am excited to invite talented developers, designers, and coffee enthusiasts from around the world to join our journey. Whether you're a seasoned coder or just starting your open-source adventure, there's a place for you in our caffeinated world!&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%2Fxe88tkeckm9080gzn6nr.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%2Fxe88tkeckm9080gzn6nr.png" alt="Coffee-Bean Project" width="800" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Coffee-Bean?
&lt;/h2&gt;

&lt;p&gt;"coffee-bean" is an open-source project aimed at creating a beautiful and responsive website for coffee lovers. It's a virtual coffeehouse where we showcase your love for the brew through code and design. With a foundation of HTML, CSS, and JavaScript, we aim to create a dynamic and interactive website that captivates visitors with the aroma and essence of coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Contribute?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Learning and Growth:&lt;/strong&gt; As a contributor, you'll have the opportunity to learn and improve your skills in web development. Whether it's refining your HTML structure, perfecting CSS styling, or enhancing your JavaScript interactivity, there's something for everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real-World Experience:&lt;/strong&gt; "coffee-bean" provides an authentic open-source experience. You'll work on a real project with real users, collaborating with a diverse team of contributors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Portfolio Enhancement:&lt;/strong&gt; Your contributions will be recognized and credited. This project can be a valuable addition to your portfolio, showcasing your skills to potential employers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. A Sense of Community:&lt;/strong&gt; Join a friendly and inclusive community of developers who share a passion for both coffee and code. We're here to support each other, answer questions, and celebrate successes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explore the Repository:&lt;/strong&gt; Visit our &lt;a href="https://github.com/yash19sinha/coffee-bean" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to get familiar with the project structure, issues, and existing contributions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose an Issue:&lt;/strong&gt; Browse through the existing issues to find something that piques your interest. We label issues to help you identify tasks suitable for your skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fork the Repository:&lt;/strong&gt; Click the "Fork" button on the top-right of the repository page to create your own copy of the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make Your Contribution:&lt;/strong&gt; Work on your chosen issue in your forked repository. Write clean code, test thoroughly, and ensure your changes meet the project's coding standards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Submit a Pull Request:&lt;/strong&gt; Once you're satisfied with your contribution, submit a pull request to the main repository. Be sure to include a clear description of your changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaborate and Communicate:&lt;/strong&gt; Engage with the community on the issue and pull request threads. Discuss your approach, ask questions, and make improvements based on feedback.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contributing Guidelines
&lt;/h2&gt;

&lt;p&gt;To maintain a harmonious and productive environment, we've set up some contributing guidelines. Please review our &lt;a href="https://github.com/yash19sinha/coffee-bean/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt; for detailed instructions on coding standards, workflow, and expectations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The "coffee-bean" project is a place where you can indulge in your love for coffee and code simultaneously. It's a fun and educational journey where you can contribute, learn, and grow. Whether you're an experienced developer looking for a new challenge or a newbie eager to take your first steps in open source, we welcome you with open arms.&lt;/p&gt;

&lt;p&gt;Together, we can brew something amazing. So, grab your favorite coffee mug, fire up your code editor, and let's create the most aromatic and inviting coffeehouse on the web.&lt;/p&gt;

&lt;p&gt;Let's code over coffee. ☕️&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Thank you for considering joining the "coffee-bean" project. We can't wait to see the creativity, skills, and enthusiasm you bring to our virtual coffeehouse. If you have any questions or need assistance, feel free to reach out. Let's make this project a success, one code commit at a time.&lt;/p&gt;

&lt;p&gt;Join the "coffee-bean" community on GitHub today! ☕️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yash19sinha/coffee-bean" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hack23maintainer</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>hacktoberfest23</category>
    </item>
    <item>
      <title>Hacktoberfest 2023: Embracing Open Source, Learning, and Gratitude</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Tue, 24 Oct 2023 05:54:57 +0000</pubDate>
      <link>https://dev.to/maitrivv/hacktoberfest-2023-embracing-open-source-learning-and-gratitude-3i8g</link>
      <guid>https://dev.to/maitrivv/hacktoberfest-2023-embracing-open-source-learning-and-gratitude-3i8g</guid>
      <description>&lt;p&gt;&lt;a href="https://hacktoberfest.com" rel="noopener noreferrer"&gt;Visit hacktoberfest site&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As the autumn leaves fall and the air gets crisper, the world of open source software enthusiasts comes alive with anticipation. Hacktoberfest, the month-long celebration of open source contributions, has arrived once again, and it's time to reflect on the journey and express our gratitude for this wonderful initiative. In this post, I will share my personal experience with Hacktoberfest, the value it has added to my life, and the lessons I've learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Heartfelt Gratitude
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Expressing Appreciation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would like to begin this post by expressing my heartfelt gratitude towards the Hacktoberfest program. It's more than just a series of events; it's a global community of developers coming together to celebrate open source contributions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Spark of Interest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My journey with Hacktoberfest started when I first heard about it. I was curious, but I had never ventured into open source contributions before. The idea of contributing to projects I use every day was fascinating. I decided to give it a try, and little did I know that this decision would transform my perspective on collaborative coding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Importance of Collective Knowledge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest isn't just about getting a t-shirt or some cool swag; it's about the collective knowledge-sharing that takes place. It's a unique opportunity to learn and grow as a developer by working alongside some of the brightest minds in the open source community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lessons from Hacktoberfest
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Setting Realistic Goals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the key lessons I learned from participating in Hacktoberfest was the importance of setting realistic goals. When I began, I aimed to complete a specific number of pull requests or contribute to a particular project. This approach helped me focus and remain motivated throughout the event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation and Communication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another valuable lesson I gained was the significance of documentation and communication. I had to dig deep into project documentation, communicate with maintainers, and even understand issues and features thoroughly. This experience improved my understanding of projects and enhanced my collaboration skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Iterative Learning Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest presented its fair share of challenges. I encountered technical hurdles and sometimes struggled to grasp project intricacies. However, each challenge made me a better developer. It taught me patience and persistence in the face of adversity, two qualities that have proven invaluable in my career.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Joy of Giving Back
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Joy of Giving Back to the Community
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Satisfaction in Contribution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is immense satisfaction in contributing to open source projects. It's heartwarming to know that your work can be used by others and make a real-world impact. The feeling of giving back to the community is beyond words.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nurturing the Open Source Ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While it's important to contribute to open source projects during Hacktoberfest, it's equally crucial to maintain and nurture the open source ecosystem. Many projects are the backbone of our work, and supporting them ensures their longevity and growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuing the Journey&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest is just the beginning. Open source contributions shouldn't be confined to a single month. Encourage others to continue their involvement in the open source community year-round. Become a lifelong contributor, and you'll find that the journey is incredibly rewarding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Embrace Hacktoberfest and Grow
&lt;/h3&gt;

&lt;p&gt;In conclusion, Hacktoberfest has been an incredible journey of gratitude, learning, and giving back. The experience has been transformative and has allowed me to see the world of open source in a new light.&lt;/p&gt;

&lt;p&gt;I encourage all developers, whether beginners or experts, to participate in Hacktoberfest 2023. Let my experiences be an inspiration for your own journey. Here are some practical tips to get you started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose Your Projects Wisely:&lt;/strong&gt; Select projects that align with your interests and skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Realistic Goals:&lt;/strong&gt; Define clear objectives and milestones for your contributions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Patience and Persistence:&lt;/strong&gt; Embrace the iterative learning process and don't be discouraged by challenges.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Communication is Key:&lt;/strong&gt; Reach out to maintainers, ask questions, and seek guidance when needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Give Back Year-round:&lt;/strong&gt; Remember that open source contributions can and should continue beyond Hacktoberfest.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the spirit of Hacktoberfest, let's embrace open source, celebrate collaboration, and continue to learn and grow as developers. Here's to a bright future of open source contributions, and I invite you to join me on this incredible journey.&lt;/p&gt;

</description>
      <category>hack23contributor</category>
      <category>hacktoberfest23</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>APIs 101 with Postman</title>
      <dc:creator>maitri-vv</dc:creator>
      <pubDate>Wed, 02 Nov 2022 06:05:33 +0000</pubDate>
      <link>https://dev.to/maitrivv/apis-101-with-postman-2138</link>
      <guid>https://dev.to/maitrivv/apis-101-with-postman-2138</guid>
      <description>&lt;p&gt;Here's a Blog on session : &lt;a href="https://medium.com/@maitri.vv/apis-101-with-postman-1a1cfd7acdfe" rel="noopener noreferrer"&gt;https://medium.com/@maitri.vv/apis-101-with-postman-1a1cfd7acdfe&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2F5pepnbfe4jott6an13br.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.amazonaws.com%2Fuploads%2Farticles%2F5pepnbfe4jott6an13br.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>postmanstudent</category>
      <category>postmanapi</category>
      <category>api</category>
    </item>
  </channel>
</rss>
