<?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: kanwar singh</title>
    <description>The latest articles on DEV Community by kanwar singh (@kanwar_singh_21a0b0708edd).</description>
    <link>https://dev.to/kanwar_singh_21a0b0708edd</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%2F4173273%2F39f4d683-60da-46d5-a589-8fe9369eb0cd.png</url>
      <title>DEV Community: kanwar singh</title>
      <link>https://dev.to/kanwar_singh_21a0b0708edd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kanwar_singh_21a0b0708edd"/>
    <language>en</language>
    <item>
      <title>AccessFix AI: Exorcising the Invisible Ghosts Haunting the Web 👻</title>
      <dc:creator>kanwar singh</dc:creator>
      <pubDate>Fri, 30 Oct 2026 11:59:13 +0000</pubDate>
      <link>https://dev.to/kanwar_singh_21a0b0708edd/accessfix-ai-exorcising-the-invisible-ghosts-haunting-the-web-33bp</link>
      <guid>https://dev.to/kanwar_singh_21a0b0708edd/accessfix-ai-exorcising-the-invisible-ghosts-haunting-the-web-33bp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;What if your website is haunted, but you can't see the ghosts?&lt;/strong&gt; 👻&lt;/p&gt;

&lt;p&gt;Imagine building a beautiful website. Everything looks polished. The buttons work, the layout feels perfect, and the design looks production-ready.&lt;/p&gt;

&lt;p&gt;But something is hiding underneath.&lt;/p&gt;

&lt;p&gt;A button has no accessible name. A form field has no associated label. Text blends into its background, making it difficult to read.&lt;/p&gt;

&lt;p&gt;For developers, these problems can be nearly invisible. For people who rely on assistive technologies, they can become real barriers.&lt;/p&gt;

&lt;p&gt;That's what inspired me to build &lt;strong&gt;AccessFix AI — an open-source, local-first AI agent that detects, explains, safely repairs, and verifies web accessibility issues.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Hacktoberfest's &lt;em&gt;Ghost in the Machine&lt;/em&gt; theme, I gave those invisible barriers an identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meet Ghost Mode.&lt;/strong&gt; 🎃&lt;/p&gt;

&lt;p&gt;Instead of simply presenting a list of accessibility errors, AccessFix AI turns them into ghosts haunting your website.&lt;/p&gt;

&lt;p&gt;Each ghost represents a genuine issue detected by an accessibility scanner.&lt;/p&gt;

&lt;p&gt;The goal isn't just to discover these ghosts. It's to safely exorcise them and prove they're gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What AccessFix AI does
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scans a website:&lt;/strong&gt; Uses Playwright and axe-core to discover accessibility violations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explains the problems:&lt;/strong&gt; Displays affected elements, rule IDs, and relevant issue details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates AI-powered fixes:&lt;/strong&gt; Runs an open-weight coding model locally through Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviews proposed changes:&lt;/strong&gt; Shows the original and AI-generated code side by side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforces safety:&lt;/strong&gt; Validates proposed modifications with a strict AST-based security gate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requires human approval:&lt;/strong&gt; Never applies the generated fix without permission.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applies and verifies:&lt;/strong&gt; Uses real browser-based accessibility testing to check whether the fix worked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports rollback and reset:&lt;/strong&gt; Restores the original demo when needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Ghost Mode: Making invisible barriers visible
&lt;/h3&gt;

&lt;p&gt;Ghost Mode introduces five meaningful states:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ghost status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;👻 Ghost Detected&lt;/td&gt;
&lt;td&gt;A real accessibility violation was discovered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🪄 Awaiting Permission&lt;/td&gt;
&lt;td&gt;An AI-generated fix is ready for human review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Ghost Removed&lt;/td&gt;
&lt;td&gt;Verification confirms the rule was resolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔮 Still Haunting&lt;/td&gt;
&lt;td&gt;The accessibility issue remains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️ New Apparition&lt;/td&gt;
&lt;td&gt;A new violation appeared after modification&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These aren't fictional results added for Halloween.&lt;/p&gt;

&lt;p&gt;Every status is derived from actual scanning or verification data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ghosts may be a metaphor, but the accessibility problems are real.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;The most exciting part of this project was watching AccessFix AI successfully repair a real accessibility issue.&lt;/p&gt;

&lt;p&gt;Rather than showing a hardcoded demonstration, I tested the complete workflow using my local AI model and an actual Chromium browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  The experiment
&lt;/h3&gt;

