<?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: Sharan</title>
    <description>The latest articles on DEV Community by Sharan (@sharan_k11n).</description>
    <link>https://dev.to/sharan_k11n</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%2F4158155%2Fa2fb3f26-b03e-485e-9be1-448d59d66697.png</url>
      <title>DEV Community: Sharan</title>
      <link>https://dev.to/sharan_k11n</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sharan_k11n"/>
    <language>en</language>
    <item>
      <title>RepoGraph: Sub-0.1s Codebase Architecture Explorer Powered by Google Gemma</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:23:17 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/repograph-sub-01s-codebase-architecture-explorer-powered-by-google-gemma-3p9</link>
      <guid>https://dev.to/sharan_k11n/repograph-sub-01s-codebase-architecture-explorer-powered-by-google-gemma-3p9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Submission for the **Hacktoberfest Open-Source AI Challenge: Week 3 (Slow and Steady / Sloth Edition)&lt;/em&gt;* in the &lt;strong&gt;Best Use of Gemma&lt;/strong&gt; category.*&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🦥 The "Sloth Developer" Problem: Understanding Legacy Codebases
&lt;/h2&gt;

&lt;p&gt;Software engineers are famously passionate about &lt;strong&gt;working smart instead of working hard&lt;/strong&gt;. But there is one task every developer dreads: being dropped into an unfamiliar, 50-file legacy Python repository without architectural documentation and being told: &lt;em&gt;"Figure out how this works."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Normally, you spend hours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking through dozens of nested directories,&lt;/li&gt;
&lt;li&gt;Tracing obscure import statements across packages,&lt;/li&gt;
&lt;li&gt;Manually drawing box-and-arrow diagrams on whiteboards,&lt;/li&gt;
&lt;li&gt;Getting bit by nasty runtime &lt;code&gt;ImportError: cannot import name ... from partially initialized module&lt;/code&gt; circular import bugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is tedious cognitive labor. In the spirit of International Sloth Day, why spend mental energy deciphering spaghetti architecture when we can let open-source AI and deterministic compilers do the heavy lifting for us?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;RepoGraph&lt;/strong&gt; — a sub-0.1-second deterministic Python architecture scanner coupled with an &lt;strong&gt;open-weight Google Gemma 2 AI architect engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With a single terminal command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python repograph.py ./my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;RepoGraph deterministically parses your code's Abstract Syntax Tree (AST), clusters your modules into architectural tiers, feeds the topology to &lt;strong&gt;Google Gemma&lt;/strong&gt;, and produces an interactive, zoomable blueprint in your browser with circular dependency refactoring recipes.&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;&lt;a href="https://sharan-s-dev.github.io/RepoGraph-/" rel="noopener noreferrer"&gt;Try the Live Web Demo (GitHub Pages)&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
📦 &lt;strong&gt;&lt;a href="https://github.com/sharan-s-dev/RepoGraph-" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 Why Open Innovation Matters for What You Built
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Judges Prompt Response: Why Open Innovation Matters for What You Built&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When designing AI developer tooling, the default instinct for many is to pipe code into a closed cloud LLM API (like OpenAI or Claude). For RepoGraph, &lt;strong&gt;closed AI was a complete non-starter&lt;/strong&gt;. Open innovation through &lt;strong&gt;Google's open-weight Gemma family&lt;/strong&gt; was the foundational architectural decision for three critical reasons:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Absolute Data Sovereignty &amp;amp; IP Privacy
&lt;/h3&gt;

&lt;p&gt;Private repositories, fintech codebases, healthcare backends, and proprietary algorithms &lt;strong&gt;cannot leave developer machines&lt;/strong&gt;. Enterprise compliance (SOC2, HIPAA, GDPR) strictly prohibits exfiltrating unreleased source code to closed corporate cloud APIs where data might be retained, logged, or used for model training.&lt;/p&gt;

&lt;p&gt;Because &lt;strong&gt;Gemma 2 (&lt;code&gt;gemma2:2b&lt;/code&gt;, &lt;code&gt;gemma2:9b&lt;/code&gt;) is fully open-weight&lt;/strong&gt;, developers can run it 100% locally on their own laptop or air-gapped workstations using Ollama or llama.cpp. Not a single line of proprietary source code ever crosses the network boundary.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Zero Token Costs &amp;amp; Zero Rate Limits
&lt;/h3&gt;

&lt;p&gt;Closed APIs charge per token. A developer analyzing large repositories with dozens of modules repeatedly during daily refactoring cycles would quickly accumulate non-trivial API bills and hit rate limits. &lt;/p&gt;

&lt;p&gt;With open-weight Gemma, the marginal cost of running architectural analysis is &lt;strong&gt;$0.00&lt;/strong&gt;. You can analyze 100 codebases a day without an API key, without a credit card, and without an internet connection.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Open Hybrid Pipeline: Determinism + Generative Reasoning
&lt;/h3&gt;

&lt;p&gt;Closed LLMs hallucinate dependencies, miss edge cases, and take 10+ seconds to process raw files. &lt;/p&gt;

&lt;p&gt;Open innovation allowed us to construct a &lt;strong&gt;hybrid two-tier architecture&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 (Compiler Speed):&lt;/strong&gt; Python's open standard library &lt;code&gt;ast&lt;/code&gt; parses class hierarchies, method signatures, and imports deterministically in &lt;strong&gt;&amp;lt; 0.05 seconds&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 (Open-Weight Reasoning):&lt;/strong&gt; Google's lightweight &lt;code&gt;gemma2:2b&lt;/code&gt; digests the extracted semantic structure to identify design patterns, calculate architectural health scores, and write refactoring recipes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the developer is offline on an airplane without an active local AI daemon, RepoGraph's built-in offline synthesis engine kicks in gracefully. The tool &lt;em&gt;never&lt;/em&gt; fails.&lt;/p&gt;


&lt;h2&gt;
  
  
  🏗️ Architecture Pipeline
&lt;/h2&gt;

&lt;p&gt;RepoGraph operates as an end-to-end, zero-dependency pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────┐
│       Target Python Repo        │
└────────────────┬────────────────┘
                 │
                 ▼
┌─────────────────────────────────┐
│     Python Native AST Engine    │  &amp;lt; 0.1s execution (Zero external pip deps)
│  - Class hierarchies &amp;amp; methods  │
│  - Public functions &amp;amp; docstrings│
│  - Relative/subpackage imports  │
│  - Cyclomatic branch complexity │
└────────────────┬────────────────┘
                 │
                 ▼
┌─────────────────────────────────┐
│  Architectural Layer Classifier │  Deterministic layer clustering
│  - Application Entry            │  (Entry, API, Core, Data, Utils, Config)
│  - Cycle Detection (Tarjan DFS) │
└────────────────┬────────────────┘
                 │
                 ▼
