<?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: Piyush Gupta</title>
    <description>The latest articles on DEV Community by Piyush Gupta (@knight0916).</description>
    <link>https://dev.to/knight0916</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%2F3995091%2Fd2bcde73-90e2-4c8d-8a2b-a67d97053367.png</url>
      <title>DEV Community: Piyush Gupta</title>
      <link>https://dev.to/knight0916</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/knight0916"/>
    <language>en</language>
    <item>
      <title>Ghost of the Internet: Bringing Forgotten Web Communities Back to Life 👻</title>
      <dc:creator>Piyush Gupta</dc:creator>
      <pubDate>Thu, 29 Oct 2026 14:04:59 +0000</pubDate>
      <link>https://dev.to/knight0916/ghost-of-the-internet-bringing-forgotten-web-communities-back-to-life-17k1</link>
      <guid>https://dev.to/knight0916/ghost-of-the-internet-bringing-forgotten-web-communities-back-to-life-17k1</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;Ghost of the Internet&lt;/strong&gt; is an interactive time capsule designed to bring the forgotten web back to life.&lt;/p&gt;

&lt;p&gt;The early internet was full of personal websites, gaming forums, fan pages, guestbooks, and small neighborhoods built by people who simply wanted to share something with the world. Over the past two decades, many of these places disappeared completely, while others survive only in fragmented crawls preserved by web archives.&lt;/p&gt;

&lt;p&gt;I wanted to explore a central question: &lt;strong&gt;What if we could do more than just view those archived fragments? What if we could talk to the history they preserve?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this week's theme, &lt;em&gt;Ghost in the Machine&lt;/em&gt;, I chose to interpret the "ghost" not as a spooky fictional monster, but as the real digital ghosts of the early web: the forgotten voices, forum discussions, and abandoned websites left behind in copper wires and magnetic tapes twenty-three years ago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghost of the Internet&lt;/strong&gt; combines a nostalgic early-2000s retro browser shell with an in-browser, Retrieval-Augmented Generation (RAG) conversational guide:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Explore the Forgotten Web:&lt;/strong&gt; Browse three curated historical worlds through an authentic Windows 98/2000 browser chrome:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Nexus 2003:&lt;/strong&gt; A gaming and dial-up tuning forum discussing Diablo II Baal runs, 900ms lag, and the quiet fade of August 2003.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pixel Witch's Cyber Attic:&lt;/strong&gt; An authentic GeoCities Area51 personal homepage featuring animated visitor counters, glitter dollz, fallen hero shrines, and an untouched guestbook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starlight Anime Webring (2003):&lt;/strong&gt; An early anime fandom hub with &lt;em&gt;Serial Experiments Lain&lt;/em&gt; and &lt;em&gt;Cowboy Bebop&lt;/em&gt; reviews, concluding with the webmaster's farewell server lease broadcast.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talk to the Ghost:&lt;/strong&gt; Interrogate the archive using an in-browser conversational intelligence powered by a mathematical BM25 ranking algorithm ($k_1=1.5, b=0.75$). The Ghost features two response modes:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🏛️ Historian Mode:&lt;/strong&gt; Delivers objective, analytical answers strictly citing verbatim quotes, original user handles, and crawl timestamps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📻 Community Echo Mode:&lt;/strong&gt; Captures the atmospheric vernacular and subcultural rhythm of early-2000s forum life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛡️ Epistemic Boundary Guardrail:&lt;/strong&gt; If asked about events outside the archive (e.g. modern cryptocurrencies or post-2003 history), the Ghost explicitly refuses to hallucinate: &lt;em&gt;"The surviving archive ends in late 2003 and contains no verifiable mention of this topic. Because this is a grounded historical time capsule, I will not fabricate answers outside surviving evidence."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow the Last Traces &amp;amp; Activity Fade:&lt;/strong&gt; Explore dynamically generated monthly post density bar charts across 2001–2003, tracking the exact timeline of when conversations peaked and when crawler sweeps recorded the final post.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspect Provenance in Evidence Mode:&lt;/strong&gt; Click any citation pill (&lt;code&gt;↳ [ghost_user_97 · 14 Aug 2003]&lt;/code&gt;) to open an evidence modal showing verbatim raw quotations, confidence scores, and deep-links to jump directly to that page in the retro browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Halloween Special — The Digital Graveyard:&lt;/strong&gt; In the spirit of Halloween and Día de los Muertos, wander through an interactive graveyard of 3D stone tombstones honoring the departed technologies of our digital childhoods (&lt;em&gt;Dial-up 56k Modem&lt;/em&gt;, &lt;em&gt;GeoCities&lt;/em&gt;, &lt;em&gt;Netscape Navigator&lt;/em&gt;, &lt;em&gt;Macromedia Flash&lt;/em&gt;, &lt;em&gt;AIM&lt;/em&gt;, and &lt;em&gt;The Homepage Guestbook&lt;/em&gt;). Users can click to light memorial candles, accompanied by procedurally synthesized Web Audio bell chimes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The ghost isn't a resurrected person. It's an AI-generated voice grounded strictly in surviving digital traces. That distinction matters: &lt;strong&gt;Evidence ≠ Omniscience&lt;/strong&gt;.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🚀 Live Deployed Website:&lt;/strong&gt; &lt;a href="https://ghostofthenet.vercel.app/" rel="noopener noreferrer"&gt;https://ghostofthenet.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Local Server:&lt;/strong&gt; &lt;code&gt;http://localhost:3000/&lt;/code&gt; (via &lt;code&gt;npm start&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Walkthrough Experience
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the live site and step inside &lt;strong&gt;The Nexus 2003&lt;/strong&gt; in the retro browser.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Thread #0047&lt;/strong&gt; to read user &lt;code&gt;ghost_user_97&lt;/code&gt;'s final message from August 14, 2003. Notice the simulated dial-up progress bar and synchronized Wayback timestamp ribbon.&lt;/li&gt;
&lt;li&gt;Switch to the &lt;strong&gt;02 Ask the Ghost&lt;/strong&gt; tab. Submit the query: &lt;em&gt;"Why did everyone leave?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Read the synthesized response and click the citation pill &lt;code&gt;↳ [ghost_user_97 · 14 Aug 2003]&lt;/code&gt; to open &lt;strong&gt;Evidence Mode&lt;/strong&gt;, inspecting the exact verified passage and metadata.&lt;/li&gt;
&lt;li&gt;Switch to &lt;strong&gt;03 Digital Graveyard &amp;amp; Fade&lt;/strong&gt;. Inspect the monthly post decay chart, scroll to the tombstones, and click &lt;strong&gt;"Light a Candle"&lt;/strong&gt; on the &lt;strong&gt;DIAL-UP 56K MODEM&lt;/strong&gt; or &lt;strong&gt;GEOCITIES&lt;/strong&gt; tombstone to hear the memorial chime and increment the respect tally.&lt;/li&gt;
&lt;li&gt;Toggle the &lt;strong&gt;🎃 Spooky: ON&lt;/strong&gt; switch in the top system bar and click the floating ghost and pumpkin companions for retro sound easter eggs.&lt;/li&gt;
&lt;/ol&gt;




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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/guptapiyush16" rel="noopener noreferrer"&gt;
        guptapiyush16
      &lt;/a&gt; / &lt;a href="https://github.com/guptapiyush16/Ghost-of-the-Net" rel="noopener noreferrer"&gt;
        Ghost-of-the-Net
      &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;🌐 Ghost of the Internet&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;An interactive time machine for the forgotten web, where archived websites become explorable worlds and AI brings their history back to life.&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Hacktoberfest 2026 · Week 4 MVP Submission&lt;/strong&gt;&lt;/p&gt;
