<?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: Kumar Saurav</title>
    <description>The latest articles on DEV Community by Kumar Saurav (@saurav10codes).</description>
    <link>https://dev.to/saurav10codes</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%2F4161717%2F98d57df1-9e2a-42a3-8c71-aeb04165e20b.jpg</url>
      <title>DEV Community: Kumar Saurav</title>
      <link>https://dev.to/saurav10codes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saurav10codes"/>
    <language>en</language>
    <item>
      <title>PhantomLog: Turning Offline Smart Home Data into Local Ghost Stories</title>
      <dc:creator>Kumar Saurav</dc:creator>
      <pubDate>Sat, 31 Oct 2026 07:14:15 +0000</pubDate>
      <link>https://dev.to/saurav10codes/phantomlog-turning-offline-smart-home-data-into-local-ghost-stories-g03</link>
      <guid>https://dev.to/saurav10codes/phantomlog-turning-offline-smart-home-data-into-local-ghost-stories-g03</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built PhantomLog, an offline, haunted storyteller that turns your mundane smart home data into personalized, creepy ghost stories about what happened in your house while you were asleep.&lt;/p&gt;

&lt;p&gt;I leaned heavily into the "things that go bump in the night" interpretation of the theme. Most of us have motion sensors, smart thermostats, and door contacts that silently log data 24/7. PhantomLog pulls the 12:00 AM to 6:00 AM sensor logs from a local Home Assistant instance, analyzes the sequence of events (e.g., a temperature drop followed by a hallway motion trigger), and uses a local LLM to weave a terrifying micro-fiction about the "ghost" wandering your halls&lt;/p&gt;

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

&lt;p&gt;Here is a sample output generated on my dashboard when I woke up this morning:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The 3:14 AM Visitor&lt;br&gt;
The house was dead quiet when the living room temperature inexplicably dropped by 3 degrees at 2:45 AM. Whatever it was, it didn't stay there. At 3:14 AM, the hallway motion sensor detected movement—slow, methodical, pacing toward the kitchen. It lingered by the fridge for exactly four minutes before the backdoor contact sensor registered a microscopic vibration. You were fast asleep, but your house knows it wasn't alone.&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

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

&lt;p&gt;PhantomLog is built entirely on open-source, local AI infrastructure to ensure zero latency and complete privacy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Brain: I used Llama-3.1-8B-Instruct as the core narrative engine, heavily prompted to adopt a suspenseful, Gothic horror &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Engine: Inference is handled locally using Ollama, running bare-metal on my home lab server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Harness: I used LangChain in Python to build the agent workflow. The script queries the Home Assistant SQLite database, filters out baseline noise, formats the raw timestamps and sensor names into a readable context window, and feeds it to the local model.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Open innovation is the only reason this project can exist safely. Smart home data is arguably the most intimate digital footprint we have—it maps our sleep schedules, our floor plans, and when we are vulnerable.&lt;/p&gt;

&lt;p&gt;Sending a nightly dump of my family's movement patterns and door lock statuses to a closed, cloud-based API just to generate a fun Halloween story would be a massive privacy violation. By using an open-weight model like Llama 3 running through Ollama, PhantomLog works entirely offline. The "ghost" stays on my local network, the data never touches a server I don't control, and it costs exactly zero dollars in API credits to run every single morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The moment this project truly landed for me was during a test run two nights ago. I woke up, checked the PhantomLog dashboard, and read a genuinely chilling story about "something pacing frantically at the bottom of the basement stairs at 4:12 AM."&lt;/p&gt;

