<?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: Anirudha Basu Thakur</title>
    <description>The latest articles on DEV Community by Anirudha Basu Thakur (@ani0811).</description>
    <link>https://dev.to/ani0811</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%2F4159023%2Feae573b4-c21a-4947-a1e3-30f8229998b7.jpg</url>
      <title>DEV Community: Anirudha Basu Thakur</title>
      <link>https://dev.to/ani0811</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ani0811"/>
    <language>en</language>
    <item>
      <title>Unsaid: A 100% Local-First AI Reflection Room I Built for a Friend</title>
      <dc:creator>Anirudha Basu Thakur</dc:creator>
      <pubDate>Sun, 04 Oct 2026 14:59:55 +0000</pubDate>
      <link>https://dev.to/ani0811/unsaid-a-100-local-first-ai-reflection-room-i-built-for-a-friend-29ea</link>
      <guid>https://dev.to/ani0811/unsaid-a-100-local-first-ai-reflection-room-i-built-for-a-friend-29ea</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;We all have moments where our thoughts run faster than our ability to speak them. &lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Unsaid&lt;/strong&gt; for a close friend who struggles with severe ADHD, racing thoughts, and chronic late-night overthinking. When overwhelmed, their brain gets trapped in intense cognitive loops—thoughts so tangled and raw that trying to articulate them to another human feels impossible or terrifying. They worry about burdening people, being misunderstood, or facing judgment. &lt;/p&gt;

&lt;p&gt;At the same time, they are fiercely guarded about their personal privacy. They refuse to use mainstream cloud AI tools or therapy chatbots because the thought of typing their deepest anxieties and personal confessions into a remote server owned by a corporation that logs prompts, trains models, or risks data leaks felt like a complete non-starter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unsaid&lt;/strong&gt; is a &lt;strong&gt;100% local-first AI reflection room and conversational sounding board&lt;/strong&gt;. It gives them a safe, distraction-free sanctuary to speak or type freely, untangle racing thoughts, and receive empathetic cognitive reframing without a single byte of data leaving their machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🎙️ &lt;strong&gt;Voice-First Dictation via Handy&lt;/strong&gt;: Powered by local &lt;code&gt;whisper.cpp&lt;/code&gt;, allowing them to speak freely without looking at a screen when typing feels like too much friction.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Local Cognitive Reframing with Google Gemma 3 4B&lt;/strong&gt;: Connects to open weights running on local LM Studio or Ollama with zero external telemetry.&lt;/li&gt;
&lt;li&gt;🎧 &lt;strong&gt;Auditory Reflection Companion&lt;/strong&gt;: Integration for soothing, human-like voice responses (supporting both local speech synthesis and ElevenLabs voice companion audio).&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Bilingual Interface (Web &amp;amp; Monospace Terminal)&lt;/strong&gt;: A sleek glassmorphic web interface, plus an interactive terminal CLI shell for when they want to decompress inside their coding environment.&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Absolute Zero-Cloud Privacy&lt;/strong&gt;: Everything stays in local memory/IndexedDB, with client-side export and an emergency "Burn Session" button that securely purges all data in one click.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application&lt;/strong&gt;: &lt;a href="https://ani0811.github.io/unsaid/" rel="noopener noreferrer"&gt;ani0811.github.io/unsaid&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Documentation &amp;amp; Interactive Manual&lt;/strong&gt;: &lt;a href="https://ani0811.github.io/unsaid/website/index.html" rel="noopener noreferrer"&gt;ani0811.github.io/unsaid/website/index.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Visual Walkthrough &amp;amp; Screenshots
&lt;/h3&gt;

&lt;h4&gt;
  
  
  The Reflection Room (Calm, Minimal, Distraction-Free)
&lt;/h4&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%2F1wwdjdn7h2p995j762xe.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%2F1wwdjdn7h2p995j762xe.png" alt="Unsaid Dashboard" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Empathetic Conversational Sounding Board
&lt;/h4&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%2Fxxp4qh78bnmvzjxgjfmt.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%2Fxxp4qh78bnmvzjxgjfmt.png" alt="Conversational Interface" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Local Model &amp;amp; Voice Dictation Configuration
&lt;/h4&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%2F0b7tgn9c802n8bk4cuxn.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%2F0b7tgn9c802n8bk4cuxn.png" alt="Settings and Audio" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Terminal Companion for Developers
&lt;/h4&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%2Fhq880d7x2kxtqn9zs81u.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%2Fhq880d7x2kxtqn9zs81u.png" alt="Terminal CLI Shell" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Mobile Responsive Experience
&lt;/h4&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%2F0rw6p36rbiapw9h0g6r7.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%2F0rw6p36rbiapw9h0g6r7.png" alt="Mobile Responsive UI" width="627" height="717"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Unsaid is fully open source under the permissive &lt;strong&gt;MIT License&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Ani0811/unsaid" rel="noopener noreferrer"&gt;https://github.com/Ani0811/unsaid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clone and run locally in seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Ani0811/unsaid.git
&lt;span class="nb"&gt;cd &lt;/span&gt;unsaid
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Unsaid was engineered from the ground up as a pure offline-capable, local-first stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Friend's Voice / Thoughts ]
              │
              ▼
[ Local Whisper Engine via Handy ]
              │
              ▼