&lt;p&gt;My intentionally inaccessible demo initially contained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;button-name&lt;/code&gt; — A button without an accessible name.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;color-contrast&lt;/code&gt; — Text with insufficient contrast.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;label&lt;/code&gt; — A form field missing an associated label.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The baseline scan discovered &lt;strong&gt;3 violated accessibility rules affecting 4 elements&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I then asked AccessFix AI to generate a repair using the locally running &lt;code&gt;qwen2.5-coder:1.5b&lt;/code&gt; model.&lt;/p&gt;

&lt;h3&gt;
  
  
  The AI-generated fix
&lt;/h3&gt;

&lt;p&gt;The model identified the helper-text color as a candidate for improvement and selected this change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- color: '#a3a8b5'
&lt;/span&gt;&lt;span class="gi"&gt;+ color: '#000000'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But generating code wasn't enough.&lt;/p&gt;

&lt;p&gt;Before applying the change, AccessFix AI checked it against the restricted AST safety policy.&lt;/p&gt;

&lt;p&gt;The modification passed validation, I explicitly approved it, and the application applied the proposed fix.&lt;/p&gt;

&lt;p&gt;Then Playwright and axe-core scanned the updated website.&lt;/p&gt;

&lt;h3&gt;
  
  
  The actual results
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Violated accessibility rules&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Affected elements&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;color-contrast&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Present&lt;/td&gt;
&lt;td&gt;Resolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;button-name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Present&lt;/td&gt;
&lt;td&gt;Remaining&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;label&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Present&lt;/td&gt;
&lt;td&gt;Remaining&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Newly introduced rules&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;One real accessibility rule resolved. Zero new rules introduced.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a 33% reduction in violated rule types in this specific demonstration—not a claim that the entire website is now 33% more accessible.&lt;/p&gt;

&lt;p&gt;The remaining issues were still reported honestly.&lt;/p&gt;

&lt;p&gt;After verification, I reset the application and scanned again. The original &lt;strong&gt;3 rules affecting 4 elements&lt;/strong&gt; returned, confirming that the reset restored the original demo.&lt;/p&gt;

&lt;p&gt;Both demo files also matched their starting contents after the workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Watch the demo
&lt;/h3&gt;