&lt;p&gt;I actually got goosebumps and went to check the basement—only to realize my cat's litter box is down there, and she had the 4 AM zoomies. It turned a completely invisible piece of data into a memorable, spooky morning ritual that perfectly captures the Halloween spirit.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built a tool to generate podcast of any place we visit.</title>
      <dc:creator>Kumar Saurav</dc:creator>
      <pubDate>Sat, 10 Oct 2026 12:51:44 +0000</pubDate>
      <link>https://dev.to/saurav10codes/i-built-a-tool-to-generate-podcast-of-any-place-we-visit-17g8</link>
      <guid>https://dev.to/saurav10codes/i-built-a-tool-to-generate-podcast-of-any-place-we-visit-17g8</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;&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%2Fjkadpuyjdr4d515meafr.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%2Fjkadpuyjdr4d515meafr.png" alt="ss" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;My friend loves hiking near our town in Himachal Pradesh. He dislikes staring at a screen to identify local plants or birds. I built TrailTale to solve this problem. TrailTale is a web application that creates hyper-local audio podcasts. A user types a location into the browser. The application searches the internet for real-time data about local wildlife, geology, and native plants. It writes a short documentary script and converts that text into an audio file. My friend can put her device away and listen to facts about the ground beneath her feet.&lt;/p&gt;

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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://trail-tales-lake.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;trail-tales-lake.vercel.app&lt;/span&gt;
          

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


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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Saurav10codes" rel="noopener noreferrer"&gt;
        Saurav10codes
      &lt;/a&gt; / &lt;a href="https://github.com/Saurav10codes/TrailTales" rel="noopener noreferrer"&gt;
        TrailTales
      &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;Hyper-Local Ecosystem Podcast Generator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A stateless web app that generates personalized audio podcasts about local flora, fauna, and geology based on your location.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/server&lt;/code&gt; - Node.js/Express backend with TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/client&lt;/code&gt; - Vite + React frontend with neo-brutalism UI&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18+&lt;/li&gt;
&lt;li&gt;API keys for: SerpApi, LLM provider (Groq/DigitalOcean)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Environment Variables&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Copy the example env file:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp server/.env.example server/.env&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Fill in your API keys in &lt;code&gt;server/.env&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SERPAPI_KEY&lt;/code&gt; - Get from &lt;a href="https://serpapi.com" rel="nofollow noopener noreferrer"&gt;serpapi.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LLM_API_KEY&lt;/code&gt; - Your LLM provider API key&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LLM_ENDPOINT&lt;/code&gt; - LLM API endpoint (defaults to Groq)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Install server dependencies&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; server &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm install

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Install client dependencies  &lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; ../client &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm install&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Running the App&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Terminal 1 (Server):&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; server &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Terminal 2 (Client):&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; client &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The app will be available at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend: &lt;a href="http://localhost:5173" rel="nofollow noopener noreferrer"&gt;http://localhost:5173&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Backend: &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How It Works&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;User enters a location&lt;/li&gt;
&lt;li&gt;Server searches for local ecosystem…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Saurav10codes/TrailTales" 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;I built a stateless architecture using Node.js and React. The frontend uses a bold yellow design. The backend relies on an open-source pipeline.   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SerpApi runs three concurrent web searches for wildlife, geology, and plant data.&lt;/li&gt;
&lt;li&gt;The backend sends this data to the Groq API running the open-weight Llama 3.3 70B model.&lt;/li&gt;
&lt;li&gt;The model writes a 300-word conversational script about the specific location.&lt;/li&gt;
&lt;li&gt;The system passes the text to Transformers.js.&lt;/li&gt;
&lt;li&gt;Transformers.js runs the Xenova/speecht5_tts model locally on the server to generate a WAV audio file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system returns the audio buffer to the frontend audio player. The process takes roughly 20 seconds.   &lt;/p&gt;

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

&lt;p&gt;Open models made this project possible and affordable. The system generates high-quality text using Llama 3.3 without expensive proprietary fees. Transformers.js runs the text-to-speech conversion locally on the server. A closed text-to-speech API charges per character. The open-source model allows TrailTale to generate infinite audio for free. Developers can host this application anywhere and run the models directly on their own hardware. This keeps user location data private and reduces reliance on paid services.   &lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of SerpApi&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I built a platform for my grandma (and others) so that they can upload their voice notes for a recipe and get a structured recipe</title>
      <dc:creator>Kumar Saurav</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:33:57 +0000</pubDate>
      <link>https://dev.to/saurav10codes/i-built-a-platform-for-my-grandma-and-others-so-that-they-can-upload-their-voice-notes-for-a-545</link>
      <guid>https://dev.to/saurav10codes/i-built-a-platform-for-my-grandma-and-others-so-that-they-can-upload-their-voice-notes-for-a-545</guid>
      <description>&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%2Fuoctc7kwc79s9ferxsiu.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%2Fuoctc7kwc79s9ferxsiu.png" alt="Screenshot" width="800" height="401"&gt;&lt;/a&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;I built the Grandma Recipes web application to organize my family history. This software converts spoken voice recordings into structured Markdown documents. I designed this project specifically for my mother. She wants to record and preserve her old family recipes. She speaks the instructions directly into her phone. The application processes the audio and creates a clean text file. My mother no longer loses her scattered audio notes.&lt;/p&gt;

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