[ Unsaid Desktop UI (React 19 + TypeScript + Vite) ]
              │
              ├── Local OpenAI-compatible API ──► [ LM Studio / Ollama ]
              │                                           │
              │                                           ▼
              │                                  [ Google Gemma 3 4B ]
              │                                  (Local weights inference)
              │
              ├── Audio Synthesis ──────────────► [ ElevenLabs Companion ]
              │
              └── Dual Local Storage ───────────► [ IndexedDB / ~/.unsaid ]
                                                  (Zero telemetry / Zero cloud)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Open AI Brain: Google Gemma 3 4B on LM Studio
&lt;/h3&gt;

&lt;p&gt;For the conversational engine, I chose &lt;strong&gt;Google's Gemma 3 4B&lt;/strong&gt; open-weight model running locally through LM Studio (&lt;code&gt;http://localhost:1234/v1&lt;/code&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why Gemma 3 4B?&lt;/strong&gt;: It strikes the perfect balance between nuanced emotional empathy, cognitive reasoning, and local hardware feasibility. It runs smoothly on a consumer laptop with 8GB RAM without overheating the machine or draining battery life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Empathetic System Prompting&lt;/strong&gt;: Gemma 3 was tuned to act not as an advice dispenser or generic corporate assistant, but as an active listener using non-violent communication (NVC) and cognitive reframing techniques: asking clarifying questions, reflecting feelings, and helping identify cognitive distortions without being patronizing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Speech Dictation: Handy (Whisper.cpp Engine)
&lt;/h3&gt;

&lt;p&gt;Typing when experiencing cognitive overload can feel exhausting. We integrated &lt;strong&gt;Handy&lt;/strong&gt;, a blazing-fast local speech-to-text dictation tool powered by &lt;code&gt;whisper.cpp&lt;/code&gt;. The user holds a hotkey or clicks the microphone, speaks in stream-of-consciousness, and their raw thoughts are transcribed into the reflection prompt in real time.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Voice Companion Audio: ElevenLabs &amp;amp; Speech Synthesis
&lt;/h3&gt;

&lt;p&gt;Reading dense paragraphs of text can induce additional eye fatigue when someone is already stressed. Unsaid includes an auditory reflection mode that speaks thoughts back in a soothing, natural cadence, integrating ElevenLabs' natural conversational voices alongside browser-native speech synthesis.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Modern Web UI &amp;amp; Terminal Shell
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Stack&lt;/strong&gt;: Built with React 19, TypeScript, Vite, and Tailwind CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aesthetic&lt;/strong&gt;: Deep dark slate themes, subtle glassmorphic blurs, and calm neutral accents designed to reduce sensory stimulation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal CLI Mode&lt;/strong&gt;: A retro monospace terminal view accessible directly in the browser or via &lt;code&gt;npm run shell&lt;/code&gt; for developers who feel more at home in a command line prompt.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Open innovation and open-weight models weren't just a technical choice for this project—&lt;strong&gt;they were the only reason this project could exist at all&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is why open models matter so profoundly when building for human vulnerability:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy is Emotional Safety
&lt;/h3&gt;

&lt;p&gt;When someone shares their most fragile, unvarnished thoughts—anxieties they are afraid to tell even their closest friends—they cannot and should not trust a third-party cloud API. Closed APIs log requests, store telemetry for trust &amp;amp; safety audits, and operate on remote servers. With open-weight models like &lt;strong&gt;Gemma 3&lt;/strong&gt;, inference happens strictly inside local RAM. The physical wire can be unplugged. The Wi-Fi can be off. The thoughts never leave the room.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Independence from Corporate Censorship &amp;amp; Canned Responses
&lt;/h3&gt;

&lt;p&gt;Closed commercial models frequently suffer from "helpful assistant" syndrome: when you express genuine anguish, they often trigger rigid safety filters or spew boilerplate corporate disclaimers that make the person feel alienated and treated like a ticket. Open weights allow builders to craft custom emotional guardrails and genuine warmth tailored to what their friend actually needs to hear.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Zero Cost Barrier
&lt;/h3&gt;

&lt;p&gt;A friend in distress shouldn't have to worry about whether they have enough API credits left on their credit card or whether a monthly subscription will renew. Open-source models run forever for free on existing hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  What My Friend Said When I Handed It Over
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The hardest part of having ADHD for me isn't focusing on work—it's the silence late at night when ten different threads of anxiety start fighting for attention. I always wanted to journal, but typing into an empty Google Doc made me feel exposed, and talking to ChatGPT felt like talking to a surveillance camera with a customer service voice.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Unsaid is the first time I felt like I had a door I could shut behind me. Being able to just hit the mic, ramble about why I felt stuck, and have Gemma reflect it back to me calmly—without anything touching the internet—let me breathe again. It's on my desktop now."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;This project was built with the assistance of an agentic workflow through DevRelay. You can explore the full interactive transcript:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://dev.to/agent_sessions/building-unsaid-100-local-first-ai-reflection-room-with-gemma-3-4b-handy-a9vj2c"&gt;View the DevRelay Agent Session Transcript (#457)&lt;/a&gt;&lt;/strong&gt;&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; ($200 Featured Category): Deep integration of Google's Gemma 3 4B open weights via LM Studio/Ollama as the local cognitive reflection engine.&lt;/li&gt;
&lt;li&gt;🎙️ &lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; ($100 Partner Category): Conversational auditory companion mode using high-fidelity human-like voice reflection.&lt;/li&gt;
&lt;li&gt;🌟 &lt;strong&gt;Overall Winner&lt;/strong&gt; ($250): A complete, lovingly crafted solution tackling a real human problem with 100% open-source AI, zero cloud dependencies, and full open-source delivery.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Thank you to DEV, MLH, Google, and the Hacktoberfest 2026 team for championing open AI innovation!&lt;/em&gt;&lt;/p&gt;

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