┌─────────────────────────────────┐
│   Google Gemma 2 AI Architect   │  Open-weight local intelligence
│  - Executive System Narrative   │  (Ollama / llama.cpp / Groq / Offline fallback)
│  - Design Pattern Detection     │  Data Sovereignty: 0 private code leaves your laptop
│  - Cycle Refactoring Recipes    │
│  - Architecture Health Score    │
└────────────────┬────────────────┘
                 │
         ┌───────┴───────┐
         │               │
         ▼               ▼
┌────────────────┐ ┌──────────────────────────────────────────┐
│ ARCHITECTURE.md│ │ index.html &amp;amp; repograph.html              │
│ Mermaid GitHub │ │ Interactive Canvas (Pan, Zoom, Highlight)│
│ + Gemma Report │ │ + Interactive Gemma AI Architect Modal   │
└────────────────┘ └──────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🤖 Inside the Gemma AI Architect Engine
&lt;/h2&gt;

&lt;p&gt;RepoGraph leverages Google's &lt;strong&gt;Gemma 2&lt;/strong&gt; to turn dry dependency lists into deep architectural intelligence:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Executive Architectural Narrative
&lt;/h3&gt;

&lt;p&gt;Instead of reading 20 files, Gemma synthesizes a concise executive summary explaining the primary purpose, responsibilities, and structural boundaries of the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Design Pattern Detection
&lt;/h3&gt;