&lt;p&gt;You can view the live application through the provided link. The visual interface uses a neo-brutalism design style. It features bold borders and bright yellow accents.&lt;br&gt;
&lt;a href="https://grandma-recipes-psi.vercel.app/" rel="noopener noreferrer"&gt;Link&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/Saurav10codes" rel="noopener noreferrer"&gt;
        Saurav10codes
      &lt;/a&gt; / &lt;a href="https://github.com/Saurav10codes/grandma-recipes" rel="noopener noreferrer"&gt;
        grandma-recipes
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Made for HacktoberFest Challenge 1
    &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;Grandma Recipes 🍲&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Speak a recipe → get it transcribed and formatted as Markdown. Runs &lt;strong&gt;100% locally&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Whisper tiny&lt;/strong&gt; (faster-whisper, CPU int8) — auto-downloads on first run (~75 MB)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ollama locally&lt;/strong&gt; for full offline mode&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FastAPI&lt;/strong&gt; backend&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;React + Vite&lt;/strong&gt; frontend (neo-brutalism UI)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prerequisites&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Python 3.9+&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node.js 18+&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FFmpeg: &lt;code&gt;sudo apt install ffmpeg&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;For local mode (no API calls):&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; installed and running (&lt;code&gt;ollama serve&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run Locally&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Backend&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Make sure Ollama is running: ollama serve&lt;/span&gt;

&lt;span class="pl-c1"&gt;cd&lt;/span&gt;  backend

pip  install  -r  requirements.txt

uvicorn  main:app  --reload
&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Frontend&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt;  frontend

npm  install

npm  run  dev
&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:5173" rel="nofollow noopener noreferrer"&gt;http://localhost:5173&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🎙 &lt;strong&gt;Live recording&lt;/strong&gt; — click Record, speak, click Stop&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📁 &lt;strong&gt;File upload&lt;/strong&gt; — drag &amp;amp; drop or select audio files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📝 &lt;strong&gt;Auto-formatting&lt;/strong&gt; — converts speech to structured Markdown recipes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎨 &lt;strong&gt;Neo-brutalism UI&lt;/strong&gt; — bold, minimalist design&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🚀 &lt;strong&gt;100% local&lt;/strong&gt; (optional) — no data leaves your machine&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Record…&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Saurav10codes/grandma-recipes" 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;The frontend architecture uses React and Vite. The backend relies on FastAPI written in Python. I chose the Whisper tiny model for audio transcription. This specific model runs locally on the server CPU. The application converts the browser audio files using ffmpeg. A large language model formats the resulting text into a recipe. I created two different modes for the backend system. One mode connects to the Groq API on a free tier. The alternative mode runs the Ollama software locally. This local mode powers the qwen2.5:1.5b open-weight model.&lt;/p&gt;

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

&lt;p&gt;Open innovation directly protects user privacy. Voice recordings represent deeply personal family data. A closed API sends this sensitive information to unknown corporate servers. My application transcribes the audio locally using open-weight models. Users keep total control of their private family memories. Open models perform exceptionally well on cheap hardware. The Whisper tiny model requires very little system memory. This tiny footprint makes the tool entirely free to host.&lt;/p&gt;

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

&lt;p&gt;I am entering the Best Use of Render prize category. I deployed the entire application using Render free tiers. The React frontend runs smoothly on a static site. The FastAPI backend operates inside a Docker web service.&lt;/p&gt;

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