&lt;p&gt;🎥 &lt;strong&gt;Demo video:&lt;/strong&gt; [&lt;a href="https://youtu.be/tjIB_Y66GS0" rel="noopener noreferrer"&gt;https://youtu.be/tjIB_Y66GS0&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The approximately 110-second walkthrough covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discovering accessibility ghosts&lt;/li&gt;
&lt;li&gt;Generating a fix with local AI&lt;/li&gt;
&lt;li&gt;Reviewing the proposed code&lt;/li&gt;
&lt;li&gt;Explicitly approving the modification&lt;/li&gt;
&lt;li&gt;Applying and verifying the fix&lt;/li&gt;
&lt;li&gt;Viewing the updated Ghost Mode results&lt;/li&gt;
&lt;li&gt;Resetting the demo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AccessFix AI currently runs as a local prototype, so the video and repository instructions demonstrate its functionality without requiring a public hosted AI service.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;GitHub repository:&lt;/strong&gt; [&lt;a href="https://github.com/kanwar05/AccessFix-AI.git" rel="noopener noreferrer"&gt;https://github.com/kanwar05/AccessFix-AI.git&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The project includes the application source code, installation instructions, architecture documentation, tests, and verification evidence.&lt;/p&gt;

&lt;p&gt;It is released under the MIT License, with separate notices for the model and third-party dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run it locally
&lt;/h3&gt;

&lt;p&gt;AccessFix AI uses Ollama for local model inference.&lt;/p&gt;

&lt;p&gt;First, install Ollama and download the coding model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen2.5-coder:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then clone the repository and follow the README to install dependencies and launch the application.&lt;/p&gt;

&lt;p&gt;The repository also documents the Playwright browser requirements and the development configuration.&lt;/p&gt;

&lt;p&gt;The AI model can run locally after its initial download, without sending source code to a proprietary hosted model API.&lt;/p&gt;

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

&lt;p&gt;I wanted AccessFix AI to be more than another application that asks an LLM to generate code.&lt;/p&gt;

&lt;p&gt;My main engineering question was:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can we let AI fix code without blindly trusting everything it generates?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My answer was to separate AI reasoning from permission to modify source code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React, JavaScript, CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local AI inference&lt;/td&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open-weight model&lt;/td&gt;
&lt;td&gt;Qwen2.5-Coder 1.5B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser automation&lt;/td&gt;
&lt;td&gt;Playwright&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility auditing&lt;/td&gt;
&lt;td&gt;axe-core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code safety&lt;/td&gt;
&lt;td&gt;AST-based validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Automated backend and Ghost Mode tests&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        React Frontend
              |
              v
     Accessibility Scan
       Playwright + axe
              |
              v
     Accessibility Report
              |
              v
       Local Ollama AI
      Qwen2.5-Coder 1.5B
              |
              v
       Proposed Code Fix
              |
              v
      Code Comparison UI
              |
              v
      Explicit User Approval
              |
              v
       AST Safety Gate
          /       \
      Reject      Accept
                    |
                    v
              Apply Fix
                    |
                    v
         Playwright + axe
             Verification
                    |
                    v
          Before/After Report
                    |
                    v
           Reset or Rollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The hardest challenge: Making AI-generated edits safe
&lt;/h3&gt;

&lt;p&gt;Initially, my local model generated valid JSX that looked reasonable, but it also changed visible component content outside the application's approved modification policy.&lt;/p&gt;

&lt;p&gt;The AST security gate rejected it with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;That was an important moment.&lt;/p&gt;

&lt;p&gt;The application had done exactly what its safety architecture was supposed to do: &lt;strong&gt;reject an AI-generated modification it could not safely authorize.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than weakening the gate to make the demo pass, I improved the generation workflow so the model could produce more targeted, supported changes.&lt;/p&gt;

&lt;p&gt;The successful experiment used the model-selected helper-text color modification while preserving the restricted AST policy.&lt;/p&gt;

&lt;p&gt;The application also includes rollback handling, stale-proposal protection, duplicate-request protection, and explicit approval requirements.&lt;/p&gt;

&lt;p&gt;The AI proposes.&lt;/p&gt;

&lt;p&gt;The safety gate validates.&lt;/p&gt;

&lt;p&gt;The developer approves.&lt;/p&gt;

&lt;p&gt;The browser verifies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No single component is blindly trusted.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing and validation
&lt;/h3&gt;

&lt;p&gt;My final reported validation results were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;74 backend tests passing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 Ghost Mode tests passing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;76 tests passing in total&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;ESLint passing&lt;/li&gt;
&lt;li&gt;Production build passing&lt;/li&gt;
&lt;li&gt;Genuine Ollama generation verified&lt;/li&gt;
&lt;li&gt;Real Playwright and axe verification completed&lt;/li&gt;
&lt;li&gt;Reset behavior verified&lt;/li&gt;
&lt;li&gt;Unsafe proposal rejection and rollback tested&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The implementation and verification details are documented in the repository.&lt;/p&gt;

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

&lt;p&gt;For me, open innovation is not simply about publishing code.&lt;/p&gt;

&lt;p&gt;It is about building software that developers can inspect, modify, and operate on their own terms.&lt;/p&gt;

&lt;p&gt;AccessFix AI is designed around that principle.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Your source code stays under your control
&lt;/h3&gt;

&lt;p&gt;Many AI-assisted development tools send source code to externally hosted inference services.&lt;/p&gt;

&lt;p&gt;AccessFix AI uses a locally running open-weight model through Ollama.&lt;/p&gt;

&lt;p&gt;Developers can perform AI inference on their own machines instead of submitting the relevant code to a third-party AI API.&lt;/p&gt;

&lt;p&gt;For a tool that examines and proposes modifications to source code, that control matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. No usage-based cloud AI charges
&lt;/h3&gt;

&lt;p&gt;Once the required model and dependencies are available, local inference doesn't incur per-request charges from a hosted model provider.&lt;/p&gt;

&lt;p&gt;There are still hardware, electricity, and maintenance costs, but developers are not forced into a metered AI API to run the core functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The model isn't the source of truth
&lt;/h3&gt;

&lt;p&gt;An LLM can produce syntactically valid but unsafe modifications.&lt;/p&gt;

&lt;p&gt;AccessFix AI treats the model as a proposal generator—not an authority.&lt;/p&gt;

&lt;p&gt;The AST safety gate restricts what can change, and Playwright plus axe-core provide independent evidence about the effect of a permitted modification.&lt;/p&gt;

&lt;p&gt;This separation is especially important when working with generated code.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Developers can inspect and extend the system
&lt;/h3&gt;

&lt;p&gt;Because the application uses open tooling and an open-weight model, developers can investigate the implementation, examine the safety rules, and adapt the workflow for their own needs.&lt;/p&gt;

&lt;p&gt;They're not dependent on a single proprietary inference endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Accessibility should be approachable
&lt;/h3&gt;

&lt;p&gt;Accessibility testing can feel overwhelming, especially when developers receive a long report without knowing what to fix first.&lt;/p&gt;

&lt;p&gt;I wanted to combine the reliability of established accessibility tools with the explanatory and code-generation capabilities of local AI.&lt;/p&gt;

&lt;p&gt;Open innovation made it possible to bring those pieces together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-weight AI provides the intelligence. Open-source tools provide the evidence. The developer remains in control.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;AI coding assistance was part of my development workflow, alongside iterative implementation, testing, debugging, and manual review.&lt;/p&gt;

&lt;p&gt;One of the most interesting engineering challenges was refining the AI proposal workflow without weakening the AST safety gate.&lt;/p&gt;

&lt;p&gt;The development process included unsuccessful proposals, policy rejections, additional regression tests, and finally a verified repair.&lt;/p&gt;

&lt;p&gt;That progression is an important part of the project: successful AI engineering involves validating the output, not merely accepting it.&lt;/p&gt;

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

&lt;p&gt;What started as a Halloween interpretation became a reminder of a real software engineering problem.&lt;/p&gt;

&lt;p&gt;A website can appear perfectly functional to one person while containing serious barriers for someone else.&lt;/p&gt;

&lt;p&gt;Those barriers are invisible until we know how to look for them.&lt;/p&gt;

&lt;p&gt;The moment that made AccessFix AI feel real wasn't when the AI generated a piece of code.&lt;/p&gt;

&lt;p&gt;It was when the browser verification confirmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before: 3 violated rules
After:  2 violated rules

Resolved:   color-contrast
Remaining:  button-name, label
Introduced: none

Result: Verified improvement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And after resetting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Original baseline restored
3 rules / 4 affected elements
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repair was real, measurable, and reversible.&lt;/p&gt;

&lt;p&gt;That's the kind of AI-powered developer tooling I want to build: systems that don't simply produce impressive answers, but can demonstrate that their actions made something better.&lt;/p&gt;

&lt;p&gt;Of course, automated testing cannot detect every accessibility problem, and one resolved rule doesn't make a website fully accessible. Human testing and broader accessibility review remain essential.&lt;/p&gt;

&lt;p&gt;But even a small verified improvement matters.&lt;/p&gt;

&lt;p&gt;This Halloween, I didn't build a chatbot to tell ghost stories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I built an AI tool to discover the ghosts hiding inside our websites—and help developers safely remove them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy Hacktoberfest! 🎃&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #OpenSource #Accessibility #AI
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>🦥 RepoPilot AI — Let Local AI Handle the Boring Git Work</title>
      <dc:creator>kanwar singh</dc:creator>
      <pubDate>Sun, 25 Oct 2026 14:00:55 +0000</pubDate>
      <link>https://dev.to/kanwar_singh_21a0b0708edd/repopilot-ai-let-local-ai-handle-the-boring-git-work-1ba5</link>
      <guid>https://dev.to/kanwar_singh_21a0b0708edd/repopilot-ai-let-local-ai-handle-the-boring-git-work-1ba5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;As developers, we enjoy building features, solving problems, and writing code.&lt;/p&gt;

&lt;p&gt;But after finishing a feature, there are always a few repetitive tasks waiting for us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing meaningful Git commit messages.&lt;/li&gt;
&lt;li&gt;Preparing changelogs from commit history.&lt;/li&gt;
&lt;li&gt;Updating README documentation whenever functionality changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks are important, but they can interrupt our development flow.&lt;/p&gt;

&lt;p&gt;So, for the &lt;strong&gt;Slow and Steady&lt;/strong&gt; challenge, I built &lt;strong&gt;RepoPilot AI&lt;/strong&gt;, an offline-first, AI-powered command-line tool that automates these repetitive Git workflows using locally running open-weight AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My goal was simple: Spend more time coding and less time documenting what I just coded.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Three Core Features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. AI Commit Message Generator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RepoPilot analyzes staged Git changes and suggests meaningful Conventional Commit messages.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot suggest-commit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Instead of manually examining a large diff and deciding how to describe it, developers receive an AI-generated suggestion based on their actual changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. AI Changelog Generator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RepoPilot analyzes Git commit history and prepares categorized release notes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot generate-changelog --max-commits 10&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It organizes relevant changes into categories such as Added, Changed, Fixed, and Removed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AI README Assistant&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RepoPilot examines staged changes alongside the existing README and identifies documentation that may need updating.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot suggest-readme&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;What makes this feature interesting is its evidence validation. Every suggestion must be supported by actual repository content.&lt;/p&gt;

&lt;p&gt;RepoPilot never automatically edits the README, commits code, or pushes anything. The developer always stays in control.&lt;/p&gt;

&lt;h3&gt;
  
  
  📦 Install RepoPilot AI
&lt;/h3&gt;

&lt;p&gt;I also published RepoPilot AI on npm, making it easy for developers to try it in their own Git repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the package:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g repopilot-ai&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install the local model:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ollama pull qwen2.5-coder:7b&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With Ollama running, navigate to an existing Git repository and start using RepoPilot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Available commands:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;repopilot suggest-commit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;repopilot generate-changelog&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;repopilot suggest-readme&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No paid AI API key is required for the default local setup.&lt;/p&gt;

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

&lt;p&gt;🎥 &lt;strong&gt;Watch RepoPilot AI in action:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://youtu.be/Q-jN-w4k9QM" rel="noopener noreferrer"&gt;https://youtu.be/Q-jN-w4k9QM&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;In the demonstration, I show how to install RepoPilot from npm, configure the local AI model, and run its commands inside a Git repository.&lt;/p&gt;

&lt;p&gt;The demo covers generating commit suggestions, identifying missing README documentation, and turning Git history into readable changelogs.&lt;/p&gt;

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

&lt;p&gt;RepoPilot AI is open source and available under the MIT License.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://github.com/kanwar05/RepoPilot-AI" rel="noopener noreferrer"&gt;https://github.com/kanwar05/RepoPilot-AI&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Published npm package:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/repopilot-ai" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/repopilot-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Developers can inspect the implementation, run the tests, suggest improvements, and adapt the tool to their own workflows.&lt;/p&gt;

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

&lt;p&gt;I wanted RepoPilot to be lightweight, easy to install, and genuinely useful without depending on cloud-based AI services.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ Tech Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TypeScript + Node.js&lt;/td&gt;
&lt;td&gt;Core CLI application&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commander.js&lt;/td&gt;
&lt;td&gt;Command-line interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git CLI&lt;/td&gt;
&lt;td&gt;Reading diffs and commit history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;Local LLM inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen2.5-Coder 7B&lt;/td&gt;
&lt;td&gt;AI-powered code understanding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node.js Test Runner&lt;/td&gt;
&lt;td&gt;Automated testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;Package distribution&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The workflow is straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer Command → Git Data Extraction → Input Validation → Local Ollama Model → Output Validation → Suggested Result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For commit generation, RepoPilot reads staged changes using Git and passes bounded diff content to the local model.&lt;/p&gt;

&lt;p&gt;For changelog generation, it processes Git commit history and asks the model to create categorized release notes.&lt;/p&gt;

&lt;p&gt;For README suggestions, it combines staged Git changes with the current README to identify missing documentation.&lt;/p&gt;

&lt;p&gt;All generated output is validated before being displayed.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Most Interesting Challenge: Making AI Trustworthy
&lt;/h3&gt;

&lt;p&gt;One of the hardest parts of building RepoPilot wasn't connecting Ollama to Node.js.&lt;/p&gt;

&lt;p&gt;It was making sure that AI-generated suggestions were actually supported by repository evidence.&lt;/p&gt;

&lt;p&gt;During development, I encountered several problems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 1: The model invented evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The README Assistant sometimes generated plausible documentation suggestions but cited example text that wasn't present in the actual Git diff.&lt;/p&gt;

&lt;p&gt;Instead of accepting unsupported suggestions, I made the validator reject them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2: Valid evidence was being rejected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git diffs mark added lines with a &lt;code&gt;+&lt;/code&gt; prefix. Sometimes the model quoted a real added line without that prefix.&lt;/p&gt;

&lt;p&gt;The original validator treated those quotes as invalid.&lt;/p&gt;

&lt;p&gt;I improved the evidence verification logic to support harmless formatting differences while still checking that quoted content came from actual added lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 3: The model returned empty suggestions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes the model returned no documentation suggestions even when a newly added feature clearly needed documentation.&lt;/p&gt;

&lt;p&gt;I refined the prompt to better distinguish user-facing changes from irrelevant modifications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing and Validation
&lt;/h3&gt;

&lt;p&gt;I didn't want RepoPilot to be a tool that only worked in a perfect demonstration.&lt;/p&gt;

&lt;p&gt;The project passed &lt;strong&gt;26 automated tests&lt;/strong&gt;, covering areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Valid and malformed AI output.&lt;/li&gt;
&lt;li&gt;Empty staged Git changes.&lt;/li&gt;
&lt;li&gt;Large input handling.&lt;/li&gt;
&lt;li&gt;Git history processing.&lt;/li&gt;
&lt;li&gt;Evidence-backed README suggestions.&lt;/li&gt;
&lt;li&gt;Hallucinated evidence rejection.&lt;/li&gt;
&lt;li&gt;CLI command handling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also tested README suggestion generation using a real local Ollama model and a staged CSV export feature.&lt;/p&gt;

&lt;p&gt;That test successfully produced an evidence-backed recommendation to update the README Usage section.&lt;/p&gt;

&lt;p&gt;Before release, I verified the npm package contents and ensured the production CLI remained read-only.&lt;/p&gt;

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

&lt;p&gt;Open innovation is at the center of RepoPilot AI, not an optional feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 1. Local-first privacy
&lt;/h3&gt;

&lt;p&gt;Developers regularly work with private repositories and proprietary source code.&lt;/p&gt;

&lt;p&gt;RepoPilot uses Ollama with a local endpoint by default, allowing source analysis to happen on the developer's own machine.&lt;/p&gt;

&lt;p&gt;Repository content doesn't need to be sent to a third-party cloud AI provider in the default configuration.&lt;/p&gt;

&lt;p&gt;Users can configure another model endpoint if they choose, so privacy also depends on how they configure the tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 2. No per-request AI API charges
&lt;/h3&gt;

&lt;p&gt;RepoPilot doesn't require subscriptions or paid cloud AI API keys for its default inference workflow.&lt;/p&gt;

&lt;p&gt;After downloading the model, developers can generate suggestions using their own computing resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧩 3. Flexibility and customization
&lt;/h3&gt;

&lt;p&gt;Because the inference layer uses Ollama, developers can experiment with compatible local models rather than depending on a single proprietary service.&lt;/p&gt;

&lt;p&gt;They can also inspect and modify the open-source CLI itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍 4. Offline capability
&lt;/h3&gt;

&lt;p&gt;Once the dependencies and model have been installed, the core Git analysis and local AI workflow can operate without an active internet connection.&lt;/p&gt;

&lt;p&gt;This makes RepoPilot useful for developers who prefer local tools or work in environments with limited connectivity.&lt;/p&gt;

&lt;p&gt;For me, the biggest advantage of open innovation is &lt;strong&gt;control over the entire AI workflow&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development while building RepoPilot, particularly for implementation scaffolding, debugging, and testing.&lt;/p&gt;

&lt;p&gt;One important part of the development process was improving the README Assistant after its first attempts produced unsupported evidence and overly conservative empty responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff 🦥
&lt;/h2&gt;

&lt;p&gt;The entire purpose of RepoPilot is to automate repetitive developer chores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before RepoPilot
&lt;/h3&gt;

&lt;p&gt;After writing code, a developer typically needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspect staged changes to write a commit message.&lt;/li&gt;
&lt;li&gt;Review multiple commits to prepare release notes.&lt;/li&gt;
&lt;li&gt;Compare new functionality with existing documentation.&lt;/li&gt;
&lt;li&gt;Manually decide which README sections need updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  With RepoPilot
&lt;/h3&gt;

&lt;p&gt;Developers can run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot suggest-commit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot generate-changelog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;repopilot suggest-readme&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And receive AI-generated drafts based on repository evidence.&lt;/p&gt;

&lt;p&gt;RepoPilot doesn't replace developer judgment. It reduces the repetitive work of preparing the first draft while keeping every final decision in the developer's hands.&lt;/p&gt;

&lt;p&gt;I haven't established a reliable time-savings benchmark yet, but the working demonstrations show how the tool reduces manual drafting and review preparation.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Learned
&lt;/h3&gt;

&lt;p&gt;This project taught me that integrating an AI model is only the beginning.&lt;/p&gt;

&lt;p&gt;Building a useful AI-powered developer tool also requires proper input handling, trustworthy output validation, clear errors, privacy-conscious defaults, automated testing, and a smooth installation experience.&lt;/p&gt;

&lt;p&gt;My biggest takeaway:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI automation becomes much more useful when the output can be verified rather than blindly trusted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RepoPilot AI is my contribution to the &lt;strong&gt;Slow and Steady&lt;/strong&gt; theme: a small open-source tool that helps developers spend less time on repetitive Git chores and more time building something meaningful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write code. Let RepoPilot handle the boring Git work. 🚀🦥&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;h1&gt;
  
  
  OpenSource #AI #Hacktoberfest
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>DukaanDost AI: A Local Gemma Assistant for Stock, Orders, and Udhaar</title>
      <dc:creator>kanwar singh</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:09:11 +0000</pubDate>
      <link>https://dev.to/kanwar_singh_21a0b0708edd/dukaandost-ai-a-local-gemma-assistant-for-stock-orders-and-udhaar-4elm</link>
      <guid>https://dev.to/kanwar_singh_21a0b0708edd/dukaandost-ai-a-local-gemma-assistant-for-stock-orders-and-udhaar-4elm</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;I built &lt;strong&gt;DukaanDost AI&lt;/strong&gt;, a local business assistant for small Indian distributors supplying biscuits, namkeen, chips, and other packaged goods to shops.&lt;/p&gt;

&lt;p&gt;Consider a simple transaction: a shop orders several cartons, pays part of the bill, and promises to pay the rest later. The distributor needs to update stock, record the sale, and carry the unpaid amount into the shop’s &lt;strong&gt;udhaar&lt;/strong&gt;, or outstanding balance.&lt;/p&gt;

&lt;p&gt;DukaanDost brings those tasks together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inventory tracking with purchases, adjustments, and low-stock alerts.&lt;/li&gt;
&lt;li&gt;Multi-product orders with cash, UPI, and credit payments.&lt;/li&gt;
&lt;li&gt;Shop ledgers and partial-payment tracking.&lt;/li&gt;
&lt;li&gt;Sales reports, estimated gross profit, printable receipts, and CSV export.&lt;/li&gt;
&lt;li&gt;An AI assistant for English and Hinglish business requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intended customer is an owner-operated distributor. My proposed business model is &lt;strong&gt;paid setup, onboarding, and local support&lt;/strong&gt;. Willingness to pay still needs validation; this is currently a working single-user MVP.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://youtu.be/4VuIVRUwg5Q" rel="noopener noreferrer"&gt;Watch the DukaanDost AI demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The recording uses fictional shops and transactions.&lt;/p&gt;

&lt;p&gt;One demonstrated workflow starts with this request:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sell 2 Parle-G Biscuits cartons and 1 Bikaji Bhujia carton to Ramesh General Store. Received 500 rupees in cash.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With the sample catalog prices, the preview shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Order total:&lt;/strong&gt; ₹1,720&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment received:&lt;/strong&gt; ₹500&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Added to the shop’s outstanding balance:&lt;/strong&gt; ₹1,220&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The user reviews the preview and confirms it. Only then does the app save the sale, reduce inventory, and update the ledger.&lt;/p&gt;

&lt;p&gt;The assistant also supports questions such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Aaj ki total sale kitni hui?&lt;/p&gt;

&lt;p&gt;Ramesh General Store ka kitna balance pending hai?&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;a href="https://github.com/kanwar05/Dukaandost-AI" rel="noopener noreferrer"&gt;View the source code on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application code is MIT licensed. The repository includes setup instructions, architecture documentation, automated tests, and recorded local-model evaluation results.&lt;/p&gt;

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

&lt;p&gt;The frontend uses &lt;strong&gt;React and TypeScript&lt;/strong&gt;, the backend uses &lt;strong&gt;FastAPI&lt;/strong&gt;, and business records are stored in &lt;strong&gt;SQLite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For AI, I used &lt;strong&gt;Gemma 3&lt;/strong&gt;, specifically &lt;code&gt;gemma3:1b&lt;/code&gt;, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemma interprets a business request into a structured intent. The backend then validates that intent, resolves actual products and shops, and calculates prices, payments, and outstanding amounts from the database.&lt;/p&gt;

&lt;p&gt;For business questions, answers are formatted from predefined database queries. For orders, the assistant creates a proposal requiring explicit confirmation.&lt;/p&gt;

&lt;p&gt;An important implementation challenge was handling ambiguous product names. “Biscuit” could refer to several products, so the app can ask for clarification rather than silently choosing one.&lt;/p&gt;

&lt;p&gt;The documented live Gemma evaluation passed &lt;strong&gt;28 of 30 development checks&lt;/strong&gt;. Two outstanding-balance queries returned clarification. This was a small development test set, and it showed that interpretation still has limitations. The results are documented in the &lt;a href="https://github.com/kanwar05/Dukaandost-AI/blob/main/docs/ai-evaluation.md" rel="noopener noreferrer"&gt;AI evaluation report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ordinary inventory, order, and payment forms remain usable when Ollama is unavailable.&lt;/p&gt;

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

&lt;p&gt;Local inference makes a practical difference to this project’s business model. A distributor can use the assistant without a mandatory paid inference API or a per-request proprietary service dependency.&lt;/p&gt;

&lt;p&gt;Gemma runs on the same computer as the application, while SQLite gives the operator a database they can back up themselves. The model is configurable, so the project can adapt as local hardware and available models improve.&lt;/p&gt;

&lt;p&gt;After installing dependencies and downloading the model, the application is designed to operate using local services. Setup still requires internet, and inference performance depends on the machine.&lt;/p&gt;

&lt;p&gt;Open-weight AI made this architecture possible. The next step is to test whether distributors find it useful enough to pay for setup and support.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DukaanDost uses Gemma locally through Ollama to interpret English and Hinglish business questions and propose shop orders for human review.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI disclosure: AI assistance was used during development and in preparing this write-up.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>🌿 NatureLens: Turning Screen Time into Green Time</title>
      <dc:creator>kanwar singh</dc:creator>
      <pubDate>Sun, 11 Oct 2026 06:14:27 +0000</pubDate>
      <link>https://dev.to/kanwar_singh_21a0b0708edd/naturelens-turning-screen-time-into-green-time-2jbl</link>
      <guid>https://dev.to/kanwar_singh_21a0b0708edd/naturelens-turning-screen-time-into-green-time-2jbl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;NatureLens is a nature companion designed to help people step away from their screens and reconnect with the world around them.&lt;/strong&gt; 🌱&lt;/p&gt;

&lt;p&gt;In a world where we spend hours scrolling, I wanted to build something that uses technology to encourage people to spend more time outdoors—not less.&lt;/p&gt;

&lt;p&gt;NatureLens turns going outside into a simple, engaging experience through nature-focused activities and exploration.&lt;/p&gt;

&lt;p&gt;The idea is simple: instead of spending more time consuming content on a screen, use the screen as a starting point for discovering something in the real world.&lt;/p&gt;

&lt;p&gt;NatureLens is designed for students, nature lovers, and anyone who wants to build a healthier relationship with technology.&lt;/p&gt;

&lt;p&gt;My goal is to make exploring nature feel accessible, interactive, and fun.&lt;/p&gt;

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

&lt;p&gt;🌐 &lt;strong&gt;Live Demo:&lt;/strong&gt; [&lt;a href="https://naturelens-coral.vercel.app/" rel="noopener noreferrer"&gt;https://naturelens-coral.vercel.app/&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Try the experience and see how technology can encourage real-world exploration!&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/kanwar05/Naturelens" rel="noopener noreferrer"&gt;https://github.com/kanwar05/Naturelens&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with an emphasis on a modern web experience and making nature exploration accessible.&lt;/p&gt;

&lt;p&gt;Contributions, suggestions, and feedback are welcome!&lt;/p&gt;

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

&lt;p&gt;I built NatureLens using &lt;strong&gt;React and Vite&lt;/strong&gt;, with a focus on creating a responsive, interactive web application.&lt;/p&gt;

&lt;p&gt;The project explores how open-source AI can bring intelligence closer to the user, with browser-based inference as an approach to reduce dependence on remote AI services.&lt;/p&gt;

&lt;p&gt;My intended direction is to use &lt;strong&gt;Hugging Face Transformers.js&lt;/strong&gt; for running supported AI models directly in the browser, alongside a nature-exploration experience that remains useful when AI is unavailable.&lt;/p&gt;

&lt;p&gt;One important engineering challenge was deployment: the AI dependency tree included a Node ONNX Runtime package whose installation attempted to download additional runtime files. This caused problems during cloud deployment. I worked on adjusting the dependency configuration so the browser-focused build could be deployed more cleanly.&lt;/p&gt;

&lt;p&gt;This challenge reminded me that building an AI-powered application is not just about integrating a model. It also means understanding dependencies, runtime environments, deployment constraints, and graceful fallbacks.&lt;/p&gt;

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

&lt;p&gt;Open innovation makes it possible for developers to experiment, learn, and build on top of tools created by a global community.&lt;/p&gt;

&lt;p&gt;Open-source AI frameworks give developers the opportunity to explore local and browser-based inference instead of automatically sending every task to a closed, paid API.&lt;/p&gt;

&lt;p&gt;For a project like NatureLens, that direction matters because it can help reduce API costs, offer more control over the user experience, and create opportunities for privacy-conscious, offline-friendly features.&lt;/p&gt;

&lt;p&gt;Open source also makes learning more practical. When something breaks, developers can investigate the dependency chain, understand the underlying problem, and share what they learn with others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I believe technology should help us experience more of the real world—not keep us trapped inside a screen.&lt;/strong&gt; That is the idea behind NatureLens.&lt;/p&gt;

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

&lt;p&gt;I used an AI coding agent during development to help explore the implementation, troubleshoot dependency issues, and refine the application.&lt;/p&gt;




&lt;p&gt;Thanks for checking out NatureLens! 🌍&lt;/p&gt;

&lt;p&gt;I’d love to hear your feedback: &lt;strong&gt;What feature would make you more likely to put your phone away and explore nature?&lt;/strong&gt;&lt;/p&gt;

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