<?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: Lasyapriya Putti</title>
    <description>The latest articles on DEV Community by Lasyapriya Putti (@lasyapriya_putti).</description>
    <link>https://dev.to/lasyapriya_putti</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%2F4156484%2F3ee97a44-b3d3-4d8a-9350-4037b7d3b6eb.png</url>
      <title>DEV Community: Lasyapriya Putti</title>
      <link>https://dev.to/lasyapriya_putti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lasyapriya_putti"/>
    <language>en</language>
    <item>
      <title>👻 GhostArchive: Giving Family Memories a Voice with Offline AI</title>
      <dc:creator>Lasyapriya Putti</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:52:34 +0000</pubDate>
      <link>https://dev.to/lasyapriya_putti/ghostarchive-giving-family-memories-a-voice-with-offline-ai-34ec</link>
      <guid>https://dev.to/lasyapriya_putti/ghostarchive-giving-family-memories-a-voice-with-offline-ai-34ec</guid>
      <description>&lt;p&gt;&lt;strong&gt;Some voices deserve to live forever.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What if we could preserve not just photographs of our loved ones, but also their voices, stories, experiences, and the little things that make them unforgettable?&lt;/p&gt;

&lt;p&gt;For Hacktoberfest 2026 – Open-Source AI Challenge, Week 4, I explored this idea through &lt;strong&gt;GhostArchive&lt;/strong&gt;, an offline AI-powered family memory preservation application.&lt;/p&gt;

&lt;p&gt;Inspired by this week's theme, &lt;em&gt;Ghost in the Machine&lt;/em&gt;, and the spirit of Día de los Muertos, I wanted to explore how AI could help us preserve memories that might otherwise disappear with time.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 The Problem
&lt;/h2&gt;

&lt;p&gt;We take hundreds of photographs and videos, but how often do we actually preserve the stories behind them?&lt;/p&gt;

&lt;p&gt;Our grandparents have stories about their childhood, traditions, struggles, and experiences. Unfortunately, many of these stories are never recorded.&lt;/p&gt;

&lt;p&gt;Once those voices are gone, their stories can become difficult to recover.&lt;/p&gt;

&lt;p&gt;I wanted to build something that could help families preserve these memories in a more meaningful way.&lt;/p&gt;

&lt;h2&gt;
  
  
  👻 Introducing GhostArchive
&lt;/h2&gt;

&lt;p&gt;GhostArchive is an offline AI-powered memory preservation tool that transforms recorded family conversations into searchable digital memories.&lt;/p&gt;

&lt;p&gt;Instead of simply storing audio recordings, it uses AI to help organize, understand, and preserve the stories behind them.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can it do?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Record a Memory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users can record conversations, personal experiences, and family stories directly through the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Convert Voice into Text&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using Whisper.cpp, the application transcribes recorded conversations into readable text without depending on a cloud transcription service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AI-Powered Storytelling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using Gemma 3, the application transforms raw transcripts into organized, readable stories while preserving the original meaning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Preserve Memories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users can save transcripts, generated stories, dates, and associated photographs in a local database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Search Past Memories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users can search their saved memories and revisit stories whenever they want.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Technology Stack
&lt;/h2&gt;

&lt;p&gt;I chose technologies that support local execution and give users greater control over their data.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;How it is used&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;Application logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streamlit&lt;/td&gt;
&lt;td&gt;Interactive user interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Whisper.cpp&lt;/td&gt;
&lt;td&gt;Local speech-to-text transcription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 3&lt;/td&gt;
&lt;td&gt;Open-weight language model for storytelling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;Local model execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;td&gt;Local memory storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SoundDevice&lt;/td&gt;
&lt;td&gt;Audio recording&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  ⚙️ How It Works
&lt;/h2&gt;