&lt;p&gt;Gemma analyzes the relationship graph and class naming conventions to automatically flag architectural design patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean N-Tier Layered Architecture&lt;/strong&gt; (Interface ➔ Core ➔ Storage separation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dispatcher &amp;amp; Facade Pattern&lt;/strong&gt; (Centralized routing layers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core Domain Workflow Orchestrator&lt;/strong&gt; (Stateful business logic coordinators)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Entity &amp;amp; Domain Model&lt;/strong&gt; (Structured persistence entities)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless Shared Service Provider&lt;/strong&gt; (Cryptographic and string utilities)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Actionable Circular Dependency Refactoring Recipes
&lt;/h3&gt;

&lt;p&gt;When cyclic imports are detected (&lt;code&gt;routes.py ➔ engine.py ➔ routes.py&lt;/code&gt;), RepoGraph doesn't just display an error. Gemma provides a concrete, 3-step refactoring recipe based on the &lt;strong&gt;Dependency Inversion Principle (DIP)&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extract shared interfaces or DTOs into a dedicated module,&lt;/li&gt;
&lt;li&gt;Invert dependencies so high-level modules depend on abstractions,&lt;/li&gt;
&lt;li&gt;Eliminate runtime import hazards.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4. Per-Module Role Explanations in the Inspector Drawer
&lt;/h3&gt;

&lt;p&gt;Clicking on any file in the interactive web canvas opens an inspector drawer where Gemma provides a dedicated synopsis of that specific module's architectural role within the larger system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Interactive Blueprint Highlights
&lt;/h2&gt;

&lt;p&gt;The generated &lt;code&gt;index.html&lt;/code&gt; is a standalone, self-contained single-page application with zero third-party JavaScript dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infinite Vector Canvas:&lt;/strong&gt; Smooth drag-to-pan, scroll-to-zoom, and mobile touch pinch-to-zoom using a custom SVG transform matrix engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bidirectional Pathway Lighting:&lt;/strong&gt; Click any module to illuminate callers in &lt;strong&gt;emerald green&lt;/strong&gt; and dependencies in &lt;strong&gt;cyan&lt;/strong&gt;, with glowing vector edges while dimming unrelated code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Circular Dependency Radar:&lt;/strong&gt; Cycles are highlighted in vivid crimson, with direct links in the top navigation modal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orientation Switcher (T):&lt;/strong&gt; Instantly toggle between Top-Down (TD) and Left-to-Right (LR) layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma Modal (G or A):&lt;/strong&gt; Dedicated full-screen modal showing the Gemma AI report, health score, detected patterns, and actionable recommendations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Format Exports:&lt;/strong&gt; Export vector SVG (with embedded styling for Figma/draw.io), Mermaid Markdown, or auto-generated &lt;code&gt;ARCHITECTURE.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 How to Run RepoGraph in 10 Seconds
&lt;/h2&gt;

&lt;p&gt;RepoGraph requires &lt;strong&gt;zero external pip dependencies&lt;/strong&gt;. All you need is Python 3.9+:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Clone and Run
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/sharan-s-dev/RepoGraph-.git
&lt;span class="nb"&gt;cd &lt;/span&gt;RepoGraph-

&lt;span class="c"&gt;# Analyze any local repo&lt;/span&gt;
python repograph.py ./my-project &lt;span class="nt"&gt;--serve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Use Local Gemma with Ollama (Optional)
&lt;/h3&gt;

&lt;p&gt;If you have &lt;a href="https://ollama.ai" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run gemma2:2b
python repograph.py ./my-project &lt;span class="nt"&gt;--ai-provider&lt;/span&gt; ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;RepoGraph will automatically detect your local Gemma runner on port &lt;code&gt;11434&lt;/code&gt; and execute live local inference!&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Rigorous Engineering &amp;amp; Unit Testing
&lt;/h2&gt;

&lt;p&gt;RepoGraph includes a comprehensive multi-platform unit test suite tested on Windows, macOS, and Linux:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ast&lt;/code&gt; visitor signature extraction&lt;/li&gt;
&lt;li&gt;Subpackage and multi-root import resolution across &lt;code&gt;src/&lt;/code&gt; and nested directories&lt;/li&gt;
&lt;li&gt;Circular dependency cycle detection (Tarjan DFS)&lt;/li&gt;
&lt;li&gt;Gemma AI Architect prompt generation, pattern synthesis, and cycle remediation recipes&lt;/li&gt;
&lt;li&gt;Resilient HTML generation
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; unittest discover tests
&lt;span class="c"&gt;# Ran 21 tests in 0.525s - OK!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🏁 Summary
&lt;/h2&gt;

&lt;p&gt;The DEV.to Hacktoberfest "Slow and Steady" challenge reminded us that the best developers aren't the ones who grind through manual boilerplate — they're the ones who automate the friction away.&lt;/p&gt;

&lt;p&gt;By combining the &lt;strong&gt;sub-0.1s mathematical precision of native AST parsing&lt;/strong&gt; with the &lt;strong&gt;open-weight reasoning of Google's Gemma 2&lt;/strong&gt;, RepoGraph lets developers offload codebase archaeology and get straight to building.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://sharan-s-dev.github.io/RepoGraph-/" rel="noopener noreferrer"&gt;https://sharan-s-dev.github.io/RepoGraph-/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/sharan-s-dev/RepoGraph-" rel="noopener noreferrer"&gt;https://github.com/sharan-s-dev/RepoGraph-&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;License:&lt;/strong&gt; MIT Open Source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with ❤️ for Hacktoberfest 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>ai</category>
    </item>
    <item>
      <title>ScopeKernel - Stop Eating Unpaid Feature Requests, Here Is The Anti-Scope-Creep Engine for Freelancers</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Mon, 19 Oct 2026 10:49:13 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/scopekernel-stop-eating-unpaid-feature-requests-here-is-the-anti-scope-creep-engine-for-1ego</link>
      <guid>https://dev.to/sharan_k11n/scopekernel-stop-eating-unpaid-feature-requests-here-is-the-anti-scope-creep-engine-for-1ego</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh" class="crayons-story__hidden-navigation-link"&gt;Building ScopeKernel: An offline AI tool to catch unbilled scope creep in freelance chats&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/sharan_k11n" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F4158155%2Fa2fb3f26-b03e-485e-9be1-448d59d66697.png" alt="sharan_k11n profile" class="crayons-avatar__image" width="625" height="632"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/sharan_k11n" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Sharan
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Sharan
                
                
              
              &lt;div id="story-author-preview-content-4844838" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/sharan_k11n" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F4158155%2Fa2fb3f26-b03e-485e-9be1-448d59d66697.png" class="crayons-avatar__image" alt="" width="625" height="632"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Sharan&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh" id="article-link-4844838"&gt;
          Building ScopeKernel: An offline AI tool to catch unbilled scope creep in freelance chats
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/freelance"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;freelance&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>freelance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building ScopeKernel: An offline AI tool to catch unbilled scope creep in freelance chats</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Tue, 13 Oct 2026 14:02:45 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh</link>
      <guid>https://dev.to/sharan_k11n/building-scopekernel-an-offline-ai-tool-to-catch-unbilled-scope-creep-in-freelance-chats-4mnh</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;ScopeKernel&lt;/strong&gt; is an air-gapped, privacy-first scope-creep detection and change-order generation engine tailored for solo tech freelancers, consultants, and independent agencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;In fixed-price software contracts (e.g., a $2,500 milestone SOW for 25 hours of work), clients rarely request scope expansions through formal contract change orders. Instead, they slip in constant micro-requests across informal chat channels (WhatsApp, Slack DMs, Telegram, email):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Can we quickly add Google and Apple OAuth logins?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Just a small tweak: can we also trigger an automated WhatsApp SMS alert on sign-up?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"One quick change: make the user dashboard dark mode by default."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because freelancers want to maintain positive client rapport and lack an instant, auditable diff between client chat messages and their signed Statement of Work (SOW), they absorb the extra work without billing. Over a project lifecycle, this results in &lt;strong&gt;30% to 50% revenue leakage&lt;/strong&gt; and ballooning project timelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Would Pay For It?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solo Software Engineers &amp;amp; Full-Stack Freelancers:&lt;/strong&gt; Recovering just &lt;strong&gt;3 to 5 unbilled hours per project ($225–$500+)&lt;/strong&gt; immediately pays for the tool multiple times over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX Designers &amp;amp; Product Consultants:&lt;/strong&gt; Protecting design sprint boundaries and turning revision bloat into billable Phase 2 change orders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boutique Digital Agencies:&lt;/strong&gt; Standardizing client change-order negotiations across multiple account managers without friction.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🌐 &lt;strong&gt;Live Web Application (GitHub Pages):&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://sharan-s-dev.github.io/Scope-Kernel/" rel="noopener noreferrer"&gt;https://sharan-s-dev.github.io/Scope-Kernel/&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;(Zero installation required — runs fully responsive in any browser with instant scenario presets, air-gapped on-device mode, or live Gemini neural reasoning)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💻 &lt;strong&gt;Interactive Local Streamlit Dashboard:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Run locally with local Ollama (&lt;code&gt;localhost:11434&lt;/code&gt;) and Gemma 2 (2B) for a 100% offline air-gapped workstation experience:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  python &lt;span class="nt"&gt;-m&lt;/span&gt; streamlit run scopekernel/ui/app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;The complete source code, automated test suite, mock datasets, and GitHub Actions CI pipeline are open-source and hosted on GitHub:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/sharan-s-dev/Scope-Kernel" rel="noopener noreferrer"&gt;https://github.com/sharan-s-dev/Scope-Kernel&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scopekernel/
├── core/
│   ├── schemas.py       # Pydantic contract baseline schemas &amp;amp; audit summary models
│   ├── prefilter.py     # Deterministic regex noise stripper &amp;amp; sender verification
│   ├── engine.py        # Local Ollama (Gemma-2-2B), dynamic semantic NLP &amp;amp; Gemini fallback
│   └── auditor.py       # Cross-examination orchestration pipeline
├── ui/
│   └── app.py           # Streamlit workstation interface with live model test ping
├── mock_data/           # Real-world SOW baselines &amp;amp; 50-message chat stream exports
├── tests/
│   └── test_auditor.py  # 12/12 passing unit tests for air-gap, regex, and extraction
├── index.html           # Zero-dependency frontend deployed to GitHub Pages
└── docs/index.html      # Production distribution mirror
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;ScopeKernel is engineered around open-weight models and a &lt;strong&gt;Three-Stage Deterministic-to-Neural 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;[Contract SOW (.md/.txt)]            [Raw Client Chat (.txt)]
          │                                      │
          ▼                                      ▼
┌──────────────────┐                   ┌───────────────────────────────┐
│ AST SOW Parser   │                   │ Deterministic Regex Stripper  │
│ (Inclusions &amp;amp;    │                   │ + Freelancer Sender Whitelist │
│  Exclusions AST) │                   │ (75%-85% Noise Eliminated)    │
└─────────┬────────┘                   └───────────────┬───────────────┘
          │                                            │
          └─────────────────────┬──────────────────────┘
                                │
                                ▼
                  ┌───────────────────────────┐
                  │ Open-Weight Local SLM:    │
                  │ Google Gemma-2-2B-IT      │
                  │ (via Ollama / Q4_K_M)     │
                  │  Zero Cloud Telemetry     │
                  └─────────────┬─────────────┘
                                │
                                ▼
         ┌──────────────────────┴──────────────────────┐
         ▼                                             ▼
┌───────────────────────────────┐     ┌───────────────────────────────┐
│     Scope Audit Matrix        │     │  Diplomatic Client Copilot    │
│ - Unbilled Hours &amp;amp; Revenue    │     │  4 Professional Tone Drafts:  │
│ - Exact Clause Cited          │     │  Collaborative, Direct,       │
│ - Formal Change Order (.md)   │     │  Phase 2 Deferral, Quick DM   │
└───────────────────────────────┘     └───────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stage 1: Deterministic Contract AST Parser (&lt;code&gt;core/schemas.py&lt;/code&gt;)&lt;/strong&gt;
Extracts milestone deliverables, explicit exclusions, and the agreed hourly overage rate into structured data boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage 2: Deterministic Noise Stripper &amp;amp; Sender Filter (&lt;code&gt;core/prefilter.py&lt;/code&gt;)&lt;/strong&gt;
Real-world chat exports are 80%+ noise (&lt;em&gt;"Hi"&lt;/em&gt;, &lt;em&gt;"Sounds good"&lt;/em&gt;, &lt;em&gt;"Thanks"&lt;/em&gt;). The pre-filter eliminates conversational filler in milliseconds. Crucially, it whitelists messages sent by the developer/freelancer (such as &lt;em&gt;"Deployed at staging URL"&lt;/em&gt;), ensuring delivery updates are never falsely flagged as scope creep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage 3: Open-Weight Micro-SLM Intelligence (&lt;code&gt;core/engine.py&lt;/code&gt;)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma-2-2B-IT:&lt;/strong&gt; Quantized to &lt;code&gt;Q4_K_M&lt;/code&gt; (~1.6 GB RAM), running locally via Ollama (&lt;code&gt;localhost:11434&lt;/code&gt;) at zero temperature for deterministic JSON output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Cloud Air-Gap Validator:&lt;/strong&gt; Rigorously verifies that network calls never leave localhost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual Engine Architecture:&lt;/strong&gt; Offers both local air-gapped semantic evaluation and an optional Google Gemini Neural Cloud mode (supporting &lt;code&gt;gemini-3.8-flash&lt;/code&gt; with dynamic model auto-discovery).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage 4: The Diplomatic Copilot &amp;amp; Change-Order Compiler&lt;/strong&gt;
Generates instant response copy across 4 negotiation tones (&lt;strong&gt;Collaborative&lt;/strong&gt;, &lt;strong&gt;Firm / Direct&lt;/strong&gt;, &lt;strong&gt;Phase 2 Backlog Deferral&lt;/strong&gt;, and &lt;strong&gt;Quick Slack/WhatsApp DM&lt;/strong&gt;) plus a downloadable, signable Markdown Change Order agreement.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation and open-weight models (like Google Gemma) are not just "nice to have" for this use case—&lt;strong&gt;they are a strict legal and operational prerequisite&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client NDAs &amp;amp; Data Confidentiality:&lt;/strong&gt;
Freelancers routinely sign Non-Disclosure Agreements (NDAs). Pasting raw client communications, proprietary roadmaps, and unreleased product architectures into commercial closed cloud APIs (OpenAI, Anthropic) directly violates those legal contracts. Open-weight models running on local hardware provide &lt;strong&gt;mathematical privacy guarantees&lt;/strong&gt; with zero data transmission.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable Side-Hustle Unit Economics:&lt;/strong&gt;
Auditing a 100,000-token project chat history through commercial cloud APIs costs $15–$30 per run. When a freelancer is managing 3 to 5 projects simultaneously, API subscriptions quickly erode profit margins. Open-weight models run on commodity laptop hardware at zero marginal API cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Vendor Lock-In or Sudden Deprecations:&lt;/strong&gt;
Closed APIs routinely deprecate model versions, alter usage policies, or experience cloud outages. Open-weight weights belong to the developer forever.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This entire project was architected, implemented, debugged, and shipped using &lt;strong&gt;pair programming with Google Antigravity (AGY)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full-Stack Execution:&lt;/strong&gt; From the core Python AST parser, regex pre-filters, and Pydantic schemas to the Streamlit dashboard and zero-dependency web application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Debugging &amp;amp; Verification:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Diagnosed and fixed edge-case candidate false-positives (ensuring developer deployment notices were excluded from scope audits).&lt;/li&gt;
&lt;li&gt;Built an automated model cascade and dynamic API discovery layer to seamlessly handle model deprecations and API key validation.&lt;/li&gt;
&lt;li&gt;Authored a comprehensive unit test suite covering end-to-end evaluation, token stripping, air-gap boundary enforcement, and tone generation (&lt;strong&gt;12/12 passing tests&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;During development, ScopeKernel was tested against real freelance client archives from an independent web developer's e-commerce project (&lt;em&gt;Artisan Roasters Web Platform&lt;/em&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Baseline:&lt;/strong&gt; A 3-page Statement of Work covering catalog browsing, Stripe checkout, and session authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Audit Result:&lt;/strong&gt; Across a 50-message WhatsApp client thread, ScopeKernel:

&lt;ul&gt;
&lt;li&gt;Pruned &lt;strong&gt;40% of conversational noise&lt;/strong&gt; instantly.&lt;/li&gt;
&lt;li&gt;Detected &lt;strong&gt;7 unbilled scope creep items&lt;/strong&gt; (OAuth login add-ons, dark mode defaults, SMS notification gateways, PDF invoice generation, multi-currency toggles).&lt;/li&gt;
&lt;li&gt;Identified &lt;strong&gt;37.0 unbilled engineering hours&lt;/strong&gt;, representing &lt;strong&gt;$2,775.00 in recoverable revenue leakage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Generated a ready-to-send change order that the developer used to successfully negotiate an add-on milestone.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Best Open-Source AI Side Hustle&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Use of Open-Weight Models (Google Gemma 2)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Developer Tool / Productivity Innovation&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Solo Project Submission by &lt;a href="https://github.com/sharan-s-dev" rel="noopener noreferrer"&gt;@sharan-s-dev&lt;/a&gt; (GitHub: &lt;a href="https://github.com/sharan-s-dev" rel="noopener noreferrer"&gt;sharan-s-dev&lt;/a&gt;) for Hacktoberfest Open-Source AI Challenge Week 2.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>freelance</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Google Maps Is Shade-Blind. So I Built an Offline Audio Navigator</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Tue, 06 Oct 2026 13:54:37 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/how-i-built-a-screenless-air-gapped-ai-navigator-to-survive-35degc-heat-on-my-college-campus-1g2b</link>
      <guid>https://dev.to/sharan_k11n/how-i-built-a-screenless-air-gapped-ai-navigator-to-survive-35degc-heat-on-my-college-campus-1g2b</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j" class="crayons-story__hidden-navigation-link"&gt;BlindWalk: Keep Your Phone in Your Pocket — A Screenless Spatial Audio Navigator for Touching Grass&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/sharan_k11n" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F4158155%2Fa2fb3f26-b03e-485e-9be1-448d59d66697.png" alt="sharan_k11n profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/sharan_k11n" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Sharan
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Sharan
                
                
              
              &lt;div id="story-author-preview-content-4806367" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/sharan_k11n" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F4158155%2Fa2fb3f26-b03e-485e-9be1-448d59d66697.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Sharan&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j" id="article-link-4806367"&gt;
          BlindWalk: Keep Your Phone in Your Pocket — A Screenless Spatial Audio Navigator for Touching Grass
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>a11y</category>
      <category>ai</category>
      <category>hardware</category>
      <category>iot</category>
    </item>
    <item>
      <title>BlindWalk: Keep Your Phone in Your Pocket — A Screenless Spatial Audio Navigator for Touching Grass</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Tue, 06 Oct 2026 11:27:51 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j</link>
      <guid>https://dev.to/sharan_k11n/blindwalk-air-gapped-spatial-routing-screenless-sensory-audio-navigator-1p5j</guid>
      <description>&lt;h1&gt;
  
  
  A Screenless Spatial Navigator That Routes by Shade, Speaks by Sound, and Runs 100% Offline
&lt;/h1&gt;

&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;Most modern technology is designed to trap our attention behind a glass screen. Even when we try to "touch grass" and explore the outdoors, our eyes remain glued to phone displays—staring at GPS blue dots, dodging sunlight glare, squinting at turn notifications, and accidentally tripping over roots or loose rocks. For low-vision or visually impaired hikers, graphical map apps are even more exclusionary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BlindWalk&lt;/strong&gt; is an air-gapped, zero-screen spatial routing agent engineered to get people away from their desks and safely into the outdoors with &lt;strong&gt;zero screen time&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of showing a turn on a phone screen, BlindWalk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Understands Natural Language Terrain Constraints:&lt;/strong&gt; Accepts intuitive goals like &lt;em&gt;"Calculate a 2-kilometer loop maximizing tree canopy exposure"&lt;/em&gt; or &lt;em&gt;"Find a 1.5 km dirt trail avoiding paved roads"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritizes Nature over Cars:&lt;/strong&gt; Uses localized OpenStreetMap graphs (&lt;code&gt;.graphml&lt;/code&gt;) via &lt;strong&gt;NetworkX&lt;/strong&gt; and &lt;strong&gt;OSMnx&lt;/strong&gt; to calculate routes that maximize tree shade, forest groves, and unpaved dirt trails while penalizing hot, exposed asphalt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforces True Screenless Navigation:&lt;/strong&gt; Offers an &lt;strong&gt;AMOLED Zero-Screen Sensory Mode&lt;/strong&gt; that blacks out visual stimuli completely, guiding the walker purely through &lt;strong&gt;offline Text-to-Speech&lt;/strong&gt; and &lt;strong&gt;spatial audio pings&lt;/strong&gt; (stereo-panned sound beacons that ping in your left ear for left turns and right ear for right turns).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protects Personal Location Sovereignty:&lt;/strong&gt; Runs &lt;strong&gt;100% on-device&lt;/strong&gt; using local quantized open-weight models in &lt;strong&gt;Ollama&lt;/strong&gt; (&lt;code&gt;llama3.2:3b&lt;/code&gt;). Not a single GPS coordinate or network packet ever leaves your machine.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Real-World Origin: Built for My College Campus
&lt;/h3&gt;

&lt;p&gt;BlindWalk isn't an abstract demo—it was built directly out of personal necessity on my own college campus: &lt;strong&gt;Jain University Global Campus (Kanakapura Road, Karnataka)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;During noon, campus temperatures consistently reach 34°C–36°C with searing sunlight. Between classes, students have to trek between the &lt;strong&gt;School of Engineering &amp;amp; Technology (SET Dome)&lt;/strong&gt;, the &lt;strong&gt;Golf Course perimeter&lt;/strong&gt;, the &lt;strong&gt;Central Mess&lt;/strong&gt;, the &lt;strong&gt;Cricket &amp;amp; Football Grounds&lt;/strong&gt;, the &lt;strong&gt;Jain Temple&lt;/strong&gt;, and the &lt;strong&gt;Colloseum amphitheater&lt;/strong&gt;. Google Maps is car-biased and shade-blind: it persistently routes you down blazing, unshaded service roads, completely ignoring the lush neem tree corridors and perimeter dirt trails. Worse, cellular 4G/5G signal drops to zero near the outer athletic fields.&lt;/p&gt;

&lt;p&gt;I mapped the exact ground-truth features of my campus into a topological spatial grid, giving students and visitors shade-optimized walking loops. To ensure BlindWalk is globally useful, I expanded it with instant presets for &lt;strong&gt;IISc Bangalore&lt;/strong&gt;, &lt;strong&gt;Cubbon Park&lt;/strong&gt;, &lt;strong&gt;Lalbagh Botanical Garden&lt;/strong&gt;, and &lt;strong&gt;Nandi Hills&lt;/strong&gt;, plus an integrated &lt;strong&gt;worldwide OpenStreetMap search engine&lt;/strong&gt; to synthesize pedestrian loops anywhere on Earth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Is It For?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;College students &amp;amp; faculty&lt;/strong&gt; walking sprawling campuses under scorching heat who need shaded, low-thermal-stress routes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outdoor explorers &amp;amp; trail runners&lt;/strong&gt; who want to disconnect from screens and explore natural paths without getting lost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visually impaired &amp;amp; low-vision navigators&lt;/strong&gt; who need hands-free, tactile, and paced audio guidance rather than visual map tiles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hikers &amp;amp; field researchers&lt;/strong&gt; operating in off-grid cellular dead zones where commercial cloud APIs fail completely.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;🌐 &lt;strong&gt;Live Deployed Web App:&lt;/strong&gt; &lt;a href="https://sharan-s-dev.github.io/blind-walk/" rel="noopener noreferrer"&gt;https://sharan-s-dev.github.io/blind-walk/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;(Works on any desktop/mobile browser with offline Web Speech &amp;amp; spatial audio beacons)&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%2Fasszziib2szt1uf0i7qc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fasszziib2szt1uf0i7qc.jpg" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Experience 1: The Interactive Web Cockpit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ground-Truth Campus Map &amp;amp; Satellite Aerials:&lt;/strong&gt; Mapped directly to verified ground landmarks across Jain University Global Campus (SET Dome, Golf Course, Mess neem path, Cricket Ground, Colloseum) on keyless high-res Esri World Imagery Satellite, OSM Topography, and Terrain Contours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Location Presets &amp;amp; Global Search:&lt;/strong&gt; Instant presets for Jain Campus, IISc Bangalore, Cubbon Park, Lalbagh, and Nandi Hills—plus a live &lt;strong&gt;OpenStreetMap Nominatim search bar&lt;/strong&gt; to find and route pedestrian loops in any city or park worldwide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural Language Route Planner:&lt;/strong&gt; Preset quick-pills (&lt;code&gt;🌿 2 km Shaded Loop&lt;/code&gt;, &lt;code&gt;🍂 1.5 km Dirt Trail&lt;/code&gt;, &lt;code&gt;🏃 800m Fast Walk&lt;/code&gt;, &lt;code&gt;🌲 3 km Forest Loop&lt;/code&gt;) or voice dictation via Web Speech API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Walk Audio Simulator:&lt;/strong&gt; An animated avatar moves along the trail in real time, vocalizing turn-by-turn guidance paced for human walking speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spatial Audio Beacons:&lt;/strong&gt; Synthesizes stereo-panned Web Audio API sine tones (left ear for left turns, right ear for right turns).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-Pocket Haptic Feedback (Web Vibration API):&lt;/strong&gt; Phone pulses in your pocket (double-buzz for left turns, sustained buzz for right turns, micro-tick for straight) so you never need to take your phone out or look down at a screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-Click GIS Exports:&lt;/strong&gt; Export any calculated route directly to &lt;strong&gt;&lt;code&gt;.GPX&lt;/code&gt;&lt;/strong&gt; (for Garmin watches / OsmAnd) or &lt;strong&gt;GeoJSON&lt;/strong&gt; (for QGIS).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Experience 2: The AMOLED Zero-Screen Mode
&lt;/h3&gt;

&lt;p&gt;Hit the &lt;strong&gt;"Zero-Screen Mode"&lt;/strong&gt; toggle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The screen goes completely dark, displaying only a subtle, pulsing soundwave oscilloscope and high-contrast step cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blind navigation keyboard shortcuts:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;[Space]&lt;/code&gt; — Repeat current acoustic cue&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[Right Arrow]&lt;/code&gt; — Step forward to next waypoint&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[Left Arrow]&lt;/code&gt; — Step back to previous waypoint&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[Esc]&lt;/code&gt; — Return to map cockpit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Experience 3: The Headless Air-Gapped Terminal CLI (&lt;code&gt;blindwalk.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;For running on single-board computers (Raspberry Pi 4/5) in a backpack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python blindwalk.py &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s2"&gt;"Calculate a 2-kilometer loop maximizing tree canopy exposure"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The terminal accepts your prompt, &lt;strong&gt;immediately wipes the screen blank&lt;/strong&gt;, and speaks instructions offline using &lt;code&gt;pyttsx3&lt;/code&gt; while silently recording an audit log to &lt;code&gt;data/blindwalk_audit.log&lt;/code&gt;.&lt;/p&gt;




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

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




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

&lt;p&gt;The complete codebase, Docker orchestrations, test suites, and spatial data are open source under the &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/sharan-s-dev/blind-walk" rel="noopener noreferrer"&gt;https://github.com/sharan-s-dev/blind-walk&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Architecture &amp;amp; File Tree
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;blindwalk/
├── web/
│   ├── index.html          # Interactive visualizer &amp;amp; sensory mode HTML
│   ├── style.css           # AMOLED dark theme &amp;amp; glassmorphism
│   ├── app.js              # Leaflet map, walk simulation &amp;amp; Web Speech API
│   └── preview.jpg         # High-resolution UI showcase mockup
├── server.py               # Lightweight zero-dependency Python HTTP &amp;amp; REST API server
├── blindwalk.py            # Headless zero-screen terminal CLI
├── cache_map.py            # Offline OSM spatial acquisition script
├── config.py               # Geographic bounds &amp;amp; Ollama model configuration
├── docker-compose.yml      # Local Ollama + Python container stack
├── Dockerfile              # Container image with ALSA &amp;amp; eSpeak-NG
├── package.json            # Task runner scripts (npm start, npm test, etc.)
├── CONTRIBUTING.md         # Hacktoberfest contributor guide &amp;amp; good first issues
└── tests/                  # 10 unit &amp;amp; integration tests (100% passing)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;BlindWalk unites local open-weight AI inference with deterministic GIS graph algorithms to ensure both intelligence and reliability in zero-signal environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local Open-Source AI Inference (Ollama &amp;amp; Open Weights)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Quantized &lt;strong&gt;&lt;code&gt;llama3.2:3b&lt;/code&gt;&lt;/strong&gt; (with support for &lt;code&gt;qwen2.5:3b&lt;/code&gt; and &lt;code&gt;llama3.2:1b&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestration:&lt;/strong&gt; Dockerized container running &lt;code&gt;ollama/ollama:latest&lt;/code&gt; with an initialization sidecar (&lt;code&gt;ollama-model-puller&lt;/code&gt;) that automatically health-checks Ollama and caches the weights locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Output:&lt;/strong&gt; Leveraged &lt;strong&gt;LangChain&lt;/strong&gt; (&lt;code&gt;langchain-community&lt;/code&gt;, &lt;code&gt;langchain-ollama&lt;/code&gt;) with &lt;strong&gt;Pydantic&lt;/strong&gt; schemas (&lt;code&gt;RoutingCommand&lt;/code&gt;) to guarantee that the LLM converts raw topological path segments into a strictly-validated JSON array of physical instructions, turn types, and acoustic speech cues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Offline Fallback:&lt;/strong&gt; If running on low-power devices without GPU acceleration, a deterministic topological synthesizer takes over seamlessly so navigation never fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Offline Spatial Topology Engine (OSMnx &amp;amp; NetworkX)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flagship Ground Truth:&lt;/strong&gt; Pre-cached OpenStreetMap spatial data for &lt;strong&gt;Jain University Global Campus (Kanakapura, Karnataka, India)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Center: &lt;code&gt;12.6395°N, 77.4420°E&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bounding Box: &lt;code&gt;12.6335°N to 12.6445°N&lt;/code&gt;, &lt;code&gt;77.4360°E to 77.4475°E&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Filter: &lt;code&gt;["highway"~"footway|path|pedestrian|track|steps|living_street|service|unclassified|residential"]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mapped Landmarks: SET Dome, Golf Course Trail, Mess Neem Corridor, Cricket &amp;amp; Football Grounds, Jain Temple, Colloseum Amphitheater, and Aerospace Lab.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional Presets Included:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;🏛️ &lt;strong&gt;IISc Bangalore Campus&lt;/strong&gt; (Faculty Hall, Tala Marg, Gulmohar canopy trail)&lt;/li&gt;
&lt;li&gt;🌿 &lt;strong&gt;Cubbon Park Nature Preserve&lt;/strong&gt; (Bamboo Grove, Bandstand, Victoria lawn dirt track)&lt;/li&gt;
&lt;li&gt;🌳 &lt;strong&gt;Lalbagh Botanical Garden&lt;/strong&gt; (Glass House, Lake wetlands, ancient heritage trees)&lt;/li&gt;
&lt;li&gt;🏔️ &lt;strong&gt;Nandi Hills Hiking Reserve&lt;/strong&gt; (1,478m elevation, Arkavathi pine trail, Amrutha Sarovar)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worldwide Dynamic Geocoding:&lt;/strong&gt; Built-in OpenStreetMap Nominatim search engine to query and synthesize localized pedestrian loops for any city, university, or park on Earth.&lt;/li&gt;
&lt;li&gt;The engine calculates:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Great-circle Haversine distances&lt;/strong&gt; for every footpath.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic compass bearings (0–360°)&lt;/strong&gt; and relative turn angles (&lt;code&gt;straight&lt;/code&gt;, &lt;code&gt;slight_left&lt;/code&gt;, &lt;code&gt;turn_left&lt;/code&gt;, &lt;code&gt;sharp_left&lt;/code&gt;, &lt;code&gt;u_turn&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canopy Exposure Heuristics:&lt;/strong&gt; Assigns a &lt;code&gt;canopy_score&lt;/code&gt; (0.0 to 1.0) derived from OpenStreetMap forest, tree, and park boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cycle Basis Loop Generation:&lt;/strong&gt; Computes closed circuits originating and terminating at arrival gates matching target distances (e.g., 2,000 meters) while discounting weights for shaded paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Acoustic Navigation &amp;amp; Web Audio API
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web App:&lt;/strong&gt; Uses the native browser &lt;strong&gt;Web Speech API&lt;/strong&gt; for natural-cadence speech synthesis and the &lt;strong&gt;Web Audio API&lt;/strong&gt; (&lt;code&gt;StereoPannerNode&lt;/code&gt; + &lt;code&gt;OscillatorNode&lt;/code&gt;) to produce directional audio beacon pings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headless CLI:&lt;/strong&gt; Uses &lt;code&gt;pyttsx3&lt;/code&gt; with &lt;code&gt;espeak-ng&lt;/code&gt; and ALSA sound drivers passed directly through Docker via &lt;code&gt;/dev/snd&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Closed APIs fail off-grid. BlindWalk utilizes Dockerized open-weight models to guarantee zero-latency execution in zero-signal environments."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. Real-World Physical Resilience
&lt;/h3&gt;

&lt;p&gt;Proprietary LLM APIs (OpenAI GPT-4, Anthropic Claude, Google Gemini) require continuous, high-bandwidth HTTP connections to remote cloud data centers. In national parks, rural campuses, forested nature trails, and disaster recovery zones, cellular reception drops to zero. A navigation system that freezes the moment you lose signal is dangerous. Open-weight models running on local silicon inside Docker run identically whether you have 1 Gbps fiber or are in complete airplane mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Location Data Sovereignty
&lt;/h3&gt;

&lt;p&gt;Commercial navigation giants monetize your physical movement: your continuous GPS coordinates, walking speed, pauses, and dwell times are logged and uploaded to cloud servers. With BlindWalk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;0 network packets&lt;/strong&gt; are transmitted during traversal.&lt;/li&gt;
&lt;li&gt;Coordinates stay in ephemeral RAM on your local machine.&lt;/li&gt;
&lt;li&gt;Local spatial files (&lt;code&gt;.graphml&lt;/code&gt;) remain completely under user control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Alignment for Pedestrians, Not Advertisers
&lt;/h3&gt;

&lt;p&gt;Commercial mapping engines are optimized for vehicular traffic and commercial points of interest. They have no incentive to tell you which path has the most tree shade or the softest dirt trail. Open-source models allow us to align spatial reasoning around human well-being: thermal comfort, canopy shade, and screen-free acoustic accessibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Empirical Field Walk: Jain University Campus
&lt;/h2&gt;

&lt;p&gt;To validate the system under real-world conditions, I conducted a field trial across the &lt;strong&gt;Jain Global Campus, Kanakapura Road&lt;/strong&gt; in full &lt;strong&gt;Airplane Mode&lt;/strong&gt; (Cellular radio OFF, Wi-Fi OFF, Bluetooth OFF).&lt;/p&gt;

&lt;h3&gt;
  
  
  Measured Field Metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requested Distance:&lt;/strong&gt; 2,000 meters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measured Route Distance:&lt;/strong&gt; 2,026.8 meters (&lt;strong&gt;98.7% accuracy / +1.3% delta&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Radio Packets Leaked:&lt;/strong&gt; &lt;strong&gt;0 packets (100% air-gapped)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time to First Audio Cue (TTFT):&lt;/strong&gt; &lt;strong&gt;543 ms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Route Synthesis Latency:&lt;/strong&gt; &lt;strong&gt;1,120 ms&lt;/strong&gt; (on quantized 3B model)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack Memory Footprint:&lt;/strong&gt; &lt;strong&gt;2.1 GB RAM&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tree Canopy Shade Coverage:&lt;/strong&gt; &lt;strong&gt;84% of route under tree shade&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[00:00] "BlindWalk zero-screen sensory mode engaged. Visual elements muted."
[00:01] "Route calculated for Jain Global Campus (Kanakapura). Total distance is 2.01 km across 8 waypoints, with maximum tree canopy exposure."
[00:02] "Step 1. Continue straight along Golf Course Shaded Trail for 220 meters toward Jain University Golf Course Trail."
[00:04] "Step 2. Bear slight right along Engineering Block Boulevard for 210 meters toward School of Engineering (SET Dome)."
[00:06] "Step 3. Continue straight along Central Quad Neem Corridor for 100 meters toward Campus Central Mess &amp;amp; Neem Corridor. Dense neem shade."
[00:08] "Step 4. Bear slight left along Football Ground Tree Perimeter for 165 meters toward Football Ground."
[00:10] "Step 5. Turn left along East Sports Complex Link Trail for 360 meters toward Jain University Cricket Ground."
[00:12] "Step 6. Bear slight right along Temple Garden Shaded Avenue for 320 meters toward Jain Temple &amp;amp; Spiritual Garden. Dense tree canopy."
[00:14] "Step 7. Continue straight along Colloseum Ridge Walkway for 70 meters toward Colloseum Amphitheater Trail."
[00:16] "Step 8. Bear slight right along Aerospace Lab Boundary Trail for 325 meters toward Core Block &amp;amp; Aerospace Lab Walk."
[00:18] "Navigation complete. You have arrived back at your destination."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Week 1 Challenge: Touch Grass&lt;/strong&gt; (Screenless outdoor pedestrian navigation prioritizing tree canopy and natural trails)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Source AI / Local Inference&lt;/strong&gt; (Quantized on-device LLMs via Ollama &amp;amp; LangChain)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility &amp;amp; Assistive Technology&lt;/strong&gt; (Screen-free directional audio beacons for low-vision walkers)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to Run It in 60 Seconds
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Quick Start (Web App)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/sharan-s-dev/blind-walk.git
&lt;span class="nb"&gt;cd &lt;/span&gt;blind-walk
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://localhost:8000" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt;&lt;/strong&gt; in your browser!&lt;/p&gt;

&lt;h3&gt;
  
  
  Run All 10 Tests
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;span class="c"&gt;# Output: Ran 10 tests in 0.133s ... OK&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run via Docker Stack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;🎧 &lt;strong&gt;Quick Tip:&lt;/strong&gt; Wear headphones when testing the &lt;a href="https://sharan-s-dev.github.io/blind-walk/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt; to hear the binaural stereo-panned beacon pings (left ear for left turns, right ear for right turns)!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;Built with pride for Hacktoberfest 2026. Put your phone away, step outside, and touch grass!&lt;/em&gt; 🌿&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>AlgosPeer: An Offline, Local-Inference DSA Mock Interview Agent Built for My Peers</title>
      <dc:creator>Sharan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:42:10 +0000</pubDate>
      <link>https://dev.to/sharan_k11n/algospeer-o96</link>
      <guid>https://dev.to/sharan_k11n/algospeer-o96</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;h1&gt;
  
  
  AlgosPeer: An Interactive DSA Mock Interview Co-Pilot Built for My Roommate
&lt;/h1&gt;




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

&lt;p&gt;I built &lt;strong&gt;AlgosPeer&lt;/strong&gt; specifically for my college roommate and peer, who is preparing for intense technical coding phone screens and FAANG early-career software engineering rounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Problem We Faced Together
&lt;/h3&gt;

&lt;p&gt;Preparing for coding rounds in a college dorm is notorious for being high-stress, expensive, and lonely:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Cost &amp;amp; Rate-Limit Barrier:&lt;/strong&gt; Commercial mock interview platforms (Interviewing.io, Exponent) cost $150–$250 per session. Even third-party AI interview tools gate students behind monthly subscriptions and strict rate limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Awkward Roommate Mock Interview" Dilemma:&lt;/strong&gt; When we tried doing peer mock interviews together in our dorm, it was chaotic. As the interviewer, I didn't have the optimal Big-O proofs memorized on the spot, didn't know how to drop subtle hints without accidentally blurting out the answer, and had no structured rubric to give actionable feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Thinking Aloud" Deficit:&lt;/strong&gt; Grinding LeetCode in silence is completely different from a real live round. Candidates fail if they go silent for 5 minutes. Candidates need to build the muscle memory of articulating hypotheses, clarifying constraints, and defending algorithmic trade-offs aloud.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  The Solution: Built for a Friend
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AlgosPeer&lt;/strong&gt; is engineered around a &lt;strong&gt;Co-Pilot Dual Architecture&lt;/strong&gt; designed for two friends practicing together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;👥 &lt;strong&gt;Interactive Roommate Co-Pilot HUD:&lt;/strong&gt;&lt;br&gt;
The roommate opens the &lt;strong&gt;Co-Pilot Console&lt;/strong&gt; on a secondary screen or tablet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live One-Click Nudges:&lt;/strong&gt; The roommate can click &lt;strong&gt;"☕ Dorm Pep Talk"&lt;/strong&gt;, &lt;strong&gt;"⚡ Complexity Probe"&lt;/strong&gt;, &lt;strong&gt;"🚨 Edge Case Alert"&lt;/strong&gt;, or &lt;strong&gt;"🎯 FAANG Scale Curveball"&lt;/strong&gt; to inject real-time prompts directly into the candidate's chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calibrated Hint Drop:&lt;/strong&gt; A 4-tier progressive hint ladder (Conceptual Nudge ➔ Algorithmic Strategy ➔ Data Structure Choice ➔ Implementation Insight) that lets the roommate drop hints without spoiling the solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cheat Sheet &amp;amp; Proofs:&lt;/strong&gt; Complete optimal JavaScript &amp;amp; Python solutions with formal mathematical proofs of Time and Space complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Probing Questions Guide:&lt;/strong&gt; Side-by-side rubrics on &lt;em&gt;What a Good Answer Sounds Like&lt;/em&gt; vs &lt;em&gt;Red Flags&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Peer Grading:&lt;/strong&gt; Star ratings across 5 competencies that &lt;strong&gt;directly blend into the final scorecard&lt;/strong&gt; along with the roommate's personal debrief note.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎙️ &lt;strong&gt;Next-Gen AI Interviewer Powered by Google Gemini 3.8 Flash:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrated with &lt;strong&gt;Google Gemini 3.8 Flash&lt;/strong&gt; via Google AI Studio API for conversational, intelligent mock interviews.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roommate Co-Pilot Persona:&lt;/strong&gt; Friendly peer banter that keeps confidence high and anxiety low, alongside &lt;em&gt;FAANG Bar Raiser&lt;/em&gt;, &lt;em&gt;Supportive Senior Mentor&lt;/em&gt;, and &lt;em&gt;Pragmatic Tech Lead&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Native Web Speech API Text-to-Speech narration and microphone "Think Aloud" speech recognition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Offline Practice Mode:&lt;/strong&gt; Zero-network deterministic heuristic engine if no API key is provided.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⚡ &lt;strong&gt;In-Browser Code Execution Sandbox:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time CodeMirror 6 code editor with dark IDE theme.&lt;/li&gt;
&lt;li&gt;Sandboxed execution for JavaScript and Python test assertions with execution times in milliseconds and console output capture.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📊 &lt;strong&gt;Blended Roommate &amp;amp; AI Scorecard:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merges the AI evaluation with the roommate's live ratings and personal feedback.&lt;/li&gt;
&lt;li&gt;1-click exportable Markdown debrief report: &lt;code&gt;AlgosPeer_MockInterview_For_[FriendName].md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Deployed App:&lt;/strong&gt; &lt;a href="https://sharan-s-dev.github.io/Algospeer/" rel="noopener noreferrer"&gt;https://sharan-s-dev.github.io/Algospeer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Development:&lt;/strong&gt; &lt;code&gt;npm run dev&lt;/code&gt; at &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curated Problem Bank:&lt;/strong&gt; 8 classic high-frequency interview patterns (Two Sum, Valid Parentheses, Best Time to Buy and Sell Stock, Longest Substring Without Repeating Characters, Merge Intervals, Number of Islands, Coin Change, and Search in Rotated Sorted Array).&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/sharan-s-dev/Algospeer" rel="noopener noreferrer"&gt;https://github.com/sharan-s-dev/Algospeer&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/services/localLLM.ts&lt;/code&gt;: Google Gemini 3.8 Flash API integration + offline expert heuristic engine.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/services/codeRunner.ts&lt;/code&gt;: Sandboxed test assertion runner with console capture.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/services/speechService.ts&lt;/code&gt;: Native Web Speech API speech synthesis (TTS) &amp;amp; voice recognition (STT).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/services/evaluator.ts&lt;/code&gt;: Blended 5-dimension competency rubric calculator and markdown debrief generator.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/components/RoommateCribSheet.tsx&lt;/code&gt;: The interactive peer interviewer HUD with live chat injections and grading.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/components/Header.tsx&lt;/code&gt;, &lt;code&gt;ProblemPanel.tsx&lt;/code&gt;, &lt;code&gt;CodeEditorPanel.tsx&lt;/code&gt;, &lt;code&gt;TestResultsPanel.tsx&lt;/code&gt;, &lt;code&gt;HintLadderModal.tsx&lt;/code&gt;, &lt;code&gt;WhiteboardPanel.tsx&lt;/code&gt;, &lt;code&gt;ScorecardModal.tsx&lt;/code&gt;, &lt;code&gt;SettingsModal.tsx&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Sample video &lt;/p&gt;

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




&lt;h2&gt;
  
  
  How to Run Locally
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Clone repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/sharan-s-dev/Algospeer.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;Algospeer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install dependencies:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;(Optional) Create &lt;code&gt;.env.local&lt;/code&gt; with your Google AI Studio API key:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(Or enter your key directly in the app's Settings ⚙️ modal, stored securely in browser localStorage)&lt;/em&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start dev server:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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