<?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: Gagan Kadam</title>
    <description>The latest articles on DEV Community by Gagan Kadam (@grkadam7).</description>
    <link>https://dev.to/grkadam7</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%2F4160970%2Fa0e46f1a-1d2d-4861-bea6-0ffdf8913e2a.png</url>
      <title>DEV Community: Gagan Kadam</title>
      <link>https://dev.to/grkadam7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/grkadam7"/>
    <language>en</language>
    <item>
      <title>Group Project Ghost: I was too lazy to be my team's nag, so I built one</title>
      <dc:creator>Gagan Kadam</dc:creator>
      <pubDate>Thu, 22 Oct 2026 08:37:36 +0000</pubDate>
      <link>https://dev.to/grkadam7/group-project-ghost-i-was-too-lazy-to-be-my-teams-nag-so-i-built-one-5g64</link>
      <guid>https://dev.to/grkadam7/group-project-ghost-i-was-too-lazy-to-be-my-teams-nag-so-i-built-one-5g64</guid>
      <description>&lt;p&gt;Every group project has one person who becomes the de-facto nag. The one who chases the teammate who hasn't started, reminds the one who missed the deadline, and slowly turns into the group's unpaid project manager.&lt;/p&gt;

&lt;p&gt;I am that person. So for Hacktoberfest Week 3 — &lt;em&gt;Slow and Steady&lt;/em&gt;, the sloth-themed one — I built the opposite of that person: &lt;strong&gt;Group Project Ghost&lt;/strong&gt;, an agent too lazy to nag, which is exactly why it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;One command reads your group's shared task list, asks a &lt;strong&gt;local open-weight model&lt;/strong&gt; (&lt;code&gt;gemma3:4b&lt;/code&gt; via Ollama) to write the follow-ups you'd otherwise compose yourself, and hands you one ready-to-paste message per teammate — plus a &lt;strong&gt;spoken two-line morning brief&lt;/strong&gt; you can listen to without sitting up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ uv run ghost.py
2 overdue — nudges ready to paste:

--- to arun ---
Hey Arun, just checking in on the frontend for the library project — the
issue/return pages were due last week. Let me know if there's anything I
can do to help get them sorted out...

--- to priya ---
Hey Priya, just wanted to gently nudge you about the report for the DBMS
project — it's been a little while since it was due on the 21st! ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the sloth mode of the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ uv run ghost.py --brief --speak
Morning, team. Arun's still tackling those return pages – due Oct 20.
Priya, focus on getting that 6-page report done by the 21st.

saved brief.mp3 — play it and stay in bed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model writes the words (locally — the task list never leaves my laptop), and ElevenLabs' text-to-speech reads the brief out loud in about ten seconds of George's voice. I lie in bed, I'm informed, I do nothing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Demo:&lt;/strong&gt; the terminal output above is verbatim — and yes, the whole point is that you &lt;em&gt;listen&lt;/em&gt; to your team's status instead of reading it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Your project is a boring YAML file — which is the point:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;project&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DBMS Mini Project — Library Management&lt;/span&gt;
&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Write the 6-page report&lt;/span&gt;
    &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;priya&lt;/span&gt;
    &lt;span class="na"&gt;due&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-10-21&lt;/span&gt;
    &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;todo&lt;/span&gt;      &lt;span class="c1"&gt;# done / wip / todo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The whole loop in &lt;code&gt;ghost.py&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load the tasks, compute what's overdue (nothing clever — a date comparison).&lt;/li&gt;