&lt;p&gt;The application follows a simple pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user records a family conversation.&lt;/li&gt;
&lt;li&gt;Whisper.cpp converts the audio into text.&lt;/li&gt;
&lt;li&gt;The transcript is passed to Gemma 3.&lt;/li&gt;
&lt;li&gt;Gemma generates an organized story from the transcript.&lt;/li&gt;
&lt;li&gt;The user reviews and saves the story.&lt;/li&gt;
&lt;li&gt;SQLite stores the memory locally for future access.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       User
        |
        v
   Streamlit UI
        |
        v
  Audio Recording
        |
        v
    Whisper.cpp
        |
        v
  Text Transcript
        |
        v
     Gemma 3
        |
        v
  Story Generation
        |
        v
     SQLite
        |
        v
  Saved Memories
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔓 Why Open-Source AI?
&lt;/h2&gt;

&lt;p&gt;For this project, using open-source tools and open-weight models is not just a technical choice. It is an important part of the idea itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; Family conversations can contain personal information. Processing recordings locally reduces the need to upload private memories to external AI services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline Accessibility:&lt;/strong&gt; Once the required models are downloaded, the application can work without an internet connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freedom and Flexibility:&lt;/strong&gt; Users can experiment with different models and customize how stories are generated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long-Term Preservation:&lt;/strong&gt; The project does not depend entirely on one commercial AI service. Its local data and open technologies give it a more independent foundation.&lt;/p&gt;

&lt;p&gt;I particularly liked the idea that technology could help preserve something as personal as a family memory without requiring those memories to leave someone's computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  ❤️ What Makes This Project Special?
&lt;/h2&gt;

&lt;p&gt;AI is often used to generate content, automate tasks, or improve productivity.&lt;/p&gt;

&lt;p&gt;But what if we used it to preserve something meaningful?&lt;/p&gt;

&lt;p&gt;GhostArchive explores a different use of AI: helping people hold on to the stories, voices, and experiences that connect generations.&lt;/p&gt;

&lt;p&gt;Technology continues to evolve, but the memories we share with one another are worth preserving.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Future Improvements
&lt;/h2&gt;

&lt;p&gt;There are several features I would love to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multilingual transcription for regional languages such as Telugu.&lt;/li&gt;
&lt;li&gt;Family memory timelines.&lt;/li&gt;
&lt;li&gt;Voice-based memory search.&lt;/li&gt;
&lt;li&gt;Support for photographs and scanned letters.&lt;/li&gt;
&lt;li&gt;Automatic organization of memories by people, places, and events.&lt;/li&gt;
&lt;li&gt;Exporting memories into a digital family history book.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The most interesting thing about AI is not just what it can create, but also what it can help us preserve.&lt;/p&gt;

&lt;p&gt;With GhostArchive, I wanted to explore how open AI technologies could make personal memories more accessible, private, and lasting.&lt;/p&gt;

&lt;p&gt;Because sometimes, the most valuable thing a machine can do is help us remember.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A voice may fade, but a story doesn't have to.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Built for:&lt;/strong&gt; Hacktoberfest 2026 – Open-Source AI Challenge, Week 4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Theme:&lt;/strong&gt; Ghost in the Machine&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; GhostArchive – An Offline AI-Powered Family Memory Keeper&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #devchallenges #hf26challenges #opensource #ai&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Wildling 🌿: Discover the Nature You've Been Scrolling Past</title>
      <dc:creator>Lasyapriya Putti</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:41:12 +0000</pubDate>
      <link>https://dev.to/lasyapriya_putti/wildling-what-if-your-next-scroll-became-a-nature-discovery-5ca2</link>
      <guid>https://dev.to/lasyapriya_putti/wildling-what-if-your-next-scroll-became-a-nature-discovery-5ca2</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;p&gt;Think about how often we scroll past pictures of cute birds, beautiful flowers, butterflies, and fascinating insects on our phones.&lt;/p&gt;

&lt;p&gt;We stop to admire them. We like the picture. Maybe we share it with a friend. Then we keep scrolling.&lt;/p&gt;

&lt;p&gt;But have you ever thought about how many of those things are living just a few steps away from you?&lt;/p&gt;