&lt;p&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://github.com/guptapiyush16/Ghost-of-the-Net#" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/Ghost-of-the-Net#" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6fcbd984bdb833bedbf8d69da5a4a10c97302c31d1f23c486d8d2785c5cb9a41/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446570656e64656e636965732d5a65726f2d627269676874677265656e2e737667" alt="Zero Dependencies"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/Ghost-of-the-Net#" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/49c1a61b7a7ceef4cb1e77e730a7540e6a64a9c4b502ded22ba88d8bc6828c17/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4172636869746563747572652d4c6f63616c2d2d46697273742d707572706c652e737667" alt="Local-First"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/Ghost-of-the-Net#" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b3832af37cdddf3b3394440afb0489881544b91241c8c6fc4cebdac2f4083296/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d47726f756e64656425323052414725323028424d3235292d7465616c2e737667" alt="Grounded RAG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;1. The Idea in Simple Words&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The early internet was full of personal websites, gaming forums, fan pages, guestbooks, and communities built by ordinary people. Most of those websites disappeared. Others survive only in web archives like the Wayback Machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ghost of the Internet&lt;/strong&gt; lets people explore that forgotten internet and talk to AI-generated "ghosts" grounded strictly in surviving web archive evidence.&lt;/p&gt;
&lt;p&gt;Imagine three experiences combined into one:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Internet Archive&lt;/strong&gt;: Preserved historical web pages from 1999–2003.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Retro Browser&lt;/strong&gt;: The tactile look and feel of browsing the early web inside a simulated early-2000s browser window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An AI Time Traveler&lt;/strong&gt;: A conversational guide that helps you understand what you are seeing without hallucinating…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/guptapiyush16/Ghost-of-the-Net" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/guptapiyush16/Ghost-of-the-Net.git" rel="noopener noreferrer"&gt;https://github.com/guptapiyush16/Ghost-of-the-Net.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Test Suite:&lt;/strong&gt; Run &lt;code&gt;npm test&lt;/code&gt; to execute the built-in 45-point end-to-end verification suite (&lt;code&gt;test-e2e.js&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; Open Source (MIT License)&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The main challenge was making an AI conversation feel authentic and evocative without allowing the model to invent history.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ghostofthenet/
├── index.html          # Semantic HTML5 retro browser shell &amp;amp; experience views
├── styles.css          # Early-2000s desktop chrome, scanlines, and GeoCities styling
├── ghost-client.js     # Virtual browser state machine, BM25 retrieval, Web Audio synth
├── archiveData.js      # Curated historical corpus (3 worlds, 8 pages, 10 passages)
├── ingest.js           # Production Wayback Machine CDX API ingestion pipeline
├── local-server.js     # Lightweight local/Render Node server with /api/ingest
├── build.js            # Automated build script bundling static assets into dist/
├── test-e2e.js         # Automated 45-point deterministic verification harness
├── render.yaml         # Render Blueprint Infrastructure-as-Code specification
└── vercel.json         # Vercel Global Edge CDN deployment configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Zero-API-Key In-Browser BM25 Retrieval Engine
&lt;/h3&gt;

&lt;p&gt;Instead of relying on remote, closed-source vector database APIs, the search and retrieval pipeline is written in pure ECMAScript and runs 100% in the user's browser. It tokenizes queries, applies stopword filtering, normalizes document lengths, and calculates inverse document frequency (IDF) using standard BM25 ranking parameters ($k_1=1.5, b=0.75$). This gives sub-millisecond retrieval speeds with deterministic repeatability and zero marginal cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Epistemic Uncertainty &amp;amp; Dual Personas
&lt;/h3&gt;