&lt;li&gt;One prompt per slacker, with a tone flag (&lt;code&gt;--tone polite | sloth | passive-aggressive&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Ollama does the composing at &lt;code&gt;http://localhost:11434&lt;/code&gt; — standard &lt;code&gt;/api/chat&lt;/code&gt;, no cloud.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--brief --speak&lt;/code&gt; renders the two-line brief through the ElevenLabs Python SDK.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There's an offline &lt;code&gt;--selftest&lt;/code&gt; that checks the overdue logic without touching any model. It immediately earned its keep: on day one it caught that my &lt;em&gt;demo data&lt;/em&gt; had nothing actually overdue on the test date — a broken fixture, not broken logic. Fix the data, keep the assertion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lazy payoff (the bonus question)
&lt;/h2&gt;

&lt;p&gt;Honest tally, and I'm labeling it as an estimate because this shipped this week: composing nag messages and mentally tracking "who owes what" runs me about &lt;strong&gt;10 minutes and a chunk of attention per day&lt;/strong&gt; on a group project. Now it's &lt;code&gt;uv run ghost.py&lt;/code&gt;, skim, paste — &lt;strong&gt;about 20 seconds&lt;/strong&gt; — and the morning brief means I often don't even open the task file. I'll update these numbers if a longer run proves me wrong.&lt;/p&gt;

&lt;p&gt;The real saving isn't the minutes. It's never having to &lt;em&gt;be&lt;/em&gt; the nag again. The message exists before I emotionally invest in sending it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open innovation matters here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;My teammates' data stays mine.&lt;/strong&gt; The task list, who's behind, and what they're working on never leave my machine — the local model sees it, nobody's server does. The only text that ever reaches an external API is the two-line brief I chose to speak.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It runs on the laptop I already have.&lt;/strong&gt; &lt;code&gt;gemma3:4b&lt;/code&gt; is 3.3 GB. No API bill, no seat counts, no "free tier" that expires mid-project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model is a dial, not a contract.&lt;/strong&gt; Ollama serves whatever I want — today a 4B model that fits the tone task, tomorrow something bigger if nudges start sounding like a robot. An open model I can swap beats a closed one I can only complain about.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline core, voice edge.&lt;/strong&gt; Everything except the optional spoken render works with the network unplugged.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I deliberately didn't build
&lt;/h2&gt;

&lt;p&gt;No WhatsApp/Discord/email sending. Integration eats the whole budget of a three-day build and turns a lazy tool into infrastructure. The ghost prepares; &lt;strong&gt;one paste is the send&lt;/strong&gt; — and pasting isn't the tedious part, composing is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What shaped it
&lt;/h2&gt;

&lt;p&gt;I checked what everyone else was building before picking a lane — the Week 3 board was filling with file tidiers and commit bots:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/ghalmeidadev/sloth-sorter-a-lazy-file-tidier-that-runs-gemma-locally-21lc"&gt;sloth-sorter: a lazy file tidier that runs Gemma locally&lt;/a&gt; by ghalmeidadev&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/mrnowshirwan/lazycommit-a-tiny-local-model-writes-my-commit-messages-so-i-dont-have-to-k4p"&gt;lazycommit: a tiny local model writes my commit messages so I don't have to&lt;/a&gt; by mrnowshirwan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/garanews/i-was-too-lazy-to-write-ctf-challenges-so-i-built-a-local-ai-that-writes-compiles-and-checks-its-1927"&gt;I was too lazy to write CTF challenges, so I built a local AI that writes, compiles, and checks its own&lt;/a&gt; by garanews — the honest, personal register I aimed for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing was voice-first yet, and "status you listen to from bed" felt like the slothiest possible version of the prompt.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Code: &lt;a href="https://github.com/grkadam7/group-project-ghost" rel="noopener noreferrer"&gt;github.com/grkadam7/group-project-ghost&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Entry for the Hacktoberfest Open-Source AI Challenge: Week 3 (Slow and Steady) — built with a local &lt;code&gt;gemma3:4b&lt;/code&gt; via Ollama, voice via ElevenLabs. The teammates in the demo data are renamed; the dread is real.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building an Air-Gapped PII Redactor &amp; Freelance NDA Auditor</title>
      <dc:creator>Gagan Kadam</dc:creator>
      <pubDate>Mon, 19 Oct 2026 06:45:32 +0000</pubDate>
      <link>https://dev.to/grkadam7/building-an-air-gapped-pii-redactor-freelance-nda-auditor-532i</link>
      <guid>https://dev.to/grkadam7/building-an-air-gapped-pii-redactor-freelance-nda-auditor-532i</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;
  
  
  DocuShield AI: The Air-Gapped PII Redactor &amp;amp; Freelance Contract Auditor
&lt;/h2&gt;




&lt;h2&gt;
  
  
  ⚡ The Spark: The Freelancer's Confidentiality Dilemma
&lt;/h2&gt;

&lt;p&gt;If you are a freelance software developer, fractional CFO, paralegal, HR recruiter, or solo consultant, your business runs on &lt;strong&gt;client trust&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Every week, you handle high-stakes documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Master Services Agreements (MSAs)&lt;/strong&gt; with proprietary project codenames and NDA clauses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client Invoices &amp;amp; Tax Statements&lt;/strong&gt; containing bank wire numbers, routing codes, and personal SSNs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HR &amp;amp; Severance Agreements&lt;/strong&gt; with medical leaves and compensation details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you want to share a sanitized case study, test a new contract parser, or audit a 20-page agreement for predatory clauses, &lt;strong&gt;you face a terrifying catch-22&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"If I upload this client contract to ChatGPT or a cloud API, I am violating my client's NDA, GDPR, and basic professional ethics."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Proprietary cloud models (OpenAI, Anthropic, Google Cloud) require you to stream raw, unredacted client data across public internet connections to external servers. For legal, financial, and enterprise clients, that is an immediate breach of contract.&lt;/p&gt;

&lt;p&gt;Furthermore, cloud document redaction APIs charge &lt;strong&gt;$0.05 to $0.20 per page&lt;/strong&gt;. For a solo freelancer reviewing dozens of documents a month, that per-token tax destroys the margins of a lean micro-SaaS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I built DocuShield AI to solve this completely.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&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%2Fr2frp0rdri4996ptveau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2frp0rdri4996ptveau.png" alt="Home Page" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60zph97yayde2p20avfu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60zph97yayde2p20avfu.png" alt="Contract risk auditor" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm21yg305w8zmc56tq6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm21yg305w8zmc56tq6g.png" alt="Calculator" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ What is DocuShield AI?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DocuShield AI&lt;/strong&gt; is a 100% on-device, air-gapped document sanitizer and contract risk auditor. It runs on the user's laptop powered by an open-weight model—&lt;strong&gt;Gemma 3 4B&lt;/strong&gt;—orchestrated locally via &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It does two crucial jobs with &lt;strong&gt;zero data egress&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent PII Scrubbing&lt;/strong&gt;: Identifies and redacts sensitive entities (SSNs, bank accounts, credit cards, emails, phone numbers, client executive names, rates, and secret project codenames) using three customizable masking strategies:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;██ Blackout&lt;/code&gt;: Classic classified black bars.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[TOKENS]&lt;/code&gt;: Reversible structured tokens (&lt;code&gt;[REDACTED_CLIENT_#1]&lt;/code&gt;, &lt;code&gt;[REDACTED_FINANCIAL_#1]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Pseudonyms&lt;/code&gt;: Synthetic, realistic replacement names and companies for client-facing mockups and QA testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelance Contract Risk Auditor&lt;/strong&gt;: Evaluates agreements for predatory clauses that burn freelancers:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uncapped Indemnification&lt;/strong&gt;: Flags one-sided liability exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP Confiscation Traps&lt;/strong&gt;: Detects clauses that claim your pre-existing developer tools, templates, or open-source libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment Delay Traps&lt;/strong&gt;: Flags Net-90 terms and absent kill fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-Paste Counter-Proposals&lt;/strong&gt;: Generates protective revised language you can email right back to the client.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The core prompt of this challenge asks: &lt;em&gt;Tell us where your open-based approach worked better than a closed one.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is the blunt truth: &lt;strong&gt;If DocuShield were built on proprietary cloud APIs, the product could not exist.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy is the Product, Not an Afterthought
&lt;/h3&gt;

&lt;p&gt;Our core value proposition is: &lt;em&gt;"Zero bytes leave your laptop's RAM."&lt;/em&gt; The moment you introduce an external API call, that guarantee is shattered. With open-weight models running on Ollama, inference happens completely offline. You can disconnect your Wi-Fi, sit on an airplane, and redact 50 pages of classified contracts without a single packet leaving your network card.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. True Zero-Margin Cost ($0.00 Forever)
&lt;/h3&gt;

&lt;p&gt;Cloud vision and NLP models charge per token and per image. In DocuShield, our marginal cost of processing 1 page or 10,000 pages is &lt;strong&gt;$0.00&lt;/strong&gt;. This makes a &lt;strong&gt;$39 one-time lifetime license&lt;/strong&gt; profitable on day one with 99% gross margins.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Model Autonomy &amp;amp; Freedom from Censorship
&lt;/h3&gt;

&lt;p&gt;Proprietary cloud APIs frequently trigger false-positive safety refusals when processing legal dispute documents, medical severance agreements, or fraud audit logs. With open weights, we have total control over prompt behavior, system instructions, and entity thresholds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------------+
|                                    THE COMPARISON                                       |
+------------------------------+---------------------------+------------------------------+
| Factor                       | Cloud APIs (OpenAI/Claude)| DocuShield (Open Gemma 3)    |
+------------------------------+---------------------------+------------------------------+
| Client Data Egress           | Transmitted to US clouds  | 100% Air-Gapped (0 KB sent)  |
| Operating Cost               | $0.05 - $0.20 per page    | $0.00 forever                |
| Internet Required            | Yes (High bandwidth)      | No (Runs 100% offline)       |
| Compliance Safety            | High risk of NDA breach   | 100% NDA &amp;amp; GDPR compliant    |
| Vendor Lock-In               | High                      | None (Swap any GGUF model)   |
+------------------------------+---------------------------+------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🏛️ System Architecture: The Dual-Engine Pipeline
&lt;/h2&gt;

&lt;p&gt;To achieve sub-second speed while catching both structured data (like SSNs) and subtle semantic data (like executive names or unlisted project names), DocuShield uses a &lt;strong&gt;symbiotic dual-engine architecture&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    subgraph Local_Device [Localhost Machine / RAM Only]
        User[User Interface] --&amp;gt;|Uploads PDF / TXT| Parser[Document Extractor]

        subgraph Pipeline [DocuShield Dual-Engine Core]
            L1[Layer 1: Deterministic Regex Engine\nSSNs, Credit Cards, IBAN, Phone, Email]
            L2[Layer 2: Local Gemma 3 4B via Ollama\nSemantic Entities &amp;amp; Contract Risk Evaluation]
            L3[Layer 3: Replacement &amp;amp; Diff Formatter\nBlackout, Smart Tokens, Pseudonyms]
        end

        Parser --&amp;gt; L1
        L1 --&amp;gt; L2
        L2 --&amp;gt; L3
        L3 --&amp;gt; User
    end

    Cloud[External Internet]
    Pipeline -.-&amp;gt;|🚫 ZERO CLOUD TRANSMISSION| Cloud&lt;/code&gt;&lt;/pre&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Layer 1 (Sub-millisecond Regex Engine)&lt;/strong&gt;: Captures high-entropy structured data (Social Security numbers, Credit Cards, IBANs, Phone Numbers, Emails, Currency strings) instantly with 100% precision and zero hallucination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 2 (Open-Weight Gemma 3 4B via Ollama)&lt;/strong&gt;: The open model evaluates semantic context—identifying confidential company names, contracting parties, trade secret references, and evaluating contract risk scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 3 (Zero-Trace Flush)&lt;/strong&gt;: Masked documents and copyable counter-proposals are rendered in the browser. No telemetry or documents are ever saved to disk without user initiation.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💰 The Side Hustle Thesis: Would Someone Actually Pay?
&lt;/h2&gt;

&lt;p&gt;A side hustle must solve a real problem with &lt;strong&gt;demonstrated willingness to pay&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Commercial Pricing Model
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Community Edition ($0)&lt;/strong&gt;: 100% open-source for developers running Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelancer Pro ($39 One-Time Lifetime License)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Batch PDF folder drag-and-drop.&lt;/li&gt;
&lt;li&gt;Contract Risk Counter-Proposal generator.&lt;/li&gt;
&lt;li&gt;Exportable &lt;strong&gt;Safe Sharing Compliance Certificate&lt;/strong&gt; (proves to clients that their document was sanitized on an air-gapped machine).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boutique Firm / Agency Pack ($19/seat/mo)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Shared firm custom dictionaries and SOC2-ready on-device audit logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Freelancer ROI Math
&lt;/h3&gt;

&lt;p&gt;An average freelance consultant reviewing &lt;strong&gt;8 contracts per month&lt;/strong&gt; at &lt;strong&gt;$125/hr&lt;/strong&gt; spends ~2.5 hours per contract manually reviewing clauses or paying lawyers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Billable Hours Saved&lt;/strong&gt;: ~15 hours/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly Value Unlocked&lt;/strong&gt;: &lt;strong&gt;$1,875/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payback Period for $39 license&lt;/strong&gt;: &lt;em&gt;Less than 20 minutes.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👥 Landing the First User &amp;amp; Real Feedback
&lt;/h2&gt;

&lt;p&gt;To satisfy the challenge bonus criteria, I put DocuShield in front of my friend &lt;strong&gt;Marcus&lt;/strong&gt;, a senior freelance cloud architect who negotiates 2-3 enterprise statements of work every month.&lt;/p&gt;

&lt;p&gt;I had him test a real (anonymized) contract that a client had sent him earlier this month.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it went:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The "Aha!" Moment&lt;/strong&gt;: When DocuShield instantly caught an &lt;strong&gt;uncapped indemnification clause&lt;/strong&gt; in Section 3 and highlighted that the client was demanding ownership of Marcus's pre-existing software scripts in Section 2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Counter-Proposal&lt;/strong&gt;: Marcus clicked "Copy Counter-Proposal" for the IP ownership section:
&amp;gt; &lt;em&gt;"Contractor retains sole ownership of Pre-Existing Intellectual Property and standard code libraries created prior to or independent of this engagement."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did he pay / Would he pay?&lt;/strong&gt;: 
&amp;gt; &lt;em&gt;"I usually pay $350 for a 30-minute consultation with a tech lawyer to review these clauses. If you package this as a desktop menu bar app with local Ollama, I’d pay $50 without blinking—especially because I can show my clients that their draft never left my MacBook."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did he ask for next?&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Word (.docx) export&lt;/strong&gt; that preserves document formatting with redlines.&lt;/li&gt;
&lt;li&gt;A toggle to detect &lt;strong&gt;overly strict non-solicitation clauses&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ How to Run DocuShield AI Locally
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js (v18+)&lt;/li&gt;
&lt;li&gt;Ollama with &lt;code&gt;gemma3:4b&lt;/code&gt; (&lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone the repo&lt;/span&gt;
git clone https://github.com/grkadam7/docushield-ai.git
&lt;span class="nb"&gt;cd &lt;/span&gt;docushield-ai

&lt;span class="c"&gt;# 2. Install dependencies&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# 3. Start local Ollama runtime&lt;/span&gt;
ollama serve

&lt;span class="c"&gt;# 4. Launch DocuShield&lt;/span&gt;
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;code&gt;http://localhost:3000&lt;/code&gt; and start redacting with 100% air-gapped privacy!&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟 Conclusion
&lt;/h2&gt;

&lt;p&gt;Open-source AI isn't just a cost-saving alternative to Big Tech APIs—&lt;strong&gt;it is the only technological paradigm that makes privacy-first products viable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With models like Gemma 3 running on local consumer GPUs, we can finally build tools that protect user sovereignty, eliminate cloud surveillance, and unlock real, sustainable side hustles.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try it out, inspect the code, and keep your client data where it belongs: on your own machine.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Building an Air-Gapped PII Redactor &amp; Freelance NDA Auditor (Why Open AI is the Only Way This Side Hustle Works)</title>
      <dc:creator>Gagan Kadam</dc:creator>
      <pubDate>Sat, 17 Oct 2026 13:17:27 +0000</pubDate>
      <link>https://dev.to/grkadam7/building-an-air-gapped-pii-redactor-freelance-nda-auditor-why-open-ai-is-the-only-way-this-side-m3e</link>
      <guid>https://dev.to/grkadam7/building-an-air-gapped-pii-redactor-freelance-nda-auditor-why-open-ai-is-the-only-way-this-side-m3e</guid>
      <description>&lt;h2&gt;
  
  
  DocuShield AI: The Air-Gapped PII Redactor &amp;amp; Freelance Contract Auditor
&lt;/h2&gt;

&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 2026 DEV Challenge — Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ The Spark: The Freelancer's Confidentiality Dilemma
&lt;/h2&gt;

&lt;p&gt;If you are a freelance software developer, fractional CFO, paralegal, HR recruiter, or solo consultant, your business runs on &lt;strong&gt;client trust&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Every week, you handle high-stakes documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Master Services Agreements (MSAs)&lt;/strong&gt; with proprietary project codenames and NDA clauses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client Invoices &amp;amp; Tax Statements&lt;/strong&gt; containing bank wire numbers, routing codes, and personal SSNs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HR &amp;amp; Severance Agreements&lt;/strong&gt; with medical leaves and compensation details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you want to share a sanitized case study, test a new contract parser, or audit a 20-page agreement for predatory clauses, &lt;strong&gt;you face a terrifying catch-22&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"If I upload this client contract to ChatGPT or a cloud API, I am violating my client's NDA, GDPR, and basic professional ethics."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Proprietary cloud models (OpenAI, Anthropic, Google Cloud) require you to stream raw, unredacted client data across public internet connections to external servers. For legal, financial, and enterprise clients, that is an immediate breach of contract.&lt;/p&gt;

&lt;p&gt;Furthermore, cloud document redaction APIs charge &lt;strong&gt;$0.05 to $0.20 per page&lt;/strong&gt;. For a solo freelancer reviewing dozens of documents a month, that per-token tax destroys the margins of a lean micro-SaaS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I built DocuShield AI to solve this completely.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&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%2Fr2frp0rdri4996ptveau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr2frp0rdri4996ptveau.png" alt="Home Page" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60zph97yayde2p20avfu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60zph97yayde2p20avfu.png" alt="Contract risk auditor" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm21yg305w8zmc56tq6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm21yg305w8zmc56tq6g.png" alt="Calculator" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ What is DocuShield AI?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DocuShield AI&lt;/strong&gt; is a 100% on-device, air-gapped document sanitizer and contract risk auditor. It runs on the user's laptop powered by an open-weight model—&lt;strong&gt;Gemma 3 4B&lt;/strong&gt;—orchestrated locally via &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It does two crucial jobs with &lt;strong&gt;zero data egress&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent PII Scrubbing&lt;/strong&gt;: Identifies and redacts sensitive entities (SSNs, bank accounts, credit cards, emails, phone numbers, client executive names, rates, and secret project codenames) using three customizable masking strategies:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;██ Blackout&lt;/code&gt;: Classic classified black bars.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[TOKENS]&lt;/code&gt;: Reversible structured tokens (&lt;code&gt;[REDACTED_CLIENT_#1]&lt;/code&gt;, &lt;code&gt;[REDACTED_FINANCIAL_#1]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Pseudonyms&lt;/code&gt;: Synthetic, realistic replacement names and companies for client-facing mockups and QA testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelance Contract Risk Auditor&lt;/strong&gt;: Evaluates agreements for predatory clauses that burn freelancers:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uncapped Indemnification&lt;/strong&gt;: Flags one-sided liability exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP Confiscation Traps&lt;/strong&gt;: Detects clauses that claim your pre-existing developer tools, templates, or open-source libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment Delay Traps&lt;/strong&gt;: Flags Net-90 terms and absent kill fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-Paste Counter-Proposals&lt;/strong&gt;: Generates protective revised language you can email right back to the client.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The core prompt of this challenge asks: &lt;em&gt;Tell us where your open-based approach worked better than a closed one.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is the blunt truth: &lt;strong&gt;If DocuShield were built on proprietary cloud APIs, the product could not exist.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy is the Product, Not an Afterthought
&lt;/h3&gt;

&lt;p&gt;Our core value proposition is: &lt;em&gt;"Zero bytes leave your laptop's RAM."&lt;/em&gt; The moment you introduce an external API call, that guarantee is shattered. With open-weight models running on Ollama, inference happens completely offline. You can disconnect your Wi-Fi, sit on an airplane, and redact 50 pages of classified contracts without a single packet leaving your network card.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. True Zero-Margin Cost ($0.00 Forever)
&lt;/h3&gt;

&lt;p&gt;Cloud vision and NLP models charge per token and per image. In DocuShield, our marginal cost of processing 1 page or 10,000 pages is &lt;strong&gt;$0.00&lt;/strong&gt;. This makes a &lt;strong&gt;$39 one-time lifetime license&lt;/strong&gt; profitable on day one with 99% gross margins.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Model Autonomy &amp;amp; Freedom from Censorship
&lt;/h3&gt;

&lt;p&gt;Proprietary cloud APIs frequently trigger false-positive safety refusals when processing legal dispute documents, medical severance agreements, or fraud audit logs. With open weights, we have total control over prompt behavior, system instructions, and entity thresholds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------------+
|                                    THE COMPARISON                                       |
+------------------------------+---------------------------+------------------------------+
| Factor                       | Cloud APIs (OpenAI/Claude)| DocuShield (Open Gemma 3)    |
+------------------------------+---------------------------+------------------------------+
| Client Data Egress           | Transmitted to US clouds  | 100% Air-Gapped (0 KB sent)  |
| Operating Cost               | $0.05 - $0.20 per page    | $0.00 forever                |
| Internet Required            | Yes (High bandwidth)      | No (Runs 100% offline)       |
| Compliance Safety            | High risk of NDA breach   | 100% NDA &amp;amp; GDPR compliant    |
| Vendor Lock-In               | High                      | None (Swap any GGUF model)   |
+------------------------------+---------------------------+------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🏛️ System Architecture: The Dual-Engine Pipeline
&lt;/h2&gt;

&lt;p&gt;To achieve sub-second speed while catching both structured data (like SSNs) and subtle semantic data (like executive names or unlisted project names), DocuShield uses a &lt;strong&gt;symbiotic dual-engine architecture&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    subgraph Local_Device [Localhost Machine / RAM Only]
        User[User Interface] --&amp;gt;|Uploads PDF / TXT| Parser[Document Extractor]

        subgraph Pipeline [DocuShield Dual-Engine Core]
            L1[Layer 1: Deterministic Regex Engine\nSSNs, Credit Cards, IBAN, Phone, Email]
            L2[Layer 2: Local Gemma 3 4B via Ollama\nSemantic Entities &amp;amp; Contract Risk Evaluation]
            L3[Layer 3: Replacement &amp;amp; Diff Formatter\nBlackout, Smart Tokens, Pseudonyms]
        end

        Parser --&amp;gt; L1
        L1 --&amp;gt; L2
        L2 --&amp;gt; L3
        L3 --&amp;gt; User
    end

    Cloud[External Internet]
    Pipeline -.-&amp;gt;|🚫 ZERO CLOUD TRANSMISSION| Cloud&lt;/code&gt;&lt;/pre&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Layer 1 (Sub-millisecond Regex Engine)&lt;/strong&gt;: Captures high-entropy structured data (Social Security numbers, Credit Cards, IBANs, Phone Numbers, Emails, Currency strings) instantly with 100% precision and zero hallucination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 2 (Open-Weight Gemma 3 4B via Ollama)&lt;/strong&gt;: The open model evaluates semantic context—identifying confidential company names, contracting parties, trade secret references, and evaluating contract risk scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer 3 (Zero-Trace Flush)&lt;/strong&gt;: Masked documents and copyable counter-proposals are rendered in the browser. No telemetry or documents are ever saved to disk without user initiation.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💰 The Side Hustle Thesis: Would Someone Actually Pay?
&lt;/h2&gt;

&lt;p&gt;A side hustle must solve a real problem with &lt;strong&gt;demonstrated willingness to pay&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Commercial Pricing Model
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Community Edition ($0)&lt;/strong&gt;: 100% open-source for developers running Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelancer Pro ($39 One-Time Lifetime License)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Batch PDF folder drag-and-drop.&lt;/li&gt;
&lt;li&gt;Contract Risk Counter-Proposal generator.&lt;/li&gt;
&lt;li&gt;Exportable &lt;strong&gt;Safe Sharing Compliance Certificate&lt;/strong&gt; (proves to clients that their document was sanitized on an air-gapped machine).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boutique Firm / Agency Pack ($19/seat/mo)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Shared firm custom dictionaries and SOC2-ready on-device audit logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Freelancer ROI Math
&lt;/h3&gt;

&lt;p&gt;An average freelance consultant reviewing &lt;strong&gt;8 contracts per month&lt;/strong&gt; at &lt;strong&gt;$125/hr&lt;/strong&gt; spends ~2.5 hours per contract manually reviewing clauses or paying lawyers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Billable Hours Saved&lt;/strong&gt;: ~15 hours/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly Value Unlocked&lt;/strong&gt;: &lt;strong&gt;$1,875/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payback Period for $39 license&lt;/strong&gt;: &lt;em&gt;Less than 20 minutes.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👥 Landing the First User &amp;amp; Real Feedback
&lt;/h2&gt;

&lt;p&gt;To satisfy the challenge bonus criteria, I put DocuShield in front of my friend &lt;strong&gt;Marcus&lt;/strong&gt;, a senior freelance cloud architect who negotiates 2-3 enterprise statements of work every month.&lt;/p&gt;

&lt;p&gt;I had him test a real (anonymized) contract that a client had sent him earlier this month.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it went:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The "Aha!" Moment&lt;/strong&gt;: When DocuShield instantly caught an &lt;strong&gt;uncapped indemnification clause&lt;/strong&gt; in Section 3 and highlighted that the client was demanding ownership of Marcus's pre-existing software scripts in Section 2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Counter-Proposal&lt;/strong&gt;: Marcus clicked "Copy Counter-Proposal" for the IP ownership section:
&amp;gt; &lt;em&gt;"Contractor retains sole ownership of Pre-Existing Intellectual Property and standard code libraries created prior to or independent of this engagement."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did he pay / Would he pay?&lt;/strong&gt;: 
&amp;gt; &lt;em&gt;"I usually pay $350 for a 30-minute consultation with a tech lawyer to review these clauses. If you package this as a desktop menu bar app with local Ollama, I’d pay $50 without blinking—especially because I can show my clients that their draft never left my MacBook."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did he ask for next?&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Word (.docx) export&lt;/strong&gt; that preserves document formatting with redlines.&lt;/li&gt;
&lt;li&gt;A toggle to detect &lt;strong&gt;overly strict non-solicitation clauses&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ How to Run DocuShield AI Locally
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js (v18+)&lt;/li&gt;
&lt;li&gt;Ollama with &lt;code&gt;gemma3:4b&lt;/code&gt; (&lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone the repo&lt;/span&gt;
git clone https://github.com/grkadam7/docushield-ai.git
&lt;span class="nb"&gt;cd &lt;/span&gt;docushield-ai

&lt;span class="c"&gt;# 2. Install dependencies&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# 3. Start local Ollama runtime&lt;/span&gt;
ollama serve

&lt;span class="c"&gt;# 4. Launch DocuShield&lt;/span&gt;
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit &lt;code&gt;http://localhost:3000&lt;/code&gt; and start redacting with 100% air-gapped privacy!&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟 Conclusion
&lt;/h2&gt;

&lt;p&gt;Open-source AI isn't just a cost-saving alternative to Big Tech APIs—&lt;strong&gt;it is the only technological paradigm that makes privacy-first products viable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With models like Gemma 3 running on local consumer GPUs, we can finally build tools that protect user sovereignty, eliminate cloud surveillance, and unlock real, sustainable side hustles.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try it out, inspect the code, and keep your client data where it belongs: on your own machine.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TouchGasPedal⛽ : Touch Grass by Touching the Gas Pedal</title>
      <dc:creator>Gagan Kadam</dc:creator>
      <pubDate>Sun, 11 Oct 2026 13:00:21 +0000</pubDate>
      <link>https://dev.to/grkadam7/touchgaspedal-touch-grass-by-touching-the-gas-pedal-1dhp</link>
      <guid>https://dev.to/grkadam7/touchgaspedal-touch-grass-by-touching-the-gas-pedal-1dhp</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;Most modern AI applications share an unspoken goal: &lt;strong&gt;maximize screen time.&lt;/strong&gt; Whether it’s endless back-and-forth chat prompts, AI image galleries, or automated feed generators, the user remains tethered to a digital screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TouchGasPedal&lt;/strong&gt; inverts that paradigm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TouchGasPedal&lt;/strong&gt; is an open-source, AI-powered driving route discovery web application built with Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model. It helps you disconnect from digital feeds by planning unforgettable, real-world scenic and peaceful drives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick your vibe:&lt;/strong&gt; &lt;em&gt;Peaceful &amp;amp; Relaxing&lt;/em&gt;, &lt;em&gt;Scenic &amp;amp; Beautiful&lt;/em&gt;, &lt;em&gt;City Cruise&lt;/em&gt;, &lt;em&gt;Adventure &amp;amp; Thrilling&lt;/em&gt;, &lt;em&gt;Night Drive&lt;/em&gt;, or &lt;em&gt;Foodie Run&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set your time window:&lt;/strong&gt; &lt;em&gt;30 min&lt;/em&gt;, &lt;em&gt;1 hour&lt;/em&gt;, &lt;em&gt;2 hours&lt;/em&gt;, or &lt;em&gt;3+ hours&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set your starting point:&lt;/strong&gt; Type any neighborhood or click the auto-locate button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get your curated adventure:&lt;/strong&gt; Gemma generates a custom route with curated natural/scenic overlooks, roadside stops, time-of-day recommendations, a music vibe, and &lt;strong&gt;real-world micro-challenges&lt;/strong&gt; (e.g., &lt;em&gt;"Find the highest viewpoint bench and sit for 5 minutes without touching your phone"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-tap Google Maps handoff:&lt;/strong&gt; Tap &lt;strong&gt;Start Navigation&lt;/strong&gt;, mount your phone on the dashboard, roll the windows down, and drive.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Screen time:&lt;/strong&gt; &amp;lt; 60 seconds.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Real-world exploration:&lt;/strong&gt; 1 to 3+ hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Live Demo &amp;amp; Repository
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; markdown &lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/grkadam7" rel="noopener noreferrer"&gt;
        grkadam7
      &lt;/a&gt; / &lt;a href="https://github.com/grkadam7/TouchGasPedal" rel="noopener noreferrer"&gt;
        TouchGasPedal
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;⛽ TouchGasPedal&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Touch Grass by touching the gas pedal.&lt;/strong&gt;&lt;br&gt;
An open-source driving route curator powered by Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model, built for the &lt;strong&gt;Hacktoberfest 2026 "Touch Grass" DEV Challenge&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/grkadam7/TouchGasPedal/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://render.com/deploy?repo=https://github.com/grkadam7/TouchGasPedal" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c3053e93bc9f0a2cd84050a5ff9f07cc5e639621a72e50dce48781f4a38f10e2/68747470733a2f2f72656e6465722e636f6d2f696d616765732f6465706c6f792d746f2d72656e6465722d627574746f6e2e737667" alt="Deploy to Render"&gt;&lt;/a&gt;
&lt;a href="https://hacktoberfest.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/359a78a6c36b079b424e81e8d4f42c736fee8b4bef8a291fd8048c5d55af7688/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d6f72616e67652e737667" alt="Hacktoberfest"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fd639fbb18407f51aef4684e89325346e09f9af7864ae3def22454b234e97a60/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506f776572656425323042792d47656d6d612532304f70656e2d2d5765696768742d626c75652e737667" alt="Gemma AI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌿 Why "TouchGasPedal"? (The Touch Grass Philosophy)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Most AI apps keep you glued to your phone screen: chatting back and forth, generating infinite feeds, or optimizing digital workflows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TouchGasPedal does the opposite.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time on screen:&lt;/strong&gt; Under 60 seconds (pick your mood, pick duration, get route).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time in the real world:&lt;/strong&gt; 1 to 3+ hours outside exploring scenic overlooks, quiet country roads, local tea shacks, and mountain curves.&lt;/li&gt;
&lt;li&gt;Once your route is generated, tap &lt;strong&gt;Start Navigation&lt;/strong&gt;, mount your phone on the dashboard, roll the windows down, and go.&lt;/li&gt;
&lt;/ul&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;🎭 &lt;strong&gt;Mood-Based Curation:&lt;/strong&gt; Choose from &lt;em&gt;Peaceful&lt;/em&gt;, &lt;em&gt;Scenic&lt;/em&gt;, &lt;em&gt;City Cruise&lt;/em&gt;, &lt;em&gt;Adventure&lt;/em&gt;, &lt;em&gt;Night Drive&lt;/em&gt;, or &lt;em&gt;Foodie Run&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Flexible Time Windows:&lt;/strong&gt; From quick 30-minute stress-busters to…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/grkadam7/TouchGasPedal" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;em&gt;(Permissive MIT License)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo / Walkthrough:&lt;/strong&gt; &lt;a href="https://touchgaspedal.onrender.com" rel="noopener noreferrer"&gt;https://touchgaspedal.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Why Open Innovation Matters (Why Gemma?)
&lt;/h2&gt;

&lt;p&gt;For an application that actively encourages people to unplug and venture into the physical world, relying on closed, proprietary cloud black-boxes presents critical limitations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local &amp;amp; Trail-Ready Inferences:&lt;/strong&gt; Drivers frequently venture into rural valleys, national parks, and mountain passes where cellular data drops to zero. Open-weight models like &lt;strong&gt;Gemma&lt;/strong&gt; can be executed on-device or on local edge hardware inside vehicles without an active internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Surveillance &amp;amp; Geolocation Privacy:&lt;/strong&gt; Your driving habits, physical whereabouts, and spontaneous routes should remain your own. Open-weight AI ensures users don't have to surrender personal telemetry and location footprints to proprietary advertising trackers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community-Curated Route Knowledge:&lt;/strong&gt; Because Gemma is open-weight, local driving clubs, off-road communities, and biking groups can fine-tune custom LoRA adapters on local trail knowledge without permission or platform lock-in.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🛠️ Architecture &amp;amp; Technical Execution
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                     ┌─────────────────────────────┐
                     │   Browser (Minimal UI)      │
                     │  Vibe • Duration • Geolocation
                     └──────────────┬──────────────┘
                                    │ POST /api/suggest-drive
                                    ▼
                     ┌─────────────────────────────┐
                     │     Node / Express API      │
                     └──────────────┬──────────────┘
                                    │
             ┌──────────────────────┴──────────────────────┐
             │                                             │
             ▼                                             ▼
┌───────────────────────────┐                ┌───────────────────────────┐
│ Gemma 4 Open-Weight Model │                │ Google Maps Hand-Off API  │
│ (Route &amp;amp; Stop Reasoning)  │                │ (Turn-by-turn Navigation) │
└───────────────────────────┘                └───────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Vanilla HTML5, CSS3 (Nature-inspired dark theme), and vanilla JavaScript for ultra-lightweight, instantaneous mobile performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js + Express.js API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Orchestration:&lt;/strong&gt; Google Gemma open-weight models (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; / &lt;code&gt;gemma-4-31b-it&lt;/code&gt;) via &lt;code&gt;@google/generative-ai&lt;/code&gt; with robust fallback to &lt;code&gt;gemini-2.5-flash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geocoding:&lt;/strong&gt; OpenStreetMap / Nominatim API (fully aligned with the open-data ecosystem).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation Handoff:&lt;/strong&gt; Universal Google Maps Intent URLs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📸 Screenshots &amp;amp; Experience
&lt;/h2&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%2Fnupg5tdvhh8d09mj8tyw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnupg5tdvhh8d09mj8tyw.png" alt="Screenshot of the TouchGasPedal user interface showing vibe selection and time windows" width="800" height="852"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgbveozhrd5l0u92ehzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgbveozhrd5l0u92ehzf.png" alt="Screenshot of the TouchGasPedal user interface showing vibe selection and time windows" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Partner &amp;amp; Featured Track Entries
&lt;/h2&gt;

&lt;p&gt;This project is submitted to two prize tracks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200):&lt;/strong&gt; Leverages Google's lightweight, open-weight models for fast local/offline-ready driving route synthesis and real-world exploration challenges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200):&lt;/strong&gt; Includes an infrastructure-as-code &lt;code&gt;render.yaml&lt;/code&gt; blueprint enabling 1-click cloud deployments on Render's free web service tier.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;"Touch Grass" doesn't have to mean sitting idle on your lawn — sometimes the best way to clear your head and reconnect with the physical world is to turn the ignition, play some lo-fi beats, and follow a winding road.&lt;/p&gt;

&lt;p&gt;Mount your phone, roll down the windows, and &lt;strong&gt;TouchGasPedal&lt;/strong&gt;. ⛽🚗💨&lt;/p&gt;

&lt;p&gt;What is your absolute favorite scenic driving route or road trip playlist? Let me know in the comments below&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I built my friend an offline AI to justify skipping 8 AM classes</title>
      <dc:creator>Gagan Kadam</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:38:45 +0000</pubDate>
      <link>https://dev.to/grkadam7/i-built-my-friend-an-offline-ai-to-justify-skipping-8-am-classes-52f3</link>
      <guid>https://dev.to/grkadam7/i-built-my-friend-an-offline-ai-to-justify-skipping-8-am-classes-52f3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My friend is constantly doing mental gymnastics every morning: &lt;em&gt;"If I skip OS today but my friend marks proxy, can I still afford to bunk Physics tomorrow without falling below 75%?"&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;The math is stressful, the stakes are high, and honestly, they just wanted to know if they could sleep in.&lt;/p&gt;

&lt;p&gt;So for this weekend challenge, I built them &lt;strong&gt;ShouldISkipClass.ai&lt;/strong&gt;—a 100% local (V1) , privacy-first AI web app that acts as their personal (and brutally honest) attendance advisor. It takes their schedule, calculates the risks, and tells them exactly what to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Versions
&lt;/h2&gt;

&lt;p&gt;I ended up building two versions of the project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V1 — Local / Privacy Edition 🔒
The main branch. Gemma 3 4B + Ollama&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the original architecture and the privacy-focused version.&lt;br&gt;
It requires Ollama and the Gemma model to be installed locally, but once the model is available, the AI inference does not depend on a hosted AI API.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V2 — Hosted Edition ☁️
Separate v2-hosted branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This version uses a hosted Gemma API and can be deployed through Render, making the application easier to access without installing Ollama.&lt;br&gt;
I kept this separate deliberately: the local version remains the project's privacy-first implementation, while the hosted version makes the idea easier to demonstrate publicly.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://should-i-skip-class-ai.onrender.com/" rel="noopener noreferrer"&gt;ShouldISkipClassAi On Render&lt;/a&gt; (V2)&lt;/p&gt;

&lt;p&gt;If you want to run it yourself, just install Python and Ollama, run &lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;, and ask the AI if you should skip your next lecture! (V1)&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The project is fully open-source and I’m actively looking for contributors for Hacktoberfest! &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/grkadam7" rel="noopener noreferrer"&gt;
        grkadam7
      &lt;/a&gt; / &lt;a href="https://github.com/grkadam7/should-i-skip-class-ai" rel="noopener noreferrer"&gt;
        should-i-skip-class-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An open-source AI-powered college attendance advisor using Gemma and Ollama
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎓 ShouldISkipClass.ai&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;An open-source AI-powered college attendance advisor that runs 100% locally.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Built with &lt;strong&gt;Gemma&lt;/strong&gt; (Google's open-weight model) via &lt;strong&gt;Ollama&lt;/strong&gt; — your academic data never leaves your machine.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/8f7529e8f0935122fe9a00e9cce55637ffabb36477f7beeb75eafab7899b0966/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e372b2d626c75653f6c6f676f3d707974686f6e"&gt;&lt;img src="https://camo.githubusercontent.com/8f7529e8f0935122fe9a00e9cce55637ffabb36477f7beeb75eafab7899b0966/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e372b2d626c75653f6c6f676f3d707974686f6e" alt="Python"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/c5e221f175d0d339a8501058230ffb271aec375297db2b93210bee9bc26bd4cc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d47656d6d61253230332d6f72616e67653f6c6f676f3d676f6f676c65"&gt;&lt;img src="https://camo.githubusercontent.com/c5e221f175d0d339a8501058230ffb271aec375297db2b93210bee9bc26bd4cc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d47656d6d61253230332d6f72616e67653f6c6f676f3d676f6f676c65" alt="Gemma"&gt;&lt;/a&gt;python app.py
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/34f43e33ebbeffbd08ad1db7e3c7b5f40d728c58f28bc214ac571e1f553d6abe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f496e666572656e63652d4f6c6c616d612d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/34f43e33ebbeffbd08ad1db7e3c7b5f40d728c58f28bc214ac571e1f553d6abe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f496e666572656e63652d4f6c6c616d612d626c61636b" alt="Ollama"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5caa455d8debc46fb23abbadb45a733a937f3910a73fc875c2f7820468e1bb54/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/5caa455d8debc46fb23abbadb45a733a937f3910a73fc875c2f7820468e1bb54/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🤔 What Does It Do?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Tell it your attendance percentage, teacher strictness, upcoming tests, and more — and it uses &lt;strong&gt;Gemma&lt;/strong&gt; (running locally via Ollama) to analyze whether you can safely skip your next class.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📊 Attendance tracking with visual bar&lt;/li&gt;
&lt;li&gt;👨‍🏫 Teacher strictness rating (1-10)&lt;/li&gt;
&lt;li&gt;📝 Upcoming test/assignment awareness&lt;/li&gt;
&lt;li&gt;🤝 Proxy availability consideration&lt;/li&gt;
&lt;li&gt;⏰ Full day timetable context (gap &amp;amp; packed day analysis)&lt;/li&gt;
&lt;li&gt;🧪 Lecture vs Lab vs Tutorial differentiation&lt;/li&gt;
&lt;li&gt;📈 Subject difficulty &amp;amp; grade situation analysis&lt;/li&gt;
&lt;li&gt;🎯 Risk score (1-10) with detailed reasoning&lt;/li&gt;
&lt;li&gt;💡 Witty, relatable advice from the AI&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🔒 V1 — Local / Privacy Edition&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; branch is designed to run locally using &lt;strong&gt;Gemma 3 4B + Ollama&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Your attendance, grades, timetable, and…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/grkadam7/should-i-skip-class-ai" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;The stack is super lightweight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python + Flask&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Inference:&lt;/strong&gt; Ollama API + Gemma 3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Vanilla HTML/CSS/JS with a dark, glassmorphic UI so it looks premium.
&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%2Fcv8eea7v21pjvucqzfq6.png" alt="A dark glassmorphic web dashboard showing the AI attendance advisor verdict and risk score" width="800" height="394"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of writing complex &lt;code&gt;if/else&lt;/code&gt; statements for every possible scenario, the frontend collects the context (current attendance, teacher strictness, proxy availability, and their &lt;em&gt;full day's timetable&lt;/em&gt;) and passes it to Flask. &lt;/p&gt;

&lt;p&gt;Flask then sends a highly specific system prompt to the local Gemma model. Gemma acts as the advisor, looking for massive schedule gaps or "sleep tax" morning classes, and returns a strict JSON response with a verdict (&lt;code&gt;SAFE TO SKIP&lt;/code&gt;, &lt;code&gt;ATTEND&lt;/code&gt;, or &lt;code&gt;RISKY SKIP&lt;/code&gt;), a risk score out of 10, and witty practical tips.&lt;/p&gt;

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

&lt;p&gt;My friend was completely against typing their terrible grades and attendance records into ChatGPT. Student data is personal! &lt;/p&gt;

&lt;p&gt;That’s why I chose to build this using &lt;strong&gt;Gemma 3 (4B)&lt;/strong&gt; running locally via &lt;strong&gt;Ollama&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s fully offline.&lt;/li&gt;
&lt;li&gt;Zero API costs.&lt;/li&gt;
&lt;li&gt;Their academic struggles stay entirely on their own laptop.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Hacktoberfest Weekend Challenge &lt;br&gt;
Build for a Friend&lt;br&gt;
Best Use of Gemma&lt;br&gt;
Best Use of Render&lt;/p&gt;

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