&lt;p&gt;Imagine walking past the same garden every day, your eyes fixed on your phone. You might never notice that the garden is home to dozens of different flowers, birds visiting the trees, butterflies moving between plants, and tiny insects living in places you rarely look.&lt;/p&gt;

&lt;p&gt;You don't need to travel to a forest or visit a national park to experience nature. Sometimes, an entire world of discoveries is waiting in a garden you pass every morning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We have become so used to experiencing nature digitally that we sometimes forget to notice it in real life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to build something that could change that.&lt;/p&gt;

&lt;p&gt;What if, the next time you walked past a flower, instead of scrolling through another post, you stopped for a moment, took a picture, and discovered what it actually was?&lt;/p&gt;

&lt;p&gt;What if a walk became a small adventure? What if you had a reason to explore a little more every day, notice a species you had never seen before, and learn something about the environment around you?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;strong&gt;Wildling — an AI-powered nature explorer designed to turn everyday walks into opportunities for discovery.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 Meet Wildling
&lt;/h2&gt;

&lt;p&gt;Wildling encourages you to step away from passive screen time and actively explore the nature around you.&lt;/p&gt;

&lt;p&gt;The idea is simple: &lt;strong&gt;don't just scroll past nature. Go out and discover it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's what you can do with Wildling.&lt;/p&gt;

&lt;h3&gt;
  
  
  📸 1. Discover and identify species with AI
&lt;/h3&gt;

&lt;p&gt;You notice an unfamiliar flower, a bird sitting on a wall, or an insect resting on a leaf. Instead of wondering what it is and forgetting about it, open Wildling and take or upload a picture.&lt;/p&gt;

&lt;p&gt;Wildling uses AI to compare the image with its species catalogue and suggest possible matches.&lt;/p&gt;

&lt;p&gt;The current catalogue contains &lt;strong&gt;921 species&lt;/strong&gt;, covering categories such as plants, birds, insects, fungi, mammals, reptiles, amphibians, fish, and more.&lt;/p&gt;

&lt;p&gt;You don't need to be a botanist, birdwatcher, or wildlife expert to start exploring. Curiosity is enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔎 2. Explore possible matches
&lt;/h3&gt;

&lt;p&gt;Sometimes identifying a species from a photograph isn't straightforward.&lt;/p&gt;

&lt;p&gt;Wildling ranks candidate species and presents possible matches, giving you a starting point for learning about what you've found.&lt;/p&gt;

&lt;p&gt;The goal isn't to pretend every identification is certain. The catalogue has limitations, and the model can make mistakes, particularly when a species isn't represented well.&lt;/p&gt;

&lt;p&gt;Think of the result as an invitation to investigate further, not a scientific confirmation.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 3. Build your own nature collection
&lt;/h3&gt;

&lt;p&gt;Every discovery can become a memory.&lt;/p&gt;

&lt;p&gt;Wildling includes a collection feature that lets you keep track of the species you've explored and revisit your discoveries.&lt;/p&gt;

&lt;p&gt;Over time, your collection can become a personal record of your encounters with the natural world.&lt;/p&gt;

&lt;p&gt;Instead of remembering only the posts you've liked, you can look back at the things you've actually found around you.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 4. Maintain your exploration streak
&lt;/h3&gt;

&lt;p&gt;Want to make spending time in nature a regular habit?&lt;/p&gt;

&lt;p&gt;Wildling includes streak tracking to encourage you to return to your exploration journey.&lt;/p&gt;

&lt;p&gt;The idea is to build consistency through small actions. You don't need to spend hours outdoors every day. Even a short walk where you deliberately notice something new can be a meaningful start.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏅 5. Earn badges as you explore
&lt;/h3&gt;

&lt;p&gt;Wildling includes badges and progress features that make discovering nature more rewarding.&lt;/p&gt;

&lt;p&gt;As you continue exploring, these features give you milestones to work toward and reasons to keep learning.&lt;/p&gt;

&lt;p&gt;Instead of rewarding how long you remain on an app, the intention is to reward curiosity and exploration.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧭 6. Take on quests
&lt;/h3&gt;