&lt;p&gt;The grounding engine passes the top $K$ passages into a dual-mode synthesis layer. If the highest passage relevance score falls below the confidence threshold ($&amp;lt;0.6$), the engine halts and outputs an explicit statement acknowledging the boundaries of the crawl. When evidence is found, it formats either a rigorous factual citation (Historian Mode) or an evocative subculture reflection (Community Echo Mode).&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Production Archive Ingestion Pipeline (&lt;code&gt;ingest.js&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;To source real historical web data, I built a command-line pipeline that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries the Internet Archive’s Capture Index (CDX) API (&lt;code&gt;web.archive.org/cdx/search/cdx&lt;/code&gt;) with timestamp collapsing (&lt;code&gt;collapse=timestamp:6&lt;/code&gt;) to capture monthly historical snapshots.&lt;/li&gt;
&lt;li&gt;Retrieves raw payloads using the &lt;code&gt;id_&lt;/code&gt; modifier (&lt;code&gt;web.archive.org/web/{timestamp}id_/{url}&lt;/code&gt;) to bypass Wayback banners and rewrite scripts.&lt;/li&gt;
&lt;li&gt;Unwraps archaic nested &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt; layouts and sanitizes &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; blocks.&lt;/li&gt;
&lt;li&gt;Applies regex PII redaction to mask historical emails (&lt;code&gt;[email-redacted]&lt;/code&gt;) and phone numbers (&lt;code&gt;[phone-redacted]&lt;/code&gt;) for archival ethics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Procedural Web Audio API Synthesizer
&lt;/h3&gt;

&lt;p&gt;Zero audio files (MP3s/WAVs) are downloaded. All sound effects—including mouse clicks, 56k dial-up modem handshakes, theremin warbles, and memorial bell chimes—are synthesized mathematically using Web Audio &lt;code&gt;OscillatorNode&lt;/code&gt; and &lt;code&gt;GainNode&lt;/code&gt; frequency envelopes.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Multi-Cloud Edge Deployment
&lt;/h3&gt;

&lt;p&gt;The application is configured to build cleanly into &lt;code&gt;dist/&lt;/code&gt; and deploy as an immutable, sub-10ms static site across Vercel’s Global Anycast Edge CDN (&lt;code&gt;vercel.json&lt;/code&gt;), while also supporting containerized PaaS environments on Render via an Infrastructure-as-Code Blueprint (&lt;code&gt;render.yaml&lt;/code&gt;).&lt;/p&gt;




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

&lt;p&gt;Digital history is inherently fragile. Websites disappear, hosting services shut down, and online communities lose the context that once made them meaningful. &lt;/p&gt;

&lt;p&gt;Open innovation matters for this project for three fundamental reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Preservation Belongs to Everyone, Not Cloud Providers:&lt;/strong&gt; If tools for exploring digital history require paid subscriptions, proprietary vector databases, or closed API tokens, our ability to interact with our own cultural memory becomes paywalled and vulnerable to platform shutdown. By building an open-source, client-side RAG engine, the entire application can run on an offline laptop with the internet turned off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eliminating the Compulsion to Hallucinate:&lt;/strong&gt; Closed commercial LLMs are trained to always produce a confident answer, even when they lack knowledge. In historical exploration, this is catastrophic—it fabricates quotes and invents fake historical figures. Open innovation allowed us to inspect every step of the retrieval pipeline, enforce strict mathematical score floors, and program the Ghost to honestly admit: &lt;em&gt;"The archive is silent here."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable Provenance &amp;amp; Privacy:&lt;/strong&gt; Public web archives contain raw historical traces from real people. An open-source pipeline allows anyone to audit the PII redaction rules, verify extraction ethics, and adapt the codebase to preserve their own family histories, local BBS communities, or school forums.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal isn't to manufacture a convincing past. It's to make the past we still have easier to explore.&lt;/p&gt;




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

&lt;p&gt;This project was built through a collaborative, agentic pair-programming workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated Verification Harness:&lt;/strong&gt; We created a deterministic 45-point test suite (&lt;a&gt;&lt;code&gt;test-e2e.js&lt;/code&gt;&lt;/a&gt;) that tests corpus integrity, BM25 scoring math, PII masking, and live edge network responses. Running &lt;code&gt;npm test&lt;/code&gt; validates all 45 assertions with zero failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging Cloud Heuristics:&lt;/strong&gt; When deploying to Vercel, we diagnosed a subtle platform collision where Vercel's zero-config backend engine (&lt;code&gt;@vercel/backends&lt;/code&gt;) auto-detected &lt;code&gt;dist/app.js&lt;/code&gt; as an Express server and wrapped it in a crashing serverless function (&lt;code&gt;500 FUNCTION_INVOCATION_FAILED&lt;/code&gt;). By renaming the file to &lt;code&gt;ghost-client.js&lt;/code&gt; and configuring &lt;code&gt;"framework": null&lt;/code&gt;, we forced Vercel to treat the app as a pure static edge deployment, achieving 100% uptime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture &amp;amp; Decision Logs:&lt;/strong&gt; Every meaningful technical tradeoff was recorded in &lt;a&gt;&lt;code&gt;Decisions.mc&lt;/code&gt;&lt;/a&gt; (19 decisions logged), execution flows were mapped in &lt;a&gt;&lt;code&gt;Flow.md&lt;/code&gt;&lt;/a&gt;, and interview-style technical deep dives were recorded in &lt;a&gt;&lt;code&gt;tech.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Imagine finding a message board where people discussed their favorite games twenty-three years ago.&lt;/p&gt;

&lt;p&gt;You read a post from someone named &lt;code&gt;ghost_user_97&lt;/code&gt; on August 14, 2003:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"anyone still here? my parents say they're cancelling the internet next month lol. i keep getting this weird dial-up noise even when nobody is online. probably nothing. anyway, did anyone else hear it?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You scroll through the replies: &lt;code&gt;dialup_dan&lt;/code&gt; talking about starting high school, another user saying they can only check the board once a week from the public library. Then the posts stop.&lt;/p&gt;

&lt;p&gt;When you ask the Ghost: &lt;em&gt;"What happened to everyone here?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Ghost doesn't pretend to know what college they attended or what careers they chose. It simply shows you the evidence: the sudden drop in posts in late August 2003, the dial-up disconnection notices, and the silence that followed.&lt;/p&gt;

&lt;p&gt;That uncertainty is the heart of the experience. The early internet was made of real people, late nights, and glowing CRT monitors. &lt;strong&gt;Ghost of the Internet&lt;/strong&gt; helps us listen to the traces they left behind—without pretending those traces tell the whole story.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Featured Categories
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; The project includes a production-ready &lt;code&gt;render.yaml&lt;/code&gt; Infrastructure-as-Code blueprint defining a Node web service with automated builds (&lt;code&gt;node build.js&lt;/code&gt;), start command (&lt;code&gt;node local-server.js&lt;/code&gt;), health check probes at &lt;code&gt;/api/health&lt;/code&gt;, and 1-click deployment instructions in &lt;code&gt;README.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>openai</category>
      <category>ai</category>
    </item>
    <item>
      <title>ScreenStash: Turn Screenshots into Actionable Plans with Local Gemma 3 &amp; Render</title>
      <dc:creator>Piyush Gupta</dc:creator>
      <pubDate>Sun, 25 Oct 2026 21:31:01 +0000</pubDate>
      <link>https://dev.to/knight0916/screenstash-turn-screenshots-into-actionable-plans-with-local-gemma-3-render-5f27</link>
      <guid>https://dev.to/knight0916/screenstash-turn-screenshots-into-actionable-plans-with-local-gemma-3-render-5f27</guid>
      <description>&lt;h2&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;/h2&gt;

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

&lt;p&gt;We all do it: we hit &lt;code&gt;Win + Shift + S&lt;/code&gt; or &lt;code&gt;Cmd + Shift + 4&lt;/code&gt; a dozen times a day.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A meeting link dropped in a Slack message.&lt;/li&gt;
&lt;li&gt;An invoice or receipt after paying for coffee.&lt;/li&gt;
&lt;li&gt;A bug trace in a terminal console.&lt;/li&gt;
&lt;li&gt;An event invite on Twitter / X.&lt;/li&gt;
&lt;li&gt;A travel itinerary or flight confirmation.
And where do they go? &lt;strong&gt;To die in &lt;code&gt;~/Pictures/Screenshots&lt;/code&gt;&lt;/strong&gt;. Weeks later, you have 600 unorganized PNG files named &lt;code&gt;Screenshot (482).png&lt;/code&gt;, and the tasks or meetings you captured are long forgotten.
&lt;strong&gt;ScreenStash&lt;/strong&gt; solves this once and for all. It is a lightweight, privacy-first desktop workspace that quietly sits in the background, watches for new screenshots, debounces OS file locks, deduplicates via SHA-256, and immediately turns chaotic images into &lt;strong&gt;actionable tasks, interactive calendar events, and categorized records&lt;/strong&gt; — completely on-device or via cloud runtime.
### Key Highlights:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Friction Ingestion&lt;/strong&gt;: Automatic background watcher daemon (&lt;code&gt;.pyw&lt;/code&gt;) detects new screenshots with zero user intervention and triggers a floating OS toast notification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-Device Local Intelligence&lt;/strong&gt;: Powered by Google's open-weight &lt;strong&gt;Gemma 3:4b&lt;/strong&gt; running locally via Ollama. Screenshots never leave your computer unless you explicitly choose to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Cloud AI Runtime&lt;/strong&gt;: For users on low-power laptops without GPU/Ollama, ScreenStash seamlessly routes to a &lt;strong&gt;Render&lt;/strong&gt;-hosted Cloud AI runtime for fast vision extraction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Universal AI / LLM Semantic Filtering&lt;/strong&gt;: Every search query, smart collection (&lt;em&gt;"Needs attention"&lt;/em&gt;, &lt;em&gt;"Saved for later"&lt;/em&gt;), and filter is scored through an on-device multi-cluster semantic NLP engine with explanatory reasoning pills on each card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Monthly Calendar&lt;/strong&gt;: A full 7-day grid (Mon–Sun) with multi-tier temporal extraction (mapping relative dates like &lt;em&gt;"next Tuesday"&lt;/em&gt; or extracted event timestamps) and interactive, toggleable task checklists.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Native OS Integration&lt;/strong&gt;: Built with &lt;strong&gt;Tauri 2 + Rust + React + TypeScript&lt;/strong&gt;, featuring floating hover popovers, full-screen lightbox previews, and native OS Explorer commands (&lt;code&gt;Show in Folder&lt;/code&gt;).
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/guptapiyush16/ScreenStash" rel="noopener noreferrer"&gt;https://github.com/guptapiyush16/ScreenStash&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud API Runtime&lt;/strong&gt;: &lt;a href="https://screenstash-cloudapi.onrender.com" rel="noopener noreferrer"&gt;https://screenstash-cloudapi.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Landing Page&lt;/strong&gt;: &lt;a href="https://screenstash.onrender.com/" rel="noopener noreferrer"&gt;https://screenstash.onrender.com/&lt;/a&gt;
### Visual Walkthrough:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Monthly Calendar &amp;amp; Day Agenda&lt;/strong&gt;:
Browse screenshots visually across dates. Clicking any date reveals scheduled meetings, flight times, and interactive task checklists you can strike through directly from the dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Action Menus&lt;/strong&gt;:
Clean three-dots menu on every card with direct OS actions: &lt;em&gt;View full screenshot&lt;/em&gt;, &lt;em&gt;Show in folder&lt;/em&gt; (opens Windows Explorer directly highlighting the file), &lt;em&gt;Copy summary&lt;/em&gt;, &lt;em&gt;Copy OCR text&lt;/em&gt;, &lt;em&gt;Search related&lt;/em&gt;, and &lt;em&gt;Remove from stash&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent AI Reasoning Pills&lt;/strong&gt;:
Search for &lt;em&gt;"dinner expenses"&lt;/em&gt; or &lt;em&gt;"zoom sync"&lt;/em&gt;, and ScreenStash displays semantic match pills like &lt;code&gt;✦ AI: Semantic concept match (expense: "receipt") · Direct match in title&lt;/code&gt; explaining exactly why the AI selected it.
---
## Code
&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/guptapiyush16" rel="noopener noreferrer"&gt;
        guptapiyush16
      &lt;/a&gt; / &lt;a href="https://github.com/guptapiyush16/ScreenStash" rel="noopener noreferrer"&gt;
        ScreenStash
      &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;ScreenStash&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;ScreenStash is a downloadable Tauri desktop application for Windows and macOS. It watches a user-selected screenshot folder, extracts text locally, and stores organized results in a local SQLite database.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Download the &lt;code&gt;.exe&lt;/code&gt; or &lt;code&gt;.dmg&lt;/code&gt; from the landing page or GitHub Releases. The distributed application does not require Python or a source checkout.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Processing choices&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Built-in offline engine:&lt;/strong&gt; Tesseract OCR plus local heuristics. It needs no account, model download, or network connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 or Llama 3.2:&lt;/strong&gt; optional local models run through Ollama. Install Ollama once from its official download page, select a model in Settings, then let ScreenStash download it locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ScreenStash accepts only loopback Ollama endpoints (&lt;code&gt;localhost&lt;/code&gt;, &lt;code&gt;127.0.0.1&lt;/code&gt;, or &lt;code&gt;::1&lt;/code&gt;) so screenshot text cannot be sent to a remote Ollama server by configuration.&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;The React/Tauri UI lives in &lt;code&gt;desktop/&lt;/code&gt;; Python is packaged only as the processing sidecar.&lt;/p&gt;

&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cd desktop
npm ci&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/guptapiyush16/ScreenStash" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The codebase is 100% open-source under the MIT license, structured into:&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;desktop/&lt;/code&gt;: Tauri 2 desktop shell, React 19, TypeScript, and custom CSS design system.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;desktop/src/aiFilter.ts&lt;/code&gt;: Dual-tier semantic intent engine and Ollama JSON inference client.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;desktop/src/Calendar.tsx&lt;/code&gt;: Dynamic 7-day monthly calendar and temporal date extractor.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;desktop/src-tauri/&lt;/code&gt;: Rust backend implementing native IPC, asset protocols, file deletion, and OS shell commands.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;cloud_service/&lt;/code&gt;: FastAPI cloud runtime deployed on Render.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;code&gt;.github/workflows/&lt;/code&gt;: Automated GitHub Actions release pipeline building Windows MSI and NSIS packages.
&lt;/h2&gt;

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

&lt;p&gt;ScreenStash follows a privacy-first, layered architecture that transforms raw screenshots into searchable, actionable information.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Processing Pipeline
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;01 → Screenshot Capture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detects screenshots captured using &lt;code&gt;Win + Shift + S&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A background Watchdog daemon waits for file writes to finish.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;02 → Duplicate Detection&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Computes a &lt;code&gt;SHA-256&lt;/code&gt; hash to identify duplicate screenshots.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;03 → Text Extraction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;strong&gt;Tesseract OCR&lt;/strong&gt; to extract text from screenshot images locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;04 → AI Processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Extracted text is processed through a flexible, multi-tier AI pipeline:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;💻 Local AI&lt;/th&gt;
&lt;th&gt;☁️ Cloud AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemma 3:4b + Ollama&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Render + FastAPI&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runs inference locally using structured JSON output.&lt;/td&gt;
&lt;td&gt;Provides an alternative for users who opt for cloud processing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeps inference on-device.&lt;/td&gt;
&lt;td&gt;Uses the hosted cloud runtime.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;05 → Local Data Storage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stores structured metadata in a local &lt;strong&gt;SQLite&lt;/strong&gt; database.&lt;/li&gt;
&lt;li&gt;Keeps extracted titles, summaries, tasks, and dates organized.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;06 → Desktop Experience&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Powered by &lt;strong&gt;Tauri 2 + React&lt;/strong&gt;, ScreenStash turns processed screenshots into an interactive workspace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📅 &lt;strong&gt;Monthly Calendar&lt;/strong&gt; — Browse screenshots and extracted events by date.&lt;/li&gt;
&lt;li&gt;✨ &lt;strong&gt;Semantic Search&lt;/strong&gt; — Find relevant screenshots using natural-language queries, with sub-2 ms intent matching.&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;Image Previews&lt;/strong&gt; — View screenshot content through native asset protocols.&lt;/li&gt;
&lt;li&gt;🔔 &lt;strong&gt;Desktop Notifications&lt;/strong&gt; — Receive native OS toast alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Extracted text is processed through a flexible, multi-tier AI pipeline:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local Neural Inference with Google's Gemma 3
&lt;/h3&gt;

&lt;p&gt;We chose &lt;strong&gt;Gemma 3:4b&lt;/strong&gt; as our flagship on-device model. Using Ollama's structured JSON format, we pass the OCR extracted text into Gemma with strict schema constraints to reliably extract:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Title &amp;amp; one-sentence summary&lt;/li&gt;
&lt;li&gt;Extracted categories (&lt;code&gt;Task&lt;/code&gt;, &lt;code&gt;Event&lt;/code&gt;, &lt;code&gt;Receipt&lt;/code&gt;, &lt;code&gt;Reference&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Currency amounts (for expense tracking)&lt;/li&gt;
&lt;li&gt;Actionable todo checklists&lt;/li&gt;
&lt;li&gt;Explicit dates and relative temporal indicators
Because Gemma 3 is open-weight and runs locally, sensitive documents (bank statements, internal code snippets, credentials) &lt;strong&gt;never leave the user's computer&lt;/strong&gt;.
### 2. Dual-Tier AI Filtering Pipeline
Running an LLM on every keystroke in a desktop search bar causes intolerable latency (300ms–1500ms) and token exhaustion. We solved this with a hybrid architecture:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 (Instant &amp;lt;2ms)&lt;/strong&gt;: Real-time on-device semantic intent engine evaluating token n-grams and synonym clusters (&lt;code&gt;meeting&lt;/code&gt;, &lt;code&gt;expense&lt;/code&gt;, &lt;code&gt;urgent&lt;/code&gt;, &lt;code&gt;task&lt;/code&gt;, &lt;code&gt;doc&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 (Deep Neural LLM)&lt;/strong&gt;: On demand (pressing Enter or clicking &lt;code&gt;✦ AI Filter&lt;/code&gt;), queries local Ollama or Render Cloud with candidate items in strict JSON mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Collections&lt;/strong&gt;: &lt;em&gt;"Needs attention"&lt;/em&gt; uses &lt;code&gt;evaluateNeedsAttention()&lt;/code&gt; to score urgency tokens (&lt;em&gt;"deadline"&lt;/em&gt;, &lt;em&gt;"reschedule"&lt;/em&gt;, &lt;em&gt;"conflict"&lt;/em&gt;) and pending tasks; &lt;em&gt;"Saved for later"&lt;/em&gt; uses &lt;code&gt;evaluateSavedForLater()&lt;/code&gt; to detect reference documentation and expense archives.
### 3. Native Desktop WebView via Tauri 2 &amp;amp; Rust
Rather than packaging a bloated 250MB Electron binary, ScreenStash is built on Tauri 2:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Binary size&lt;/strong&gt;: &amp;lt;15MB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM usage&lt;/strong&gt;: &amp;lt;60MB idle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Local Media&lt;/strong&gt;: Custom asset protocols (&lt;code&gt;convertFileSrc&lt;/code&gt;) safely bridge local filesystem images into the webview without CSP violations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;Native OS Explorer&lt;/strong&gt;: Rust commands invoke &lt;code&gt;explorer.exe /select, &amp;lt;path&amp;gt;&lt;/code&gt; to reveal the exact file in Windows Explorer with a single click.
&lt;/h2&gt;

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

&lt;p&gt;Screenshots are among the most intimate and sensitive data artifacts on any computer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They contain API keys copied from dashboards.&lt;/li&gt;
&lt;li&gt;Financial receipts and credit card charges.&lt;/li&gt;
&lt;li&gt;Private Slack discussions, medical notes, and family flight tickets.
If ScreenStash were built as a closed-source, proprietary SaaS tool requiring all images to be uploaded to a remote server, &lt;strong&gt;nobody conscious of privacy could responsibly use it&lt;/strong&gt;.
Open innovation—powered by open-weight models like &lt;strong&gt;Google's Gemma&lt;/strong&gt;, open desktop frameworks like &lt;strong&gt;Tauri&lt;/strong&gt;, and open-source models—makes a completely local, sovereign personal assistant possible:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verifiable Privacy&lt;/strong&gt;: Anyone can inspect our code to verify that screenshots remain on their device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Independence&lt;/strong&gt;: The software works on an airplane or off the grid without an internet connection.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;No Vendor Lock-in&lt;/strong&gt;: If a proprietary cloud API changes pricing or shuts down, your desktop tool continues working forever with local models.
&lt;/h2&gt;

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

&lt;p&gt;ScreenStash was designed, implemented, refactored, and tested with iterative pair-programming assistance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documented architectural choices in &lt;strong&gt;&lt;code&gt;Decisions.mc&lt;/code&gt;&lt;/strong&gt; (logging 44+ technical decisions with rationales).&lt;/li&gt;
&lt;li&gt;Traced execution flows in &lt;strong&gt;&lt;code&gt;Flow.md&lt;/code&gt;&lt;/strong&gt; across 27 distinct architectural phases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Maintained a production-grade &lt;strong&gt;&lt;code&gt;tech.md&lt;/code&gt;&lt;/strong&gt; technical interview question &amp;amp; answer guide covering desktop sandboxing, concurrency, and semantic retrieval.
&lt;/h2&gt;

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

&lt;p&gt;Before ScreenStash:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spending 15 minutes scrolling through hundreds of chaotic screenshots trying to find that one meeting link or flight confirmation number.&lt;/li&gt;
&lt;li&gt;Forgetting to submit an expense report because the receipt screenshot was buried in &lt;code&gt;Downloads&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Missing follow-ups because task notes taken during a video call were captured in an image and forgotten.
With ScreenStash:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;0 manual sorting effort&lt;/strong&gt;: You take a screenshot, and seconds later it's categorized, parsed into action items, and placed on your calendar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant semantic recall&lt;/strong&gt;: Typing &lt;em&gt;"lunch with Alex"&lt;/em&gt; or &lt;em&gt;"zoom link"&lt;/em&gt; immediately surfaces the exact screenshot even if the word wasn't in the filename.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;One-click action&lt;/strong&gt;: Copy OCR text or launch the file directly in Windows Explorer without hunting through folders.
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  Featured Categories:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; ($200)

&lt;ul&gt;
&lt;li&gt;ScreenStash uses &lt;strong&gt;Render&lt;/strong&gt; as its production cloud AI runtime:

&lt;ul&gt;
&lt;li&gt;Hosts the &lt;strong&gt;ScreenStash Cloud API&lt;/strong&gt; (&lt;code&gt;https://screenstash-cloudapi.onrender.com&lt;/code&gt;), a containerized FastAPI service with health checking, CORS management, and fallback execution.&lt;/li&gt;
&lt;li&gt;Serves as the opt-in vision and inference gateway for users on resource-constrained devices who want instant AI processing without local GPU requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; ($200)

&lt;ul&gt;
&lt;li&gt;ScreenStash uses &lt;strong&gt;Gemma&lt;/strong&gt;, Google's open-weight model:

&lt;ul&gt;
&lt;li&gt;Leverages &lt;strong&gt;Gemma 3:4b&lt;/strong&gt; via Ollama as the flagship on-device neural engine.&lt;/li&gt;
&lt;li&gt;Executes structured JSON schema extraction (&lt;code&gt;/api/generate&lt;/code&gt;) locally, parsing raw OCR screenshots into structured titles, summaries, todo checklists, and calendar dates with zero telemetry.
### Partner Categories:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot &amp;amp; GitHub Actions&lt;/strong&gt; ($100)

&lt;ul&gt;
&lt;li&gt;Automated multi-platform desktop release pipeline (&lt;code&gt;.github/workflows/desktop-release.yml&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  - Automatically builds Tauri 2 Windows MSI packages, NSIS standalone installers, and draft GitHub Releases triggered on semantic git tags (&lt;code&gt;v*&lt;/code&gt;).
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Built with passion for Hacktoberfest 2026. Try it out, star the repo, and stop letting your screenshots go to waste!&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>openai</category>
    </item>
    <item>
      <title>EchoDesk — Turn Google Reviews into Revenue &amp; Operational Fixes for Local Businesses</title>
      <dc:creator>Piyush Gupta</dc:creator>
      <pubDate>Sat, 17 Oct 2026 14:23:36 +0000</pubDate>
      <link>https://dev.to/knight0916/echodesk-turn-google-reviews-into-revenue-operational-fixes-for-local-businesses-51nm</link>
      <guid>https://dev.to/knight0916/echodesk-turn-google-reviews-into-revenue-operational-fixes-for-local-businesses-51nm</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;Most small business owners—cafe operators, dentists, salon owners, boutique retail managers—live in dread of their Google Maps notifications.&lt;/p&gt;

&lt;p&gt;A single 2-star review about slow service can ruin their morning. Meanwhile, enterprise reputation management software like Birdeye or Yext costs &lt;strong&gt;$200 to $500 per month&lt;/strong&gt;, locks them into punitive annual contracts, and overwhelms them with corporate jargon. Independent business owners don't need a bloated CRM; they need answers to two simple questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;"What is actually breaking on my floor or in my kitchen during rush hour?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"How do I draft an empathetic, professional reply to this customer in 10 seconds without sounding like a robotic bot?"&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;EchoDesk&lt;/strong&gt; is an open-source, privacy-first review intelligence audit tool and micro-SaaS side hustle built specifically for independent storefronts.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ The Core Loop:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;🔗 1-Click Live Google Maps Extraction (Powered by SerpApi):&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Paste any Google Maps URL or enter a business name (e.g. &lt;em&gt;Blue Tokai Coffee&lt;/em&gt;, &lt;em&gt;Benne Cyberhub&lt;/em&gt;). EchoDesk connects directly to Google's live review graph, fetching customer reviews, star ratings, reviewer metadata, and timestamps without requiring cumbersome Google Business Profile OAuth verification.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;🧠 AI Sentiment &amp;amp; Operational Bottleneck Clustering:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Instead of just showing average stars, the open-weight AI engine categorizes reviews into operational themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⏳ &lt;strong&gt;Peak-Hour Waiting Delays&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🤝 &lt;strong&gt;Staff Hospitality &amp;amp; Service&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🍽️ &lt;strong&gt;Menu Consistency &amp;amp; Quality&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✨ &lt;strong&gt;Ambiance &amp;amp; Cleanliness&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Value &amp;amp; Pricing Perception&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;✍️ Brand-Voice AI Reply Assistant:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Drafts thoughtful, context-aware replies tailored to individual customer experiences in three distinct brand tones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Warm &amp;amp; Professional&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Short &amp;amp; Friendly&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Apologetic &amp;amp; Service-Focused&lt;/em&gt;
Replies never hallucinate fake discounts or contact info, address customers by name, and are copy-ready in one click.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;📋 Interactive Operational Action Checklist:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Translates recurring customer complaints into concrete business fixes (e.g., &lt;em&gt;"Prep secondary line between 7–9 PM to reduce pickup delays"&lt;/em&gt;). Operators can click &lt;strong&gt;"Add Action"&lt;/strong&gt;, manage a live interactive checklist, and export it as a CSV for floor managers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;💰 "Fake Door" Demand Validation &amp;amp; Waitlist Engine:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
To prove commercial demand before building complex billing infrastructure, EchoDesk features a high-converting &lt;strong&gt;Pro Waitlist Modal&lt;/strong&gt; ("50% off lifetime access") connected to a real-time &lt;strong&gt;Owner Analytics Demand Tracker&lt;/strong&gt; that logs interested business owners and exports the waitlist to CSV.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web App (Hosted on Render):&lt;/strong&gt; &lt;a href="https://echodesk-6qd3.onrender.com" rel="noopener noreferrer"&gt;https://echodesk-6qd3.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;API Health Endpoint:&lt;/strong&gt; &lt;a href="https://echodesk-6qd3.onrender.com/api/health" rel="noopener noreferrer"&gt;https://echodesk-6qd3.onrender.com/api/health&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Instant Test Mode:&lt;/strong&gt; If you don't have a live Google Maps link on hand, click &lt;strong&gt;"Take a Benchmark Business for a spin"&lt;/strong&gt; on the dashboard to immediately analyze 48 realistic customer reviews across dining, wait times, and hospitality.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;EchoDesk is 100% open-source under the MIT license:&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/guptapiyush16" rel="noopener noreferrer"&gt;
        guptapiyush16
      &lt;/a&gt; / &lt;a href="https://github.com/guptapiyush16/EchoDesk" rel="noopener noreferrer"&gt;
        EchoDesk
      &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;EchoDesk — Online Review Intelligence &amp;amp; Operational Fixes ⚡&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Turn customer reviews into revenue, brand loyalty, and operational decisions.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;A fast, privacy-first, one-time online audit tool and micro-SaaS for local businesses.&lt;/em&gt;&lt;br&gt;
Built for &lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://reactjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f36ae3009ff890d9457f56eede37c6d00e6f169097fc9c1298c911f7a6379f6c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3631444146422e7376673f7374796c653d666c6174266c6f676f3d7265616374" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ae3bd8f5e4fa69e2aaddfe09fb526b558e156d48d8fed7c5933e2d42df9cf8a0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e362d3331373843362e7376673f7374796c653d666c6174266c6f676f3d74797065736372697074" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/745b666be100299ec2b1baa24b56ac6830270626441be0a265a43485122e3ef3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d362e342d3634364346462e7376673f7374796c653d666c6174266c6f676f3d76697465" alt="Vite"&gt;&lt;/a&gt;
&lt;a href="https://render.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/eecd9974789ec5c1c8ef74ba7aee7889ac82c7a47913f2d85fbe52b4070208c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656e6465722d486f737465642532304c6976652d3436453342372e7376673f7374796c653d666c6174266c6f676f3d72656e646572" alt="Render"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5edd9e5fe07b073bd597deb9b3c399f3952f82e40bd7aa4ba271c4abb0411e77/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f6f676c6525323041492d47656d6d6125323025323625323047656d696e692d3845373542322e7376673f7374796c653d666c6174266c6f676f3d676f6f676c65" alt="Google AI"&gt;&lt;/a&gt;
&lt;a href="https://serpapi.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8b3cbff7ca97d5a7eeb6dd8f33de53f4b0048df6961784cbaae6050157a0f5d3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c69766525323045787472616374696f6e2d536572704150492d3030414136432e7376673f7374796c653d666c6174" alt="SerpAPI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/EchoDesk/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 The Problem &amp;amp; The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Independent storefront owners—cafe operators, dentists, salon owners, boutique retail managers—live in dread of their Google Maps notifications. A single 2-star review about slow service can ruin their morning.&lt;/p&gt;
&lt;p&gt;Meanwhile, enterprise reputation management software like Birdeye or Yext charges &lt;strong&gt;$200 to $500 per month&lt;/strong&gt;, locks owners into annual contracts, and buries them in corporate jargon. Small business owners don't need a bloated CRM; they need answers to two simple questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;"What is actually breaking on my floor or in my kitchen during rush hour?"&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"How do I draft an empathetic, professional reply to this customer in 10 seconds without sounding like a&lt;/strong&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/guptapiyush16/EchoDesk" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;h3&gt;
  
  
  Quickstart (Run Locally in 60 seconds):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the repository&lt;/span&gt;
git clone https://github.com/guptapiyush16/EchoDesk.git
&lt;span class="nb"&gt;cd &lt;/span&gt;EchoDesk

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

&lt;span class="c"&gt;# Start backend server &amp;amp; frontend dev server&lt;/span&gt;
npm start
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;EchoDesk combines lightweight open-weight AI architectures, resilient live web data extraction, and serverless-friendly cloud hosting:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🔍 Live Review Extraction via SerpApi
&lt;/h3&gt;

&lt;p&gt;Extracting reviews from modern Google Maps single-page apps is notoriously brittle with headless scrapers. EchoDesk integrates &lt;strong&gt;SerpApi's Google Maps Reviews Engine&lt;/strong&gt; via a protected Node.js backend proxy (&lt;code&gt;server/server.mjs&lt;/code&gt;). It sanitizes input queries, fetches real-time customer comments with high fidelity, and formats review snippets, ratings, and dates into normalized JSON.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 🤖 Open-Weight AI Intelligence (Gemma &amp;amp; Google AI)
&lt;/h3&gt;

&lt;p&gt;The AI pipeline handles two heavy operational workloads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Shot Root-Cause Extraction:&lt;/strong&gt; Parses batches of raw reviews into fine-grained sentiment distributions and pinpointed operational problems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand Voice Synthesis:&lt;/strong&gt; Uses structured system prompts to generate human-grade, tone-matched review responses under 120 words without generic platitudes or robotic phrasing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. ☁️ Production Runtime on Render
&lt;/h3&gt;

&lt;p&gt;Render powers the entire production lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured via Infrastructure-as-Code with &lt;a href="https://github.com/guptapiyush16/EchoDesk/blob/main/render.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;render.yaml&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A unified Node.js / Express service serves the compiled React 18 / Vite client bundle, hosts the secure authenticated REST API proxy, manages session security, and executes health monitoring.&lt;/li&gt;
&lt;li&gt;Zero-downtime continuous deployment connected directly to the GitHub &lt;code&gt;main&lt;/code&gt; branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. 📊 Demand Validation &amp;amp; Data Persistence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Lock-in Local Storage:&lt;/strong&gt; Client-side caching preserves business profiles and action items across tab refreshes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON Waitlist Engine:&lt;/strong&gt; Saves prospective customer leads securely into &lt;code&gt;data/waitlist.json&lt;/code&gt; on the server, complete with deduplication, timestamping, and instant CSV export for marketing outreach.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;For an indie developer building a sustainable side hustle, open innovation is the difference between an unviable money pit and a profitable micro-SaaS:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vastly Superior Unit Economics:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Closed enterprise reputation platforms charge hundreds of dollars per seat because they carry immense operational overhead. By building on lightweight, cost-effective models and open web standards, EchoDesk's cost per audit is fractions of a cent. This allows us to offer independent neighborhood cafes a free audit and a paid tier starting at just &lt;strong&gt;₹299/month ($3.50/mo)&lt;/strong&gt; while maintaining 90%+ gross margins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Privacy for Local Businesses:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Small business owners are rightfully cautious about sharing internal feedback and customer identities with closed, data-harvesting ad networks. EchoDesk's modular architecture processes customer reviews securely through private proxies with zero retention of customer PII on third-party tracking databases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No Vendor Lock-in or Arbitrary API Hikes:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Relying entirely on a proprietary end-to-end platform leaves a founder vulnerable to overnight pricing changes or sudden terms-of-service bans. Open innovation allows EchoDesk to swap model weights, transition from cloud-hosted inference to local on-premise models, and customize prompts to match hyper-specific local industries.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;EchoDesk was developed, architected, and refactored using &lt;strong&gt;GitHub Copilot's CLI&lt;/strong&gt; and agentic coding workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scaffolding the React 18 / TypeScript / Vite frontend with custom CSS tokens.&lt;/li&gt;
&lt;li&gt;Structuring the resilient SerpApi proxy to parse Google Maps place queries and pagination.&lt;/li&gt;
&lt;li&gt;Authoring the declarative &lt;code&gt;render.yaml&lt;/code&gt; specification for zero-configuration cloud deployments.&lt;/li&gt;
&lt;li&gt;Implementing the "Fake Door" Pro waitlist modal with server-side validation and CSV export utilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All iterative development steps and architectural refactors are documented transparently in the &lt;a href="https://github.com/guptapiyush16/EchoDesk/commits/main" rel="noopener noreferrer"&gt;GitHub commit history&lt;/a&gt;.&lt;/p&gt;




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

&lt;p&gt;To test if real business owners would actually pay for this, I shared EchoDesk with the owner of a busy local specialty bakery and espresso bar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What they did:&lt;/strong&gt; Pasted their Google Maps listing into EchoDesk and ran an instant audit on 35 recent reviews.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Aha!" moment:&lt;/strong&gt; The dashboard immediately flagged:
&lt;em&gt;⚠️ Waiting Time &amp;amp; Delays: 32% of 2-star and 3-star reviews mentioned long morning queues during the 8:30 AM–10:00 AM rush.&lt;/em&gt;
The owner remarked:
&amp;gt; &lt;em&gt;"I knew we were slammed in the morning, but I didn't realize customers were specifically complaining about the toast-warming delay at the counter. The AI pointed out the exact line bottleneck in 5 seconds."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Response:&lt;/strong&gt; In less than 3 minutes, they used the AI Reply Assistant to draft and copy personalized replies to 8 pending reviews that had been sitting unanswered for weeks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commercial Validation:&lt;/strong&gt; When they hit the 50-review limit and saw the &lt;strong&gt;"Upgrade to Pro — 50% Off Lifetime Access"&lt;/strong&gt; modal, they immediately entered their business email to claim early founder pricing. That real signup proved demand on day one!&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  🌟 Featured Categories:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200 USD):&lt;/strong&gt; Render acts as our end-to-end production runtime. Configured via &lt;code&gt;render.yaml&lt;/code&gt;, it hosts the Node.js API, serves the optimized Vite SPA bundle, manages environment security, and handles continuous deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200 USD):&lt;/strong&gt; Powered by Google's open-weight AI models via Google AI Studio for review sentiment scoring, operational theme classification, and tone-matched customer reply synthesis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤝 Partner Categories:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of SerpApi ($100 USD):&lt;/strong&gt; SerpApi's Google Maps Reviews API is the core data ingestion engine of EchoDesk, allowing business owners to pull live reviews, star ratings, and location metadata directly from a public URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot ($100 USD):&lt;/strong&gt; Developed and iterated using GitHub Copilot's coding agent and terminal tools to architect API bridges, build custom UI tokens, and write the CSV streaming pipeline.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Turn complaints into operational fixes, protect your brand, and turn customer reviews into your biggest growth engine!&lt;/em&gt; ⚡📈&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>serpapi</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WildDex - The Real-World Field Guide &amp; IRL Pokédex Powered by Render</title>
      <dc:creator>Piyush Gupta</dc:creator>
      <pubDate>Thu, 08 Oct 2026 07:33:00 +0000</pubDate>
      <link>https://dev.to/knight0916/hacktoberfest-week-1-wilddex-the-real-world-field-guide-irl-pokedex-powered-by-render-2ofe</link>
      <guid>https://dev.to/knight0916/hacktoberfest-week-1-wilddex-the-real-world-field-guide-irl-pokedex-powered-by-render-2ofe</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 apps are engineered to maximize your screen time. Endless feeds, streaks, and engagement hooks keep you indoors, eyes glued to a display.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WildDex&lt;/strong&gt; does the exact opposite. It is an installable, mobile-first Progressive Web App (PWA) with a single mission:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The AI isn’t trying to keep you on the screen. It gives you a reason to put the phone down and touch grass."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🌿 The Core Loop:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;🎮 Daily Quests (Quest Master):&lt;/strong&gt; Every morning, the AI &lt;strong&gt;Quest Master&lt;/strong&gt; analyzes your local city, interests (trees, birds, insects, flowers, domestic animals, minerals), and time budget (15, 30, or 60 min) to generate 3 safe outdoor quests:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;📸 Scan&lt;/code&gt;: Find and photograph a specific specimen you haven't seen today.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;👣 Walk&lt;/code&gt;: Take a 1.0 km walk with live HTML5 GPS distance tracking.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;👀 Observe&lt;/code&gt;: Notice a subtle detail or seasonal shift in your neighbourhood.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📸 AI Discovery Scanner:&lt;/strong&gt; When you spot something intriguing outside (a plant, bird, insect, mushroom, rock, or animal), open the camera viewfinder. The multimodal vision model analyzes the photo, providing an honest confidence rating (e.g., &lt;em&gt;Golden Retriever 99%&lt;/em&gt; or &lt;em&gt;Indian Banyan 91%&lt;/em&gt;), native habitat details, and natural history field facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📖 Your Real-World Pokédex:&lt;/strong&gt; Every unique species is deduplicated and permanently cataloged. Photographing familiar species rewards bonus XP for revisiting local nature (&lt;code&gt;Already discovered! 🌳 +5 XP&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⭐ Level Up in Real Life:&lt;/strong&gt; Complete quests and document real-world biodiversity to earn XP, level up your explorer rank (from &lt;em&gt;Junior Scout&lt;/em&gt; to &lt;em&gt;Apex Trailblazer&lt;/em&gt;), and build consecutive daily outdoor streaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🗺️ Trail Log &amp;amp; Adventure Map:&lt;/strong&gt; Tracks distance walked, active minutes, and plots your sightings on a live radar breadcrumb trail.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;WildDex is built for everyday walkers, nature lovers, families, and anyone needing a playful RPG reason to step outside and explore.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web App (Hosted on Render):&lt;/strong&gt; &lt;a href="https://sidequest-0kzp.onrender.com" rel="noopener noreferrer"&gt;https://sidequest-0kzp.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Mobile PWA Ready:&lt;/strong&gt; Open the link in iOS Safari or Android Chrome, select &lt;strong&gt;"Add to Home Screen"&lt;/strong&gt;, and WildDex launches as an installable standalone app with offline service worker caching.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;WildDex is 100% open-source under the MIT license:&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/guptapiyush16" rel="noopener noreferrer"&gt;
        guptapiyush16
      &lt;/a&gt; / &lt;a href="https://github.com/guptapiyush16/SideQuest" rel="noopener noreferrer"&gt;
        SideQuest
      &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;WildDex — Production PWA&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Core Loop:&lt;/strong&gt; Go outside → get a quest → do something → discover something → collect it → earn XP.&lt;br&gt;
&lt;em&gt;"The AI isn’t trying to keep you on the screen. It gives you a reason to put the phone down."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The repository contains one canonical app: the browser PWA in &lt;code&gt;index.html&lt;/code&gt;, &lt;code&gt;styles.css&lt;/code&gt;, &lt;code&gt;js/&lt;/code&gt;, &lt;code&gt;assets/&lt;/code&gt;, and the Node/Express API in &lt;code&gt;server.js&lt;/code&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📱 How to Run &amp;amp; Install as a Mobile PWA&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Run Locally&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;The app is currently running on &lt;strong&gt;&lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/strong&gt;.&lt;br&gt;
To restart the server at any time:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install
npm start&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The server loads local development values from &lt;code&gt;atlas-credentials.env&lt;/code&gt;. Keep that file private. For Render, configure the same variables in the service environment.&lt;/p&gt;
&lt;p&gt;The PWA and API run from the same origin. Atlas stores accounts, progress, and GridFS photo files behind authenticated API routes.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Managed AI deployment&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Configure &lt;code&gt;OPEN_ROUTER_APIKEY&lt;/code&gt;…&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/guptapiyush16/SideQuest" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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




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

&lt;p&gt;WildDex combines a modern local-first PWA, a resilient dual-provider AI pipeline, and production cloud infrastructure:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🤖 Resilient Multimodal AI Architecture
&lt;/h3&gt;

&lt;p&gt;WildDex powers its core experience through two dedicated server-side AI engines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🎮 Quest Master Engine:&lt;/strong&gt; Dynamically constructs structured, context-aware quests strictly bounded by safety guidelines (public parks, no trespassing, realistic walking targets).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📸 Field Guide Vision Scanner:&lt;/strong&gt; Multimodal AI model that classifies camera photos with honest uncertainty estimation. It outputs ranked candidate distributions, confidence scores, and natural history facts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual-Provider Resilience:&lt;/strong&gt; Implemented a zero-downtime failover pipeline in Node.js (&lt;code&gt;api/ai.js&lt;/code&gt;). If primary requests encounter high-demand spikes or rate limits, the runtime automatically fails over within seconds so mobile users are never left hanging on a trail.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. ⚡ Production Runtime on Render
&lt;/h3&gt;

&lt;p&gt;Render powers the entire production lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A unified Node.js / Express web service declared via infrastructure-as-code in &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Serves the installable PWA frontend, runs the authenticated REST API, and hosts the server-side AI proxy so API secrets are never exposed in browser bundles.&lt;/li&gt;
&lt;li&gt;Automatic continuous deployment connected directly to GitHub &lt;code&gt;main&lt;/code&gt; with health check monitoring at &lt;code&gt;/api/health&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. 🍃 Data &amp;amp; Media Layer on MongoDB Atlas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User Accounts &amp;amp; Progression:&lt;/strong&gt; Managed with secure JWT authentication and bcrypt password hashing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pokédex &amp;amp; Quest Sync:&lt;/strong&gt; Stores unique species entries, duplicate sighting counts, and GPS coordinates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB GridFS Bucket (&lt;code&gt;photos&lt;/code&gt;):&lt;/strong&gt; Captured field photos are compressed client-side (HTML5 Canvas down to 1200px at ~200KB) and streamed into MongoDB GridFS binary storage, linked directly to the user's discovery record.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. 💻 Engineered with GitHub Copilot
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Leveraged the &lt;strong&gt;GitHub Copilot coding agent&lt;/strong&gt; and CLI in the terminal to scaffold PWA manifest configurations, architect the GridFS upload pipeline, and optimize client-side image compression routines.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;When technology is open and accessible, it empowers people to engage with the physical world instead of remaining trapped in walled gardens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open Web Standards Over App Store Walled Gardens:&lt;/strong&gt; Built as an open Progressive Web App (PWA) using HTML5, Vanilla CSS, and Service Workers. Anyone on iOS or Android can install it immediately without app store gatekeepers, fees, or downloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible Outdoor Education:&lt;/strong&gt; Nature education should be available to everyone—students, park visitors, and community naturalists. Open innovation makes it possible to build lightweight, low-latency tools that work smoothly on budget devices and spotty mobile networks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent Science &amp;amp; Honest AI:&lt;/strong&gt; Rather than pretending to be 100% omniscient, our open prompts demand transparent confidence distributions and field notes, encouraging explorers to verify observations and stay curious.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This application was developed and iterated using &lt;strong&gt;GitHub Copilot's coding agent&lt;/strong&gt; and terminal workflow. Copilot was used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write and validate the &lt;code&gt;render.yaml&lt;/code&gt; infrastructure-as-code specification.&lt;/li&gt;
&lt;li&gt;Construct the client-side canvas compression pipeline to ensure fast, reliable mobile photo uploads.&lt;/li&gt;
&lt;li&gt;Refactor the server-side AI failover proxy and MongoDB GridFS image streaming handlers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Session commits and architectural iterations are documented in the &lt;a href="https://github.com/guptapiyush16/SideQuest/commits/main" rel="noopener noreferrer"&gt;commit history of the GitHub repository&lt;/a&gt;).&lt;/em&gt;&lt;/p&gt;




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

&lt;h3&gt;
  
  
  🌟 Featured Categories:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200 USD):&lt;/strong&gt; Render serves as our complete production runtime. Declared via &lt;code&gt;render.yaml&lt;/code&gt;, it hosts the Node.js/Express service, serves the mobile PWA frontend, runs the secure AI runtime proxy, and automates zero-downtime GitHub deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤝 Partner Categories:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas ($100 USD):&lt;/strong&gt; MongoDB Atlas powers the persistent database layer—handling user authentication, Pokédex collections, XP progression, and storing captured discovery photos via a dedicated &lt;strong&gt;MongoDB GridFS Bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot ($100 USD):&lt;/strong&gt; Developed using the GitHub Copilot CLI and coding agent, accelerating infrastructure setup, PWA offline caching, and full-stack API integration.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Go outside, take a walk, look closer at the world around you, and start filling your WildDex! 🌿🎒&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>mongodb</category>
      <category>backend</category>
    </item>
    <item>
      <title>Deadline Buddy — The Open-Source Scholarship Compass That Explains Every Match (Built for a Friend)</title>
      <dc:creator>Piyush Gupta</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:54:19 +0000</pubDate>
      <link>https://dev.to/knight0916/deadline-buddy-the-open-source-scholarship-compass-that-explains-every-match-built-for-a-friend-1dh7</link>
      <guid>https://dev.to/knight0916/deadline-buddy-the-open-source-scholarship-compass-that-explains-every-match-built-for-a-friend-1dh7</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;h3&gt;
  
  
  The Story: Building for a Friend Under a Mountain of PDFs
&lt;/h3&gt;

&lt;p&gt;My close friend is a 3rd-year Computer Science undergraduate at NIT Karnataka, Surathkal in India. Like thousands of ambitious students around the world, their dream is to pursue a Master's degree abroad in AI and Distributed Systems.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I watched them spend an entire weekend buried under a mountain of open browser tabs: &lt;strong&gt;DAAD&lt;/strong&gt; in Germany, &lt;strong&gt;EduCanada&lt;/strong&gt;, &lt;strong&gt;Fulbright&lt;/strong&gt; in the US, and &lt;strong&gt;Chevening&lt;/strong&gt; and &lt;strong&gt;Commonwealth&lt;/strong&gt; in the UK. Each scholarship program had 40- to 80-page PDF guidelines filled with dense institutional jargon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Does a 4-year Indian B.Tech degree count as final-year standing right now?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Does an 8.4 / 10 CGPA meet the 'first-class honours or 2:1 equivalent' threshold?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Does a national hackathon finalist certificate satisfy 'demonstrated community leadership'?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Existing scholarship portals were useless: they either acted as clickbait lead-generation farms or slapped an opaque &lt;em&gt;"87% Match"&lt;/em&gt; badge on a card without explaining &lt;strong&gt;why&lt;/strong&gt; they qualified. The alternative—spending 20 hours drafting an essay only to be rejected over a technical disqualifier buried on page 52—was heartbreaking.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Deadline Buddy&lt;/strong&gt; for my friend.&lt;/p&gt;

&lt;h2&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%2F7ao466ovu8bz7zvf6wlc.png" alt=" " width="800" height="367"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Deadline Buddy Does
&lt;/h3&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%2F4xhk9f669nfjvgn0mn34.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%2F4xhk9f669nfjvgn0mn34.png" alt=" " width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deadline Buddy turns scholarship discovery into a transparent, stress-free 5-step loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;📄 Zero-Friction Document Intake:&lt;/strong&gt; Drop in unofficial transcripts, resumes, or certificates (PDF, DOCX, TXT) or click the 1-click sample button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;👤 Structured Profile Extraction:&lt;/strong&gt; The system extracts key attributes (GPA, current year of study, degree, graduation year, skills, achievements) into an editable profile with supporting document quotes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌍 Destination Personalization:&lt;/strong&gt; Pick a target country (USA, Canada, UK, Germany, Australia, Netherlands, Singapore, Japan), immediately contextualizing currencies, deadlines, and official guides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚖️ Deterministic Eligibility Matching:&lt;/strong&gt; Instead of letting an LLM guess eligibility, pure deterministic code evaluates published requirements against the profile, categorizing each award into &lt;strong&gt;Eligible (✓)&lt;/strong&gt;, &lt;strong&gt;Needs Verification (🟡)&lt;/strong&gt;, or &lt;strong&gt;Not Eligible (✕)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔍 The Signature "Why?" Evidence Drawer &amp;amp; AI Strategy Advisor:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Clicking any status badge reveals a side-by-side audit trail: the exact published clause, the student's extracted evidence, the source document quote, and a link to the official university portal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;⚡ Ask Open AI Strategy Advisor&lt;/code&gt;&lt;/strong&gt;: Generates a personalized gap plan with feasibility scoring and alternative scholarships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;🧪 Open AI Guideline Lab&lt;/code&gt;&lt;/strong&gt;: Paste raw institutional PDF announcements to test real-time guideline extraction.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⏳ Deadline-First Shortlist:&lt;/strong&gt; Saved opportunities are prioritized by nearest deadline so students never miss an application window.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Deployed Application:&lt;/strong&gt; &lt;a href="https://deadline-buddy-nine.vercel.app/" rel="noopener noreferrer"&gt;https://deadline-buddy-nine.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;1-Click Judge Walkthrough:&lt;/strong&gt; On the landing screen, click &lt;strong&gt;&lt;code&gt;⚡ Load Sample Student Documents (1-Click Demo)&lt;/code&gt;&lt;/strong&gt; to instantly populate a real-world academic profile and test the deterministic rules engine across 26 real scholarships!&lt;/li&gt;
&lt;/ul&gt;




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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/guptapiyush16" rel="noopener noreferrer"&gt;
        guptapiyush16
      &lt;/a&gt; / &lt;a href="https://github.com/guptapiyush16/Deadline-Buddy" rel="noopener noreferrer"&gt;
        Deadline-Buddy
      &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;🎓 Deadline Buddy — The Open-Source Scholarship Compass&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Find scholarships you're actually eligible for — without reading hundreds of PDF guidelines."&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;Hacktoberfest 2026 Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8946ab9e23d56aabb16c0e57e56030b30a3e847dabd2557a476cc91b99bf48b6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e362d626c75652e737667" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/00e3e223744f75b14c36b6cd6620a6cbbbb6fb98410cd390a0fadf0a38f3efef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631646166622e737667" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/42c029effeb438b26ae2aa5fcf923cc565fdb9ab38b0fd9cdd14db11ddbd69fd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d372e312d3634366366662e737667" alt="Vite"&gt;&lt;/a&gt;
&lt;a href="https://vitest.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3ce9414a8368319d4bdff224f69c8bba3858968bece69d2500a6dd04862c2b5b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d50617373696e672532302831312532463131292d627269676874677265656e2e737667" alt="Tests"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/Deadline-Buddy#zero-api-keys-guarantee" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4394f696336228f34f83bb2f2ba2195092207460b3f25d831a66f536ecc3c743/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4150492532304b6579732d5a65726f25323052657175697265642d737563636573732e737667" alt="Zero API Keys"&gt;&lt;/a&gt;
&lt;a href="https://github.com/guptapiyush16/Deadline-Buddy/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 The Story: Building for a Friend&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;My close friend is a 3rd-year Computer Science undergraduate at NIT Karnataka, Surathkal in India. Like thousands of ambitious students worldwide, their dream is to pursue a Master's degree abroad in AI and Distributed Systems.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I watched them spend an entire weekend buried under dozens of open browser tabs: &lt;strong&gt;DAAD&lt;/strong&gt; in Germany, &lt;strong&gt;EduCanada&lt;/strong&gt;, &lt;strong&gt;Fulbright&lt;/strong&gt; in the US, &lt;strong&gt;Chevening&lt;/strong&gt; and &lt;strong&gt;Commonwealth&lt;/strong&gt; in the UK. Each scholarship program had 40- to 80-page PDF guidelines filled with dense institutional jargon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Does a 4-year Indian B.Tech degree count as final-year standing right now?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Does an 8.4 / 10 CGPA satisfy the 'first-class honours or 2:1 equivalent' threshold?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"Does a&lt;/em&gt;…&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/guptapiyush16/Deadline-Buddy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/guptapiyush16/Deadline-Buddy" rel="noopener noreferrer"&gt;https://github.com/guptapiyush16/Deadline-Buddy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech Stack:&lt;/strong&gt; React 19, TypeScript, Vite, Tailwind CSS, Vitest (11/11 passing tests), Client-side PDF/DOCX Parsing (&lt;code&gt;pdfjs-dist&lt;/code&gt; + &lt;code&gt;mammoth&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero API Keys Required:&lt;/strong&gt; Runs 100% in-browser on client hardware with 0 external API dependencies.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  The Architecture: Open AI for Extraction, Code for Truth
&lt;/h3&gt;

&lt;p&gt;The single biggest engineering mistake in AI applications is letting a non-deterministic LLM make hidden decisions. If you ask an LLM: &lt;em&gt;"Does this student qualify for this scholarship?"&lt;/em&gt;, it will frequently hallucinate or give inconsistent answers.&lt;/p&gt;

&lt;p&gt;Deadline Buddy is built on a &lt;strong&gt;defensible, split-brain architecture&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Source AI / Open Weights:&lt;/strong&gt; Used where language models excel — extracting structured JSON from messy PDFs/transcripts and explaining complex mismatches in plain English.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic TypeScript Code:&lt;/strong&gt; Used where mathematics and logic belong — comparing GPA scales, academic years, and citizenship lists.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[ Uploaded Documents (Resume / Transcripts / Certificates) ]&lt;br&gt;
                               │&lt;br&gt;
                               ▼&lt;br&gt;
    ┌─────────────────────────────────────────────────────┐&lt;br&gt;
    │ Open-Weight Extractor / Local AST Document Pipeline │&lt;br&gt;
    └──────────────────────────┬──────────────────────────┘&lt;br&gt;
                               │ (Structured JSON Profile + Quotes)&lt;br&gt;
                               ▼&lt;br&gt;
    ┌─────────────────────────────────────────────────────┐&lt;br&gt;
    │           Deterministic Code Rules Engine           │&lt;br&gt;
    │               (shared/eligibility.ts)               │&lt;br&gt;
    │                                                     │&lt;br&gt;
    │  Requirement           Student Profile      Result  │&lt;br&gt;
    │  ─────────────────────────────────────────────────  │&lt;br&gt;
    │  Citizenship: India    India                  ✓     │&lt;br&gt;
    │  Min GPA ≥ 7.5         8.4 / 10               ✓     │&lt;br&gt;
    │  Final Year Standing   3rd year of 4          ✕     │&lt;br&gt;
    └──────────────────────────┬──────────────────────────┘&lt;br&gt;
                               │&lt;br&gt;
                               ▼&lt;br&gt;
    ┌─────────────────────────────────────────────────────┐&lt;br&gt;
    │        Three-State Explainable Evaluation           │&lt;br&gt;
    │  🟢 Eligible    🟡 Needs Verification    🔴 Ineligible&lt;br&gt;
    └──────────────────────────┬──────────────────────────┘&lt;br&gt;
                               │&lt;br&gt;
                               ▼&lt;br&gt;
    ┌─────────────────────────────────────────────────────┐&lt;br&gt;
    │      Interactive "Why?" Evidence Drawer &amp;amp; Shortlist  │&lt;br&gt;
    │      • Exact supporting quotes from your documents  │&lt;br&gt;
    │      • Open AI Strategy Advisor with gap workarounds│&lt;br&gt;
    └─────────────────────────────────────────────────────┘&lt;/p&gt;

&lt;h3&gt;
  
  
  The Three Eligibility States
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;🟢 Eligible:&lt;/strong&gt; Every checkable published requirement strictly passes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔴 Ineligible:&lt;/strong&gt; A hard rule failed (e.g. scholarship requires a completed Bachelor's degree, but the student is currently in year 3).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🟡 Needs Verification (The Crucial Third State):&lt;/strong&gt; The scholarship requires subjective criteria (like "community leadership") or university nomination that cannot be conclusively proven from the transcript. &lt;strong&gt;We refuse to guess or hallucinate an approval when proof is missing.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The GPA Uncertainty Band
&lt;/h3&gt;

&lt;p&gt;International GPA scale conversions vary across universities. Deadline Buddy enforces an explicit uncertainty threshold:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
typescript
const diff = studentGpaRatio - requiredGpaRatio;
if (diff &amp;gt;= GPA_UNCERTAINTY_BAND) return check(req, "pass", ...);
if (diff &amp;lt;= -GPA_UNCERTAINTY_BAND) return check(req, "fail", ...);
return check(req, "unknown", ...); // Refuse to guess borderline scores!

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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