&lt;p&gt;Wildling also includes quests that encourage you to approach nature exploration with a goal.&lt;/p&gt;

&lt;p&gt;Rather than walking past the same surroundings without noticing them, you can use a quest as a prompt to look more carefully and seek out new discoveries.&lt;/p&gt;

&lt;p&gt;It turns the question from “What should I do on my phone?” into “What can I discover outside today?”&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 7. Share your discoveries
&lt;/h3&gt;

&lt;p&gt;Found something interesting? Wildling includes a sharing feature that lets you create shareable cards from your discoveries.&lt;/p&gt;

&lt;p&gt;You can share what you've found with friends and inspire them to look more closely at the nature around them, too.&lt;/p&gt;

&lt;p&gt;Imagine a friend sharing a picture of an unfamiliar flower they discovered in their neighbourhood. It might encourage you to investigate the plants growing along your own street.&lt;/p&gt;

&lt;p&gt;That is the kind of interaction I want to encourage: sharing discoveries that bring our attention back to the real world.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍 The bigger picture
&lt;/h3&gt;

&lt;p&gt;All these features work toward the same goal.&lt;/p&gt;

&lt;p&gt;Wildling isn't trying to replace one endless feed with another. It's meant to give you a reason to open the app, explore something in the real world, learn from the experience, and then put your phone away again.&lt;/p&gt;

&lt;p&gt;You might start by identifying one flower. Tomorrow, you might notice a bird. A few days later, you might find yourself looking more carefully at a garden you've passed hundreds of times.&lt;/p&gt;

&lt;p&gt;The surroundings haven't changed. Your attention has.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Wildling
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://huggingface.co/spaces/LasyapriyaPutti/wildling" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/LasyapriyaPutti/wildling&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a look at the app and try uploading a nature photograph to see what the model suggests.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; [&lt;a href="https://github.com/lasyapriyaputti/wildling.git" rel="noopener noreferrer"&gt;https://github.com/lasyapriyaputti/wildling.git&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Wildling is built with React and Vite, with Python tools for preparing the species catalogue and embeddings.&lt;/p&gt;

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

&lt;p&gt;I wanted to make Wildling more than a static collection of species information. I wanted people to be able to photograph something they encountered and use AI to explore what it might be.&lt;/p&gt;

&lt;p&gt;For the recognition system, I chose &lt;strong&gt;BioCLIP&lt;/strong&gt;, an open-weight vision model designed for biological image understanding.&lt;/p&gt;

&lt;p&gt;Here's how the main components work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Preparing the species catalogue
&lt;/h3&gt;

&lt;p&gt;I prepared a catalogue of 921 species and generated text embeddings for the catalogue entries.&lt;/p&gt;

&lt;p&gt;These embeddings act as reference representations. The application compares an image representation with the species embeddings to find candidate matches.&lt;/p&gt;

&lt;p&gt;Keeping the catalogue and embeddings aligned is essential because each embedding must correspond to the correct species.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bringing BioCLIP into the browser
&lt;/h3&gt;

&lt;p&gt;The model's image encoder was exported to ONNX and integrated with ONNX Runtime Web.&lt;/p&gt;

&lt;p&gt;This allowed the application to run image inference in the browser instead of requiring a dedicated remote inference API for each prediction.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Connecting images to species
&lt;/h3&gt;

&lt;p&gt;When a user submits an image, Wildling preprocesses it and passes it through the image encoder.&lt;/p&gt;

&lt;p&gt;The resulting image representation is compared with the catalogue embeddings. The application ranks the candidate matches and displays the suggested species.&lt;/p&gt;

&lt;p&gt;The current system is catalogue-based, so its predictions depend on the species represented in the catalogue. A high-ranked match should not be treated as a calibrated probability or guaranteed identification.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Building the exploration experience
&lt;/h3&gt;

&lt;p&gt;The frontend uses React and Vite. Around the recognition pipeline, I built the collection, streak, badge, quest, and sharing experiences to encourage people to return to nature exploration.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Testing and deployment
&lt;/h3&gt;

&lt;p&gt;Getting an AI model working in a browser involved more than connecting a few components.&lt;/p&gt;

&lt;p&gt;I had to validate the embeddings, check the ONNX model, manage the browser runtime files, and make sure the production build could load the model and generate predictions.&lt;/p&gt;

&lt;p&gt;The image encoder is approximately 346 MB, which also made deployment and large-file management important parts of the work.&lt;/p&gt;

&lt;p&gt;I deployed Wildling on Hugging Face Spaces and tested that the live application could run its browser-based recognition flow.&lt;/p&gt;

&lt;p&gt;Wildling is still an early version. The catalogue needs continued validation, and the recognition system needs broader testing with real-world photographs. Those are important next steps for making the experience more reliable.&lt;/p&gt;

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

&lt;p&gt;Open innovation made Wildling possible in a way that would have been much harder if I had needed to build everything from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building on existing research
&lt;/h3&gt;

&lt;p&gt;BioCLIP gave me access to a model designed for biological image understanding. Instead of first training a vision model myself, I could focus on integrating the model into a useful application.&lt;/p&gt;

&lt;p&gt;For an individual student developer, that access makes it possible to experiment with specialized AI using resources that would otherwise be difficult to obtain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running inference in the browser
&lt;/h3&gt;

&lt;p&gt;Using ONNX Runtime Web allowed me to build a browser-based inference pipeline without relying on a separate hosted inference API for every image.&lt;/p&gt;

&lt;p&gt;This gives the application more control over image processing and offers a path toward keeping images local. The model and required assets still need to be downloaded, so the whole experience is not automatically offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Making the project open to improvement
&lt;/h3&gt;

&lt;p&gt;Open tools make it easier for developers to understand an implementation, test it, and experiment with different approaches.&lt;/p&gt;

&lt;p&gt;Wildling can benefit from continued improvements to its catalogue, evaluation process, recognition pipeline, and user experience.&lt;/p&gt;

&lt;p&gt;Open innovation doesn't mean the work is finished or every result is correct. It means more people can learn from the work and help make it better.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌿 A Small Change in What We Notice
&lt;/h2&gt;

&lt;p&gt;The next time you walk past a garden, you might be tempted to reach for your phone and start scrolling.&lt;/p&gt;

&lt;p&gt;But what if you looked up instead?&lt;/p&gt;

&lt;p&gt;What if you noticed a flower you've never seen before, followed a butterfly for a few seconds, or wondered which bird was making that sound?&lt;/p&gt;

&lt;p&gt;You don't need to become a wildlife expert. You don't need to travel somewhere extraordinary. You just need to start noticing what's already around you.&lt;/p&gt;

&lt;p&gt;I built Wildling because I believe AI can be useful in ways that don't demand more of our attention, but help us direct it toward things that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal isn't to spend more time using Wildling. It's to spend more time discovering the world that exists beyond it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So the next time you're walking past that familiar garden, put the scrolling on pause.&lt;/p&gt;

&lt;p&gt;There might be a whole world waiting for you to notice it.&lt;/p&gt;

&lt;p&gt;🌱 &lt;strong&gt;Wildling: Discover more. Scroll less. Touch grass.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#devchallenge #hf26challenge #opensource #ai #webdev&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>My friend's kirana store runs out of milk every Sunday. So I gave it a voice.</title>
      <dc:creator>Lasyapriya Putti</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:47:38 +0000</pubDate>
      <link>https://dev.to/lasyapriya_putti/my-friends-kirana-store-runs-out-of-milk-every-sunday-so-i-gave-it-a-voice-3c4k</link>
      <guid>https://dev.to/lasyapriya_putti/my-friends-kirana-store-runs-out-of-milk-every-sunday-so-i-gave-it-a-voice-3c4k</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;My friend Surya runs a &lt;strong&gt;kirana&lt;/strong&gt;: the small neighbourhood grocery store you'll find on almost every street in India. Milk, bread, sugar, dal, biscuits, soap. His shop is a few steps from my house.&lt;/p&gt;

&lt;p&gt;Two problems keep coming back. On Sundays and during festivals, demand jumps: Indian festival sweets and snacks are made from milk, flour and sugar, so those run out first. On other days he sometimes overstocks by mistake: packets get pushed behind other items, look finished, get reordered, and the extra stock expires and goes to waste.&lt;/p&gt;

&lt;p&gt;Nobody is careless here. Running a kirana means making change, serving a queue and answering questions at the same time. Nobody has a free hand to type into inventory software, and that software is in English anyway. So most owners run their stock from memory and gut feeling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KiranaVoice&lt;/strong&gt; is a stock assistant you talk to. One big button, in your own language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You say what happened:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"5 packets milk sold"&lt;/li&gt;
&lt;li&gt;"20 kg sugar aaya" (20 kg of sugar arrived)&lt;/li&gt;
&lt;li&gt;"ఈరోజు 20 కేజీల పంచదార దిగుమతి అయింది"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;You ask what's left:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"milk kitna bacha hai?" (how much milk is left?)&lt;/li&gt;
&lt;li&gt;"How many eggs do we have?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app answers straight away, on screen and out loud. No typing and no menus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It repeats everything back before it saves anything.&lt;/strong&gt; A shop is noisy, and a speech recogniser can mishear. So for every sale or delivery, KiranaVoice says what it understood, for example "Sale: 5 milk", and changes the stock only when the owner taps &lt;strong&gt;Confirm&lt;/strong&gt;. A wrong entry is one tap on &lt;strong&gt;Undo&lt;/strong&gt; away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It warns you before the shelf is empty.&lt;/strong&gt; KiranaVoice looks at past sales, including weekend spikes and festival days. If tomorrow's expected demand is higher than what is on the shelf, it shows an urgent morning alert in the owner's language, with a suggested reorder quantity: &lt;em&gt;"Tomorrow's demand for milk is about 54 packets, but only 18 are left. Order 45 more today!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It works in &lt;strong&gt;11 languages&lt;/strong&gt;: Telugu, Hindi, Tamil, Kannada, Bengali, Marathi, Gujarati, Malayalam, Punjabi, Hinglish and English. The interface, item names, units and spoken alerts all switch together. It understands several items in one sentence ("2 milk, 3 sugar sold"), spoken numbers ("paanch", "ఐదు") and amounts like "250 gram" or "half".&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://kiranavoice.streamlit.app/" rel="noopener noreferrer"&gt;https://kiranavoice.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on the hosted demo.&lt;/strong&gt; The cloud server has no GPU or Ollama, so the live link uses the rule-based parser and a weekday-average forecast on demo data. The full setup, with Gemma through Ollama and TabPFN, runs on the shop's own machine.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open it in &lt;strong&gt;Chrome or Edge&lt;/strong&gt; and allow the microphone. You can also type, and any of these will work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;5 packets milk sold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2 milk 3 sugar sold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;20 kg sugar aaya&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sugar kitna bacha hai&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Video:&lt;/strong&gt;&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/F637oDcgWK8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Screenshots: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fayh2f0c9a8rp81ci6ycg.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%2Fayh2f0c9a8rp81ci6ycg.png" alt=" " width="800" height="299"&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%2Fct3i4czvzy94gsablqrm.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%2Fct3i4czvzy94gsablqrm.png" alt=" " width="800" height="156"&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%2Fsizm1cwdandrlfvk1tcg.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%2Fsizm1cwdandrlfvk1tcg.png" alt=" " width="800" height="374"&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%2Fbskgmkn8tjastj7lsr5k.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%2Fbskgmkn8tjastj7lsr5k.png" alt=" " width="800" height="254"&gt;&lt;/a&gt;&lt;/p&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/lasyapriyaputti" rel="noopener noreferrer"&gt;
        lasyapriyaputti
      &lt;/a&gt; / &lt;a href="https://github.com/lasyapriyaputti/KiranaVoice" rel="noopener noreferrer"&gt;
        KiranaVoice
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Voice ─▶ browser speech recognition ─▶ rule-based parser ──┐
                                                            ├─▶ checked against the item catalog
 Unclear speech ─▶ Gemma 2 (2B) via Ollama ─────────────────┘            │
                                                                         ▼
        Stock question ─▶ answered at once       Sale / delivery ─▶ read back aloud ─▶ Confirm ─▶ SQLite
                                                                                                    │
                                              sales history ─▶ TabPFN (or weekday average) ─▶ morning alert
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The AI is not the whole system.&lt;/strong&gt; If a plain program can decide something reliably, a plain program should. Telling "sold" from "aaya", reading "250 gram", or knowing that "kg" is a unit and not an item are all done by ordinary code. &lt;strong&gt;Gemma 2 (2B) via Ollama&lt;/strong&gt; is asked only when the rules understand nothing. Its answer must then match a real item in the catalog, or it is thrown away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system never guesses.&lt;/strong&gt; If it doesn't understand, it says so and asks again. It will not quietly record "milk" because that was the default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forecasting.&lt;/strong&gt; For every item with enough history, I train &lt;strong&gt;TabPFN&lt;/strong&gt; on small tabular features: day of week, weekend, festival, same day last week and a rolling average. TabPFN is built for small datasets, and one shop's history is small. With too little data it falls back to a weekday/weekend average. Each alert includes a range and a reorder amount with a 15% safety buffer. Every confirmed sale feeds back into the history. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Python, Streamlit, SQLite (WAL mode), Ollama with Gemma 2 2B, TabPFN, and a small custom browser component for the mic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What testing taught me.&lt;/strong&gt; My first version had bugs that would have quietly wrecked a real shop's stock:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It looked up items with &lt;code&gt;LIKE '%Milk%'&lt;/code&gt;, so one sale could change several products.&lt;/li&gt;
&lt;li&gt;It treated the word "kg" as proof that the item was sugar.&lt;/li&gt;
&lt;li&gt;When it understood nothing, it recorded Milk anyway.&lt;/li&gt;
&lt;li&gt;Every spoken sentence reloaded the whole page and reset the language.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I fixed each one with exact item matching, unit words ignored when choosing items, an explicit "I didn't understand", and a mic component that hands text straight to Python. I also made every confirmation idempotent, so a double tap can't record a sale twice.&lt;/p&gt;

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

&lt;p&gt;A kirana's daily sales are its business. Here is what open tooling made possible that a closed API would not have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The shop's data stays in the shop.&lt;/strong&gt; Stock and sales live in a local SQLite file, and the AI can run on the owner's own machine. Nothing has to be sent to a company's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No meter running.&lt;/strong&gt; There is no per-request fee. Kirana margins are thin, and a bill that grows with every sale would end the idea before it started.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can change it.&lt;/strong&gt; Adding a language means adding item names and keywords, not retraining or renegotiating anything. A better open model can replace Gemma without touching the rest of the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can get more private.&lt;/strong&gt; Chrome's speech recognition still sends audio to Google, so KiranaVoice is &lt;strong&gt;not fully offline yet&lt;/strong&gt;. The fix is an offline Indian-language speech model from the open Whisper family, and only open weights let me plan that.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Known Limits, and What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 2 2B is still learning Telugu, Tamil and Kannada.&lt;/strong&gt; That's why plain rules handle most sentences, with Gemma as a safety net. Next: test a larger open model and fine-tune on real shop speech.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speech recognition still needs internet,&lt;/strong&gt; because Chrome sends audio to Google. Next: an offline Indian-language model from the open Whisper family.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The forecast on the demo uses sample sales history,&lt;/strong&gt; not real sales. It learns from every confirmed sale, so it improves with use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand-name items&lt;/strong&gt; still appear in English. Next: regional-language names, which native speakers can contribute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The morning alert shows when the app is opened.&lt;/strong&gt; Next: WhatsApp delivery, since that's where owners actually look.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beyond that, I plan to add &lt;strong&gt;udhaar&lt;/strong&gt; (credit given to regular customers) tracking by voice.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Use of TabPFN&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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