<?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: Devansh</title>
    <description>The latest articles on DEV Community by Devansh (@devml08).</description>
    <link>https://dev.to/devml08</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%2F4156104%2Fb09dd75a-b820-454b-93fa-4bc594a21807.png</url>
      <title>DEV Community: Devansh</title>
      <link>https://dev.to/devml08</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devml08"/>
    <language>en</language>
    <item>
      <title>The Ghost That Moves Your Money: Making an RL Payment-Retry Agent Accountable</title>
      <dc:creator>Devansh</dc:creator>
      <pubDate>Wed, 28 Oct 2026 02:24:57 +0000</pubDate>
      <link>https://dev.to/devml08/the-ghost-that-moves-your-money-making-an-rl-payment-retry-agent-accountable-35fi</link>
      <guid>https://dev.to/devml08/the-ghost-that-moves-your-money-making-an-rl-payment-retry-agent-accountable-35fi</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;HRA-Pay&lt;/strong&gt; is a reinforcement learning system that decides what to do after a payment fails: retry or give up, &lt;em&gt;when&lt;/em&gt; to retry, and &lt;em&gt;on which rail&lt;/em&gt; (UPI, credit, debit, netbanking, wallet).&lt;/p&gt;

&lt;p&gt;Most retry systems use a supervised classifier that predicts a success probability. HRA-Pay treats the whole retry sequence as a Markov Decision Process. A branched Q-network learns a policy over timing and channel jointly, and a deterministic guardrail layer sits between that policy and any action that moves money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I read the theme:&lt;/strong&gt; every learned policy is a ghost in the machine, an opaque decision-maker acting on your money that nobody can fully inspect. This project is about making that ghost accountable. The learned policy proposes, a rule-based guard (not AI, on purpose) disposes, and an audit trail records both what the ghost &lt;em&gt;wanted&lt;/em&gt; to do and what it was &lt;em&gt;allowed&lt;/em&gt; to do. I'll admit this project wasn't built for this theme. But the question the theme asks, "what do we do about the thing acting inside the system that we can't fully see?", is one the project spends most of its design effort on.&lt;/p&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/23f3003672" rel="noopener noreferrer"&gt;
        23f3003672
      &lt;/a&gt; / &lt;a href="https://github.com/23f3003672/hra-pay" rel="noopener noreferrer"&gt;
        hra-pay
      &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;HRA-Pay&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Hierarchical reinforcement learning for payment retry optimisation, with LLM-calibrated reward shaping.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Razorpay Buildathon 2026 — Track 03, AI Revenue Recovery&lt;/p&gt;
&lt;p&gt;When a payment fails, a merchant faces a compound decision, not a single one
retry or give up, &lt;em&gt;when&lt;/em&gt; to retry, and &lt;em&gt;on which rail&lt;/em&gt;. Production retry systems
generally answer only the first two, with a supervised classifier that predicts a
success probability. HRA-Pay treats the whole retry sequence as a Markov Decision
Process and learns an explicit policy over &lt;strong&gt;timing and channel jointly&lt;/strong&gt; — with a
deterministic guardrail layer between the learned policy and any action that
moves money.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python -m venv .venv &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; .venv&lt;span class="pl-cce"&gt;\S&lt;/span&gt;cripts&lt;span class="pl-cce"&gt;\a&lt;/span&gt;ctivate     &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Windows&lt;/span&gt;
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -e &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;.[dev]&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

python tasks.py &lt;span class="pl-c1"&gt;test&lt;/span&gt;        &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 91 tests&lt;/span&gt;
python tasks.py &lt;span class="pl-c1"&gt;eval&lt;/span&gt;        &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; reproduces every number below&lt;/span&gt;
python tasks.py demo        &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; the dashboard&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;/div&gt;
&lt;p&gt;1,000 episodes per run…&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/23f3003672/hra-pay" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; .venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
pip &lt;span class="nb"&gt;install &lt;/span&gt;torch &lt;span class="nt"&gt;--index-url&lt;/span&gt; https://download.pytorch.org/whl/cpu
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[dev]"&lt;/span&gt;

python tasks.py &lt;span class="nb"&gt;test&lt;/span&gt;    &lt;span class="c"&gt;# 91 tests&lt;/span&gt;
python tasks.py &lt;span class="nb"&gt;eval&lt;/span&gt;    &lt;span class="c"&gt;# reproduces every number in the README&lt;/span&gt;
python tasks.py demo    &lt;span class="c"&gt;# the dashboard&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;Open-source stack:&lt;/strong&gt; PyTorch (CPU), Gymnasium, NumPy, and Streamlit. Both learned agents are trained from scratch locally, with no pretrained weights and no hosted inference.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decision policy:&lt;/strong&gt; a Branching Dueling Q-Network (Tavakoli et al., 2018) with three branches: macro action &lt;code&gt;{RETRY, SWITCH_CHANNEL, ABANDON}&lt;/code&gt;, timing &lt;code&gt;{NOW, +2h, +6h, +24h, +72h}&lt;/code&gt;, and channel. Output size grows additively (13 outputs vs 31 for a flat head). I compared it against a flat dueling DQN and two static baselines, all through one shared &lt;code&gt;Policy&lt;/code&gt; interface, runner, guard, and audit log.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reward calibration:&lt;/strong&gt; a language model reads each raw decline-reason string, and nothing else, and scores how much friction a retry carries. It runs &lt;strong&gt;once, offline&lt;/strong&gt;, and the output is cached in a committed &lt;code&gt;penalty_table.json&lt;/code&gt;. The numeric success probabilities never enter the prompt, and a test asserts it. The table refuses to load until a human reviews it, and the review overrode the model on three of the codes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails:&lt;/strong&gt; &lt;code&gt;PolicyGuard&lt;/code&gt; is deterministic. It hard-blocks &lt;code&gt;suspected_fraud&lt;/code&gt; (compliance), blocks futile retries, caps attempts, and escalates retries that come too soon. No Q-value can override it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment:&lt;/strong&gt; a seeded, synthetic simulator defined by fully commented YAML specs, plus a held-out spec that &lt;em&gt;inverts&lt;/em&gt; the relationships an agent is most likely to have learned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The language model used for calibration was Gemini (&lt;code&gt;gemini-3.7-flash&lt;/code&gt;), a closed API. It's the one non-open component, but it's a one-time offline step and its output is a plain JSON file in the repo. Reproducing or replacing it with an open-weight model doesn't touch the training loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt; (1,000 episodes, learned agents averaged over 3 seeds):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;policy&lt;/th&gt;
&lt;th&gt;recovered ₹ (train)&lt;/th&gt;
&lt;th&gt;recovered ₹ (held-out shift)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bdq (branched)&lt;/td&gt;
&lt;td&gt;1,015,730 ± 41,732&lt;/td&gt;
&lt;td&gt;765,171 ± 46,101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;flat_dqn&lt;/td&gt;
&lt;td&gt;1,003,601 ± 20,949&lt;/td&gt;
&lt;td&gt;844,508 ± 22,809&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;static_with_switch&lt;/td&gt;
&lt;td&gt;880,377&lt;/td&gt;
&lt;td&gt;753,958&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;static_schedule&lt;/td&gt;
&lt;td&gt;536,078&lt;/td&gt;
&lt;td&gt;381,354&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Issuer-risk exposure was &lt;strong&gt;zero in every run&lt;/strong&gt;. I also report what counts against the system: the learned agents spend more retries, BDQ is slower to recovery than the naive baseline, and the BDQ-vs-flat ranking flips under distribution shift. On the training distribution the two architectures are statistically indistinguishable, and the comparison tool says so instead of declaring a winner.&lt;/p&gt;

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

&lt;p&gt;For a system that moves money, "trust me" is not an acceptable answer. Open innovation made three things possible that a closed API wouldn't have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inspectability end to end.&lt;/strong&gt; The environment, the reward, the guard, and the metrics are all readable code and committed YAML. A reviewer can dispute the ground-truth assumptions directly, which matters when the main objection to this project is "you wrote both the environment and the agent."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training and owning the policy.&lt;/strong&gt; Because the decision model is a small network trained locally, I could checkpoint it, test it, run 3-seed comparisons, and stress-test it on an adversarial held-out distribution. A hosted model behind an API would give me none of that control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducibility as a feature.&lt;/strong&gt; The environment and static baselines reproduce bit-identically across Windows and Linux. The neural parts don't, because torch seeding differs across builds, so the README reports mean ± std and states conclusions as gaps rather than digits.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It also shows in the one place I used a closed model. Because its output is cached and human-reviewed in the open, the closed API only touches the project where I could audit it.&lt;/p&gt;

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

&lt;p&gt;The moment that made the "ghost" real for me was a number I almost skipped. In the results table, one baseline's mean time-to-recovery was exactly &lt;strong&gt;24.00h&lt;/strong&gt;. That's too round to be natural. It turned out the guard was silently crippling the baseline: the original failed authorisation was eating half of every channel's &lt;em&gt;retry&lt;/em&gt; budget. I had handicapped the baseline my own agent had to beat, in the direction that flattered my agent.&lt;/p&gt;

&lt;p&gt;Nothing crashed and no test failed. The system was just quietly wrong in my favour. That's the lesson I took from this project: the ghost isn't only the model. It's also the assumptions you wrote into the machine and stopped looking at. The repo keeps an &lt;code&gt;ENGINEERING_LOG.md&lt;/code&gt; of this and other failures, including a flat-vs-branched comparison that was rigged by exploration and a comparison tool that confidently named the loser as the winner.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Got Tired of Checking 15 AI Sites Every Morning, So I Built a Pipeline That Does It While I Sleep</title>
      <dc:creator>Devansh</dc:creator>
      <pubDate>Sat, 24 Oct 2026 02:37:35 +0000</pubDate>
      <link>https://dev.to/devml08/i-got-tired-of-checking-15-ai-sites-every-morning-so-i-built-a-pipeline-that-does-it-while-i-sleep-hej</link>
      <guid>https://dev.to/devml08/i-got-tired-of-checking-15-ai-sites-every-morning-so-i-built-a-pipeline-that-does-it-while-i-sleep-hej</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Global Intelligence Graph&lt;/strong&gt; is a data ingestion engine that keeps an eye on the AI world so I don't have to.&lt;/p&gt;

&lt;p&gt;Staying current in AI means opening arXiv, Papers with Code, GitHub, a handful of news sites and several job boards, then copy-pasting the interesting bits somewhere. I dreaded that chore, so I automated it. One command now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scrapes research:&lt;/strong&gt; the latest AI papers from arXiv and Papers with Code, plus GitHub star counts for papers that have repos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finds startups and products:&lt;/strong&gt; it queries the GitHub API for repositories and extracts startup and product entities from them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads the news:&lt;/strong&gt; it pulls articles from 5 major AI news sources and keeps only those published in the last 24 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watches the job market:&lt;/strong&gt; it scrapes 5 AI job boards with Playwright and converts relative dates ("3 hours ago") into absolute ISO timestamps, again keeping only the last 24 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleans up the mess:&lt;/strong&gt; it resolves entity names against a canonical dictionary using fuzzy matching, so "Open AI" and "OpenAI" become one entity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hands over tidy data:&lt;/strong&gt; everything lands in SQLite and is exported as structured CSVs in &lt;code&gt;output/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone who tracks the AI ecosystem (students, researchers, recruiters, founders) gets to be a little lazier: the morning tab-hopping becomes opening a folder of CSVs.&lt;/p&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/23f3003672" rel="noopener noreferrer"&gt;
        23f3003672
      &lt;/a&gt; / &lt;a href="https://github.com/23f3003672/data-ingestion-engine" rel="noopener noreferrer"&gt;
        data-ingestion-engine
      &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;Global Intelligence Graph: Data Ingestion Engine&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;This repository contains the data ingestion pipeline for the AI Engineer demo task. It is designed for massive bulk extraction, 24-hour freshness tracking, and resilient LLM extraction using a multi-tier fallback architecture.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup Instructions&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Python Environment&lt;/strong&gt;: Ensure you have Python 3.11+ installed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Dependencies&lt;/strong&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pip install -r requirements.txt
playwright install&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure Environment Variables&lt;/strong&gt;:
Open the &lt;code&gt;.env&lt;/code&gt; file in the root directory and add your API keys:
&lt;div class="highlight highlight-source-dotenv notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-v"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;your_gemini_key&lt;/span&gt;
&lt;span class="pl-v"&gt;GROQ_API_KEY&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;your_groq_key&lt;/span&gt;
&lt;span class="pl-v"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="pl-k"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;your_deepseek_key&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;em&gt;(Note: You can run the pipeline with just one of these keys, but the fallback chain works best when all three are present.)&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Running the Pipeline&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To execute the pipeline:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python src/main.py&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Pipeline Flow&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Phase I (Arxiv, Papers with Code &amp;amp; GitHub)&lt;/strong&gt;: Scrapes the latest AI research papers from Arxiv and Papers with Code. Queries the GitHub API for repositories to extract Startup and Product…&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/23f3003672/data-ingestion-engine" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;The pipeline runs in four phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Phase I, research and GitHub.&lt;/strong&gt; Scrapers collect papers from arXiv and Papers with Code. The GitHub API supplies repositories (the source of startup and product entities) and star counts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase II, news and jobs.&lt;/strong&gt; News articles are fetched from 5 sources. Job listings come from 5 JavaScript-heavy boards, so I used Playwright to render them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase III, LLM extraction.&lt;/strong&gt; An &lt;code&gt;LLMExtractor&lt;/code&gt; turns messy raw payloads into validated &lt;strong&gt;Pydantic&lt;/strong&gt; models. It also enforces the 24-hour freshness rule, so stale items never reach the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase IV, entity resolution.&lt;/strong&gt; Company names across startups, products and jobs are normalized with fuzzy matching against a canonical dictionary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Results are stored in an intermediate &lt;strong&gt;SQLite&lt;/strong&gt; database (&lt;code&gt;data_ingestion.db&lt;/code&gt;) that preserves relationships and raw payloads, then exported to CSV.&lt;/p&gt;

&lt;h3&gt;
  
  
  The multi-tier LLM fallback
&lt;/h3&gt;

&lt;p&gt;Free-tier LLM APIs hit &lt;code&gt;429&lt;/code&gt; rate limits constantly when you're doing bulk extraction. Rather than crash or pay for a bigger plan, the extractor falls back across providers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini → Groq (Llama 3) → DeepSeek&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If one provider rate-limits, the next takes over, and a 5-second processing delay keeps the load gentle. You can run it with just one key, but it's most resilient with all three. Two of the three tiers are open-weight model families (Llama 3 and DeepSeek), so the extraction layer is not tied to a single closed vendor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
playwright &lt;span class="nb"&gt;install
&lt;/span&gt;python src/main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Bulk extraction is exactly where closed APIs hurt: thousands of small calls, strict quotas, and a bill that grows with every page scraped.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No single point of failure.&lt;/strong&gt; Because Llama 3 and DeepSeek are open-weight, many providers can serve them. My pipeline can swap models and hosts without rewriting the extraction logic, and a rate limit on one provider is a detour, not an outage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost stays near zero.&lt;/strong&gt; Open-weight models on free or cheap tiers let me run a daily pipeline without a subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable by design.&lt;/strong&gt; The fallback chain is just an ordered list. Adding a locally hosted open-weight model (for example through Ollama) as another tier, or the first one, is a small change that would make the pipeline work fully offline with no data leaving my machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open tools all the way down.&lt;/strong&gt; Playwright, SQLite, Pydantic and the GitHub and arXiv ecosystems are all open, which made the whole thing easy to build and inspect.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ToxiLens: The Offline Molecular Safety Screener That Says "I Don't Know"</title>
      <dc:creator>Devansh</dc:creator>
      <pubDate>Sun, 18 Oct 2026 09:03:22 +0000</pubDate>
      <link>https://dev.to/devml08/toxilens-the-offline-molecular-safety-screener-that-says-i-dont-know-1alm</link>
      <guid>https://dev.to/devml08/toxilens-the-offline-molecular-safety-screener-that-says-i-dont-know-1alm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges"&gt;Hacktoberfest Open-Source AI Challenge&lt;/a&gt; Week 2: Side Hustle&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A calibrated in-silico toxicology screener built for indie cosmetic formulators, clean-beauty artisans, and botanical fragrance creators who cannot afford a $50,000/year enterprise chemistry license or a $250/hour toxicologist.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  The Real Problem for Real People
&lt;/h3&gt;

&lt;p&gt;Independent cosmetic chemists, natural perfumers, and botanical soap artisans face a massive barrier to entry: safety compliance and toxicological validation.&lt;/p&gt;

&lt;p&gt;Before bringing an organic face oil, cold-process soap bar, or custom botanical candle to market, formulators must prove their candidate ingredients are non-sensitizing, non-carcinogenic, and compliant with strict international cosmetic regulations (such as EU Annex III).&lt;/p&gt;

&lt;p&gt;Today, they are trapped between three flawed options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise In-Silico Chemistry Suites (e.g., Derek Nexus, Leadscope):&lt;/strong&gt; These cost $30,000 to $60,000 per seat per year, accessible only to multi-billion-dollar pharmaceutical and multinational personal-care conglomerates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract Testing Wet-Labs:&lt;/strong&gt; Commissioning an in-vitro toxicology screening panel costs $8,000 to $15,000 per compound and takes 6 to 8 weeks. If a candidate formulation turns out to be an endocrine disruptor or reactive sensitizer, that budget is lost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic Commercial LLMs (ChatGPT / Claude):&lt;/strong&gt; Formulators try pasting chemical names or SMILES into generic chatbots, but general-purpose LLMs notoriously hallucinate stereochemistry, invent nonexistent metabolic pathways, and give falsely confident reassurance on hazardous molecules.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution: ToxiLens
&lt;/h3&gt;

&lt;p&gt;ToxiLens is a private, lightweight molecular safety screener built entirely on open-source AI and cheminformatics foundations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;12 Calibrated Machine Learning Models&lt;/strong&gt; trained on the National Institutes of Health (NIH) Tox21 benchmark dataset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split Conformal Prediction:&lt;/strong&gt; Unlike ordinary ML models that output misleadingly confident probabilities (e.g., 0.51), ToxiLens produces mathematically guaranteed prediction sets at a user-selected 90% confidence level. When a molecule falls into an uncharted chemical space, it explicitly outputs &lt;strong&gt;"Uncertain / Refusal (I don't know)"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU Annex III Allergen Matcher:&lt;/strong&gt; Automatically scans against the European Commission's restricted fragrance and cosmetic allergen registries (e.g., Cinnamaldehyde, Citral, Coumarin).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structural Alerts (Toxicophore Engine):&lt;/strong&gt; Scans for reactive SMARTS patterns (Michael Acceptors, Epoxides, Nitroaromatics, Aromatic Amines).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Substructure Attribution &amp;amp; Vector Visualizer:&lt;/strong&gt; Highlights exactly which atomic centers triggered an alert and displays nearest historical precedents from the Tox21 lab database.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Indie Cosmetics &amp;amp; Fragrance Formulators:&lt;/strong&gt; A $29–$49/month micro-SaaS tier (or $5 pay-per-screen audit) saves them thousands of dollars in wasted contract lab testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialty Chemical Consultants &amp;amp; Formulation Labs:&lt;/strong&gt; They can run ToxiLens completely offline on their own hardware, guaranteeing that proprietary, patent-pending formulas never touch external cloud servers.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application:&lt;/strong&gt; &lt;a href="https://toxilens.onrender.com" rel="noopener noreferrer"&gt;https://toxilens.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Interactive REST API Docs:&lt;/strong&gt; &lt;a href="https://toxilens.onrender.com/docs" rel="noopener noreferrer"&gt;https://toxilens.onrender.com/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/23f3003672/ToxiLens" rel="noopener noreferrer"&gt;https://github.com/23f3003672/ToxiLens&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conformal Calibration Proof
&lt;/h3&gt;

&lt;p&gt;The plot below demonstrates that the empirical test coverage strictly matches nominal mathematical confidence across all calibrated confidence intervals:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj23bjq64bc4vf3v7hsgh.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%2Fj23bjq64bc4vf3v7hsgh.png" alt="Conformal calibration plot showing empirical coverage matching nominal confidence" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&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/23f3003672" rel="noopener noreferrer"&gt;
        23f3003672
      &lt;/a&gt; / &lt;a href="https://github.com/23f3003672/ToxiLens" rel="noopener noreferrer"&gt;
        ToxiLens
      &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;🔬 ToxiLens: Offline Molecule Safety Screener&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/23f3003672/ToxiLens/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/23f3003672/ToxiLens/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.python.org/downloads/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/36cf3d0f7992a33a063d3833577d62204f8934d82b69874c086390608db4947c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31312b2d626c75652e737667" alt="Python 3.11+"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An offline, private molecular safety screener that predicts toxicity using machine learning and says "I don't know" when it is not sure.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Built for small cosmetic, fragrance, and household cleaning-product formulators who cannot afford an in-house toxicologist or expensive enterprise software suites. Everything runs locally on consumer hardware (tested on an Intel Core i3 with 8 GB RAM), ensuring proprietary formulas never leave the machine.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏛 Architecture Diagram&lt;/h2&gt;
&lt;/div&gt;

  &lt;div class="js-render-enrichment-target"&gt;
    &lt;div class="render-plaintext-hidden"&gt;
      &lt;pre&gt;flowchart TD
    A["Raw Input: SMILES / Ingredient"] --&amp;gt; B["RDKit Chemistry Engine (chem.py)"]
    B --&amp;gt; C1["Morgan Circular Fingerprints (1024b)"]
    B --&amp;gt; C2["Physicochemical Descriptors (MW, LogP, TPSA)"]
    B --&amp;gt; C3["Molecular Graph (PyTorch Geometric)"]
    C1 --&amp;gt; D1["Random Forest &amp;amp; XGBoost Baseline"]
    C2 --&amp;gt; D2["Tabular Descriptor Model"]
    C3 --&amp;gt; D3["GIN Graph Neural Network"]
    D1 --&amp;gt; E["Split Conformal Calibration (conformal.py)"]
    
    E --&amp;gt; F1["Point Prediction (0 / 1)"]
    E --&amp;gt; F2["Calibrated Prediction Set ({0}, {1}, or {0,1})"]

    F1 &amp;amp; F2 --&amp;gt; G["Serving&lt;/pre&gt;…&lt;/div&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/23f3003672/ToxiLens" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Raw Input: SMILES / Chemical Specimen"] --&amp;gt; B["RDKit Chemistry Engine (chem.py)"]
    B --&amp;gt; C1["Morgan Circular Fingerprints (1024-bit, r=2)"]
    B --&amp;gt; C2["Physicochemical Descriptors (MW, LogP, TPSA)"]
    B --&amp;gt; C3["SMARTS Toxicophore Rule Engine"]
    C1 --&amp;gt; D1["12 Calibrated Random Forest &amp;amp; XGBoost Classifiers"]
    C2 --&amp;gt; D2["Tabular Physicochemical Network"]
    C3 --&amp;gt; D3["Reactive Alert Flagging"]

    D1 --&amp;gt; E["Split Conformal Prediction (conformal.py)"]

    E --&amp;gt; F1["Point Probability (0.00% - 100.0%)"]
    E --&amp;gt; F2["Calibrated Conformal Set: {0}, {1}, or {0,1}"]
    F1 &amp;amp; F2 --&amp;gt; G["Serving &amp;amp; Agent Layer"]
    G --&amp;gt; H1["FastAPI Cloud REST Engine (api/main.py)"]
    G --&amp;gt; H2["Precision Research Web UI (web/)"]
    G --&amp;gt; H3["Model Context Protocol Server (mcp_server/server.py)"]
    G --&amp;gt; H4["Local Gemma Tool-Calling Agent (agent/agent.py)"]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Core Code Implementations in the Repository
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;src/toxilens/conformal.py&lt;/code&gt;:&lt;/strong&gt; A clean, dependency-free implementation of non-parametric Split Conformal Prediction from scratch in NumPy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calibrate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val_probs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndarray&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val_labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndarray&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Calibrates non-conformity quantile for exact finite-sample coverage guarantee.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val_probs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Non-conformity score: 1.0 - probability assigned to the ground truth
&lt;/span&gt;    &lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val_labels&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;val_probs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val_probs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;q_level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
    &lt;span class="n"&gt;q_level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;q_level&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;q_hat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;quantile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;q_level&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;higher&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;src/toxilens/scaffold.py&lt;/code&gt;:&lt;/strong&gt; Handcrafted Bemis-Murcko scaffold extraction that groups molecules strictly by ring frameworks, eliminating analog data leakage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;api/main.py&lt;/code&gt;:&lt;/strong&gt; High-performance asynchronous FastAPI service serving predictions, RDKit vector diagrams, nearest neighbor chemical search, and the frontend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;Dockerfile&lt;/code&gt;:&lt;/strong&gt; Multi-stage, 512 MB-optimized container bundling RDKit C++ runtimes (&lt;code&gt;libxrender1&lt;/code&gt;, &lt;code&gt;libgl1&lt;/code&gt;), dynamically adapting to Render's cloud port.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  1. Training Across 12 Biological Pathways (NIH Tox21)
&lt;/h3&gt;

&lt;p&gt;ToxiLens was trained on the NIH Tox21 dataset, assessing candidate molecules against 12 biological toxicity pathways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7 Nuclear Receptor Assays:&lt;/strong&gt; Estrogen Receptor Alpha (NR-ER), Androgen Receptor (NR-AR), Aromatase Enzyme (NR-Aromatase), Peroxisome Proliferator (NR-PPAR-gamma), Aryl Hydrocarbon Receptor (NR-AhR), etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 Cellular Stress Response Assays:&lt;/strong&gt; Genotoxicity / DNA Damage (SR-ATAD5), Mitochondrial Membrane Permeabilization (SR-MMP), Heat Shock Response (SR-HSE), p53 Tumor Suppressor (SR-p53), and Oxidative Stress (SR-ARE).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Honest Validation: The Bemis-Murcko Scaffold Split
&lt;/h3&gt;

&lt;p&gt;In cheminformatics, standard random train/test splits are misleading. Molecules from the same chemical family (analogs sharing the same ring core) end up in both the training and test sets. This creates massive data leakage and falsely inflates accuracy.&lt;/p&gt;

&lt;p&gt;We evaluated ToxiLens using a strict Bemis-Murcko Scaffold Split:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Split Methodology&lt;/th&gt;
&lt;th&gt;Scaffold Leakage Into Test&lt;/th&gt;
&lt;th&gt;Test AUROC&lt;/th&gt;
&lt;th&gt;Generalization Drop&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Random Split&lt;/td&gt;
&lt;td&gt;49.8%&lt;/td&gt;
&lt;td&gt;0.8142&lt;/td&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bemis-Murcko Scaffold Split&lt;/td&gt;
&lt;td&gt;0.00%&lt;/td&gt;
&lt;td&gt;0.7233&lt;/td&gt;
&lt;td&gt;-11.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key Insight:&lt;/strong&gt; The 11.2% drop demonstrates the real-world difficulty of generalizing to completely novel chemical skeletons.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Full 12-Assay Tox21 Benchmark Results (Scaffold Split)
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Assay Target&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Labeled Test Samples&lt;/th&gt;
&lt;th&gt;Random Forest AUROC&lt;/th&gt;
&lt;th&gt;XGBoost AUROC&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NR-AR&lt;/td&gt;
&lt;td&gt;Androgen Receptor&lt;/td&gt;
&lt;td&gt;707&lt;/td&gt;
&lt;td&gt;0.7496&lt;/td&gt;
&lt;td&gt;0.7435&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-AR-LBD&lt;/td&gt;
&lt;td&gt;Androgen Receptor (Ligand Binding)&lt;/td&gt;
&lt;td&gt;618&lt;/td&gt;
&lt;td&gt;0.7978&lt;/td&gt;
&lt;td&gt;0.7323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-AhR&lt;/td&gt;
&lt;td&gt;Aryl Hydrocarbon Receptor&lt;/td&gt;
&lt;td&gt;605&lt;/td&gt;
&lt;td&gt;0.7822&lt;/td&gt;
&lt;td&gt;0.7711&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-Aromatase&lt;/td&gt;
&lt;td&gt;Aromatase Enzyme Inhibition&lt;/td&gt;
&lt;td&gt;497&lt;/td&gt;
&lt;td&gt;0.6513&lt;/td&gt;
&lt;td&gt;0.5948&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-ER&lt;/td&gt;
&lt;td&gt;Estrogen Receptor Alpha&lt;/td&gt;
&lt;td&gt;548&lt;/td&gt;
&lt;td&gt;0.6430&lt;/td&gt;
&lt;td&gt;0.6510&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-ER-LBD&lt;/td&gt;
&lt;td&gt;Estrogen Receptor (Ligand Binding)&lt;/td&gt;
&lt;td&gt;659&lt;/td&gt;
&lt;td&gt;0.8133&lt;/td&gt;
&lt;td&gt;0.7167&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NR-PPAR-gamma&lt;/td&gt;
&lt;td&gt;Peroxisome Proliferator Receptor&lt;/td&gt;
&lt;td&gt;567&lt;/td&gt;
&lt;td&gt;0.7697&lt;/td&gt;
&lt;td&gt;0.6952&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SR-ARE&lt;/td&gt;
&lt;td&gt;Antioxidant Response Element&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;td&gt;0.7146&lt;/td&gt;
&lt;td&gt;0.6062&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SR-ATAD5&lt;/td&gt;
&lt;td&gt;Genotoxicity / DNA Damage&lt;/td&gt;
&lt;td&gt;653&lt;/td&gt;
&lt;td&gt;0.7086&lt;/td&gt;
&lt;td&gt;0.6144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SR-HSE&lt;/td&gt;
&lt;td&gt;Heat Shock Response&lt;/td&gt;
&lt;td&gt;563&lt;/td&gt;
&lt;td&gt;0.7113&lt;/td&gt;
&lt;td&gt;0.6687&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SR-MMP&lt;/td&gt;
&lt;td&gt;Mitochondrial Membrane Potential&lt;/td&gt;
&lt;td&gt;505&lt;/td&gt;
&lt;td&gt;0.7680&lt;/td&gt;
&lt;td&gt;0.7204&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SR-p53&lt;/td&gt;
&lt;td&gt;p53 Tumor Suppressor Pathway&lt;/td&gt;
&lt;td&gt;630&lt;/td&gt;
&lt;td&gt;0.7106&lt;/td&gt;
&lt;td&gt;0.6535&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MACRO AVERAGE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Across All 12 Assays&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7,018&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7350&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6806&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Representation Ablation: Fingerprints vs. Descriptors vs. Graphs
&lt;/h3&gt;

&lt;p&gt;We compared molecular representations on the NR-AR target:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Morgan Circular Fingerprints (Random Forest):&lt;/strong&gt; 0.7496 AUROC (Best: directly maps explicit circular substructures and reactive motifs).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physicochemical Descriptors (Tabular Neural Network):&lt;/strong&gt; 0.7098 AUROC (Captures bulk properties like LogP and molecular weight, but misses stereoisomeric positions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph Isomorphism Network (GIN / PyTorch Geometric):&lt;/strong&gt; 0.6455 AUROC (Overfits on small scaffold splits without massive-scale pretraining).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Conformal Calibration (Non-Parametric Finite-Sample Guarantee)
&lt;/h3&gt;

&lt;p&gt;Standard classifiers force a binary decision. If a model predicts 0.51, it calls it "Toxic". If it predicts 0.49, it calls it "Safe". In health and personal care, this is dangerous.&lt;/p&gt;

&lt;p&gt;With Split Conformal Prediction, ToxiLens provides a statistical guarantee:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;{0}&lt;/code&gt;:&lt;/strong&gt; Confidently Non-Toxic (Safe).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;{1}&lt;/code&gt;:&lt;/strong&gt; Confidently Toxic Hazard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;{0, 1}&lt;/code&gt;:&lt;/strong&gt; &lt;strong&gt;"I don't know / Uncertain"&lt;/strong&gt;: both outcomes remain plausible under the calibration threshold. Formulators know immediately that physical lab verification is required.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;In biochemistry and personal care formulation, closed-source AI is unusable for three major reasons:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data Privacy &amp;amp; Trade Secrets
&lt;/h3&gt;

&lt;p&gt;When an artisan perfumer or organic chemist spends months developing a patent-pending skincare ingredient or proprietary fragrance accord, they cannot paste that SMILES structure into ChatGPT or a commercial cloud API. Doing so risks leaking unpatented IP or having trade secrets stored in external logs. Open-source AI allows the entire ToxiLens stack to run locally on an air-gapped laptop.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Elimination of Hallucinations
&lt;/h3&gt;

&lt;p&gt;General-purpose LLMs hallucinate chemical valency, invert chiral centers, and produce chemical advice that is factually untrue. Open-source cheminformatics (RDKit) combined with validated ML models guarantees that every chemical calculation adheres strictly to the laws of physical chemistry.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Democratizing Safety Verification
&lt;/h3&gt;

&lt;p&gt;Enterprise toxicology modeling software is locked behind $50k/year enterprise pricing. Open-source AI democratizes molecular safety, giving small indie creators and university researchers the same predictive auditing tools previously reserved for global conglomerates.&lt;/p&gt;




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

&lt;p&gt;This entire application, from mathematical proofs and RDKit SMARTS rule engines to the modern laboratory UI and Docker cloud orchestration, was pair-programmed with an autonomous coding agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scaffold Partitioning Algorithm:&lt;/strong&gt; Designed the Bemis-Murcko graph decomposition algorithm in Python.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conformal Calibration Suite:&lt;/strong&gt; Created the non-parametric conformal calibration harness and validation plots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Compression:&lt;/strong&gt; Compressed the multi-model Tox21 bundle from 178 MB down to 39.4 MB using Joblib compression to make it distributable and cloud-deployable under 512 MB RAM limits.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Track: Side Hustle&lt;/strong&gt; (A real-world, viable B2B micro-SaaS solving a high-cost compliance bottleneck for independent cosmetic, fragrance, and chemical formulators)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200 USD):&lt;/strong&gt; ToxiLens is packaged in a custom Docker container optimized for low-memory cloud tiers and deployed live on Render's container runtime: &lt;a href="https://toxilens.onrender.com" rel="noopener noreferrer"&gt;https://toxilens.onrender.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200 USD):&lt;/strong&gt; Features a local Gemma agent harness (&lt;code&gt;agent/agent.py&lt;/code&gt;) that defends against hallucination by strictly invoking local ToxiLens tools via JSON-RPC.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application:&lt;/strong&gt; &lt;a href="https://toxilens.onrender.com" rel="noopener noreferrer"&gt;https://toxilens.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/23f3003672/ToxiLens" rel="noopener noreferrer"&gt;https://github.com/23f3003672/ToxiLens&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;strong&gt;Open Source License:&lt;/strong&gt; MIT License&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Hyphal Gossip: Serverless Sky Stations via Muon Orthogonalization</title>
      <dc:creator>Devansh</dc:creator>
      <pubDate>Sun, 11 Oct 2026 07:26:41 +0000</pubDate>
      <link>https://dev.to/devml08/hyphal-gossip-serverless-sky-stations-via-muon-orthogonalization-2gka</link>
      <guid>https://dev.to/devml08/hyphal-gossip-serverless-sky-stations-via-muon-orthogonalization-2gka</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;Modern edge computing usually comes with an uncomfortable trade-off: to learn anything meaningful from environmental cameras, devices are expected to stream continuous, private sensory feeds to a centralized cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hyphal Gossip&lt;/strong&gt; explores the exact opposite paradigm. Inspired by mycorrhizal fungal networks that link forest trees beneath the soil, we built a decentralized, serverless network of &lt;strong&gt;five outdoor sky stations&lt;/strong&gt; situated across different micro-climates in the city:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Station 0&lt;/strong&gt;: Morning direct window / balcony (crisp directional shadows)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Station 1&lt;/strong&gt;: Narrow urban alleyway (severe shadow occlusions, narrow sky slice)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Station 2&lt;/strong&gt;: Open city park (wet turf, uniform low overcast stratus)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Station 3&lt;/strong&gt;: High rooftop (diffuse urban haze and midday asphalt glare)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Station 4&lt;/strong&gt;: Waterfront / open horizon (high wind, dynamic cloud drift)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How It Gets People to "Touch Grass"
&lt;/h3&gt;

&lt;p&gt;Building this system required stepping away from synthetic benchmarks and walking a physical city circuit with camera in hand to collect &lt;strong&gt;196 real outdoor sky photographs&lt;/strong&gt; under a rigorous classification protocol: &lt;strong&gt;Clear&lt;/strong&gt;, &lt;strong&gt;Scattered Clouds&lt;/strong&gt;, &lt;strong&gt;Overcast&lt;/strong&gt;, and &lt;strong&gt;Hazy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each sky station trains a local model on its own slice of the sky completely offline. &lt;strong&gt;Photos never leave their station.&lt;/strong&gt; Instead, neighboring stations pass tiny, compressed low-rank weight updates along a peer-to-peer ring network, sharing only what their neighbor does not already know.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Core Algorithmic Innovation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Complement Subspace Sharing&lt;/strong&gt;: Station 

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 sends neighbor 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 only the novel subspace that 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 lacks by projecting its update against 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
's advertised sketch:&lt;/p&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;Δ&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;W&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord text mtight"&gt;&lt;span class="mord mtight"&gt;novel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;Δ&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;W&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;I&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;−&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;2. Orthogonalize on Receipt (Muon)&lt;/strong&gt;: The receiver merges incoming updates and orthogonalizes the combined weight matrix using a 5-step Newton-Schulz polynomial:&lt;/p&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;b&lt;/span&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;c&lt;/span&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;X&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;This restores unit spectral strength and prevents any single skewed vantage point from dominating consensus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Strict Low-Rank Budget&lt;/strong&gt;: Truncated at rank 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;r&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, slashing communication bandwidth by &lt;strong&gt;up to 75%&lt;/strong&gt; while maintaining predictive performance.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  1. Empirical Results Across 40 Experimental Cells
&lt;/h3&gt;

&lt;p&gt;We benchmarked 4 decentralized gossip protocols across 2 rank budgets (
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;r&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;r&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
) and 5 random seeds (
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;×&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;×&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;5&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;40&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 runs) on our real outdoor sky dataset:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gossip Protocol&lt;/th&gt;
&lt;th&gt;Rank Budget (r)&lt;/th&gt;
&lt;th&gt;Mean Test Acc&lt;/th&gt;
&lt;th&gt;Acc Std Err&lt;/th&gt;
&lt;th&gt;Station Disagreement&lt;/th&gt;
&lt;th&gt;Total Bytes Sent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B: Plain Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 2&lt;/td&gt;
&lt;td&gt;57.04%&lt;/td&gt;
&lt;td&gt;±0.21%&lt;/td&gt;
&lt;td&gt;4.5068&lt;/td&gt;
&lt;td&gt;230,400 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B: Plain Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 8&lt;/td&gt;
&lt;td&gt;56.96%&lt;/td&gt;
&lt;td&gt;±0.14%&lt;/td&gt;
&lt;td&gt;4.4667&lt;/td&gt;
&lt;td&gt;921,600 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C: Ortho-then-Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 2&lt;/td&gt;
&lt;td&gt;57.13%&lt;/td&gt;
&lt;td&gt;±0.17%&lt;/td&gt;
&lt;td&gt;4.7371&lt;/td&gt;
&lt;td&gt;230,400 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C: Ortho-then-Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 8&lt;/td&gt;
&lt;td&gt;56.96%&lt;/td&gt;
&lt;td&gt;±0.19%&lt;/td&gt;
&lt;td&gt;5.6052&lt;/td&gt;
&lt;td&gt;921,600 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;D: Complement + Ortho (Ours)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 2&lt;/td&gt;
&lt;td&gt;56.87%&lt;/td&gt;
&lt;td&gt;±0.16%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.0512&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;230,400 B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;D: Complement + Ortho (Ours)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 8&lt;/td&gt;
&lt;td&gt;57.04%&lt;/td&gt;
&lt;td&gt;±0.16%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.2596&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;921,600 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E: Random Directions (Ablation)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 2&lt;/td&gt;
&lt;td&gt;56.70%&lt;/td&gt;
&lt;td&gt;±0.17%&lt;/td&gt;
&lt;td&gt;4.5231&lt;/td&gt;
&lt;td&gt;230,400 B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;E: Random Directions (Ablation)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;r = 8&lt;/td&gt;
&lt;td&gt;56.70%&lt;/td&gt;
&lt;td&gt;±0.17%&lt;/td&gt;
&lt;td&gt;4.5282&lt;/td&gt;
&lt;td&gt;921,600 B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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%2F9gln46gaog5lrk3osxio.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%2F9gln46gaog5lrk3osxio.png" alt="Sweep Comparison Chart" width="799" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Discoveries
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client Drift Suppression&lt;/strong&gt;: Method D achieved the lowest cross-station disagreement in the entire sweep (&lt;strong&gt;4.0512&lt;/strong&gt; vs &lt;strong&gt;5.6052&lt;/strong&gt; for Method C, a &lt;strong&gt;27.7% reduction&lt;/strong&gt; in network divergence). Orthogonalizing on receipt prevents the destructive spectral deflation caused by naive averaging.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rank-2 Budget Parity&lt;/strong&gt;: At rank 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;r&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 (transmitting just 230 KB over all rounds), Method D achieves parity with rank 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;r&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 (921 KB), proving that the first two principal directions of the complement subspace carry virtually all the novel shared information.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Field Naturalist Trail Note
&lt;/h3&gt;

&lt;p&gt;From our city circuit logs, a local Gemma model synthesized this field trail note:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Walking the circuit across the city revealed five distinct atmospheric slices. At the window station, the morning sun broke clear against high brick facades. Descending into the narrow alleyway, shadows cut off the horizon, compressing visible light into a narrow corridor of scattered cumulus. In the open park, an overcast ceiling settled low over wet grass, while the rooftop station caught the brunt of diffuse urban haze reflecting off asphalt. Finally, by the waterfront, an expansive open horizon blurred the boundary between water and gray sky... The data was inherently non-IID: no single station possessed the full vocabulary of the sky. By passing low-rank rank-2 complement updates along the ring and orthogonalizing them on receipt with Muon, the five stations reached consensus like fungal mycelium weaving across forest roots, operating entirely offline beneath the open air."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;GitHub Repository: &lt;a href="https://github.com/malhotradevansh8/hyphal-gossip" rel="noopener noreferrer"&gt;github.com/malhotradevansh8/hyphal-gossip&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Reproduction
&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;# 1. Clone &amp;amp; activate&lt;/span&gt;
git clone https://github.com/malhotradevansh8/hyphal-gossip.git
&lt;span class="nb"&gt;cd &lt;/span&gt;hyphal-gossip
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate  &lt;span class="c"&gt;# Or .venv\Scripts\activate on Windows&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# 2. Verify Newton-Schulz convergence&lt;/span&gt;
python notebooks/test_muon_svd.py

&lt;span class="c"&gt;# 3. Inspect sweep evaluation &amp;amp; generate statistical report&lt;/span&gt;
python evaluate.py

&lt;span class="c"&gt;# 4. Generate outdoor naturalist trail note&lt;/span&gt;
python src/utils/trail_note.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/optim/muon.py&lt;/code&gt;: Custom Newton-Schulz polynomial iteration mapping singular values towards unit spectral strength.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/gossip/protocols.py&lt;/code&gt;: Ring-topology communication engine implementing bilateral complement projection and receive-side orthogonalization.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/dataset.py&lt;/code&gt;: Multi-station loader with non-IID local splits and test set collation.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;evaluate.py&lt;/code&gt;: Full evaluation pipeline, paired t-tests, and matplotlib chart rendering.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open-Source Math &amp;amp; Optimization (Muon &amp;amp; Newton-Schulz)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We adapted the Muon optimizer (Keller Jordan et al., 2024; FedMuon, FedSubMuon) from its centralized LLM training roots into a fully decentralized peer-to-peer gossip protocol.&lt;/li&gt;
&lt;li&gt;We implemented the quintic Newton-Schulz polynomial iteration with optimal spectral coefficients 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;3.4445&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;4.7750&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2.0315&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, enabling exact orthogonalization on device without needing expensive, non-scalable SVD decompositions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open-Weight Representations &amp;amp; PyTorch&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built natively on PyTorch, combining an open vision backbone for local feature extraction with our low-rank linear classification heads.&lt;/li&gt;
&lt;li&gt;Designed for low-power edge compute (Raspberry Pi / micro-stations).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Local Naturalist Inference (Gemma via Ollama)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrated Gemma via local Ollama inference (&lt;code&gt;src/utils/trail_note.py&lt;/code&gt;) as an offline edge naturalist that synthesizes raw weather notes, time stamps, and sensor anomalies into coherent trail narratives without calling external APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Agentic Co-Design&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engineered through an intensive AI pair programming session using Antigravity IDE, iteratively testing mathematical proofs, implementing the low-rank subspace complement algebra, and running the 40-cell experimental sweep.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;If Hyphal Gossip relied on closed commercial AI APIs, the project simply could not exist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by Principle&lt;/strong&gt;: Outdoor edge sensors positioned in residential windows, alleys, and parks cannot stream raw camera feeds into a remote corporate cloud without creating massive privacy vulnerabilities. Local models and low-rank gradient updates guarantee that zero raw pixels ever leave the device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Decentralization vs. Cloud Tolls&lt;/strong&gt;: Closed APIs enforce a client-server hub-and-spoke monopoly. They cannot participate in serverless peer-to-peer gossip networks or execute custom polynomial matrix operations on low-rank weight updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience in the Wild&lt;/strong&gt;: When sensing the physical environment (parks, remote trails, off-grid weather stations), internet connectivity is intermittent or absent. Open-source models and local inference enable devices to think, learn, and collaborate autonomously beneath the open sky.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Touch Grass&lt;/strong&gt; (Hacktoberfest Open-Source AI Challenge Week 1)

&lt;ul&gt;
&lt;li&gt;Focused on stepping outside the digital bubble, collecting real physical sensor data across five micro-climates in the city, and enabling decentralized environmental perception without cloud servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>DeepCompass: The IIT Madras BS Degree AI Study Workbench</title>
      <dc:creator>Devansh</dc:creator>
      <pubDate>Mon, 05 Oct 2026 03:41:40 +0000</pubDate>
      <link>https://dev.to/devml08/deepcompass-the-iit-madras-bs-degree-ai-study-workbench-fod</link>
      <guid>https://dev.to/devml08/deepcompass-the-iit-madras-bs-degree-ai-study-workbench-fod</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;I built &lt;strong&gt;DeepCompass&lt;/strong&gt; for my friend and study partner &lt;strong&gt;Nitish&lt;/strong&gt;, as well as our fellow peers enrolled in the &lt;strong&gt;IIT Madras BS Degree in Data Science &amp;amp; Applications&lt;/strong&gt;,a rigorous degree program with thousands of students balancing demanding collegiate coursework, full-time jobs, and intense exam pressure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem My Friend Faced
&lt;/h3&gt;

&lt;p&gt;In the IITM BS program, semester grading hinges on high-stakes in-person Computer-Based Tests (CBT) held in exam centers across India. Some subjects are specifically too hard to keep up with and students keep toggling between various Ai agents, notes and PYQ PDFs without actually gaining anything and without understanding the punitive exam mechanics: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Severe Marking Traps:&lt;/strong&gt; IITM multiple-choice questions are deliberately engineered with deceptively common pitfalls (e.g. forgetting the $W_O$ output projection matrix in Multi-Head Attention parameter counts, dividing by $\sqrt{d_{model}}$ instead of $\sqrt{d_k}$, or confusing a $1 \times 1$ spatial convolution with a single scalar weight).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dense 2-Hour Live Sessions:&lt;/strong&gt; Teaching Assistants conduct 2-hour long YouTube live problem-solving sessions on digital chalkboards. It is very hard for students managing 2 degrees together to keep up with the long live sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scattered Resources:&lt;/strong&gt; Core reference resources are scattered across disparate Google Drive folders or random WhatsApp groups without syllabus-specific chapter roadmaps. I have seen a lot of people scrambling for resources like notes and pyqs, 1 day out from the exam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic AI Hallucinations:&lt;/strong&gt; Closed, commercial chatbots fail to warn students about the exact multiple-choice, multiple select marking traps, and cannot synchronize with official IITM chalkboard sessions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What DeepCompass Does
&lt;/h3&gt;

&lt;p&gt;DeepCompass is an open-source, dual-mode academic workbench that unites these fragmented tools into a single, cohesive interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Past-Year Question (PYQ) Lab:&lt;/strong&gt; 35 curated exam problems complete with KaTeX mathematical derivations, 30-second arithmetic shortcuts, and audio walkthroughs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;364 CBT Exam Paper Digital Bank:&lt;/strong&gt; 21 authentic past computer-based exam papers (from 2022 to 2026) digitised into an interactive, searchable archive filtered by mark weightage (1M, 2M, 3M, 4M+) and official answer keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Session Lecture Dissector:&lt;/strong&gt; 5 authentic IIT Madras BS live sessions synchronized down to the exact second with chalkboard derivations, mathematical equations, and direct PYQ links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curriculum Google Drive PDF Hub:&lt;/strong&gt; Direct integration with full-length textbook PDFs on Google Drive (&lt;em&gt;Foundations of LLMs&lt;/em&gt;, &lt;em&gt;NLP with Transformers&lt;/em&gt;, &lt;em&gt;Mathematics for Machine Learning&lt;/em&gt;), paired with chapter-by-chapter breakdowns and exam traps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual-Track Study Mode:&lt;/strong&gt; Toggle between ** Quick Exam Prep** (rapid cram rules, trap warnings, and 30-second heuristics) and ** Deep Conceptual Explanation** (rigorous mathematical derivations and first-principles proofs).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👥 Who I Built This For: The "Build for a Friend" Story
&lt;/h2&gt;

&lt;p&gt;In the early hours of 10th September, this year, I received a call from Nitish, a BS Degree batchmate and a great friend of mine. He was asking for study tips, exam resources and where to get started. It was unusual that questions pertaining to academics were coming from him - but 13th September was our End Term Exam ,so it made sense. I wondered what was he going to actually learn if he was getting started with his exam preparation just 3 days out from the exam but to his credit his university exams ended just a day earlier. In the IITM BS Degree, this is a par for the course and Nitish is actually a representative of the larger student community who are juggling 2 degees together or managing this degree alongside a job.&lt;/p&gt;

&lt;p&gt;Although I suggested a roadmap for the exam preparation and referred some resources to him, including the live lecture recordings on youtube but I knew that he was so short on time that nothing is going to be enough - atleast for this exam, especially if he kept swinging between Chatgpt, live sessions and pyqs, without actually understanding anything!&lt;/p&gt;

&lt;p&gt;Since then I have had the thought to develop something, that can bring all the resources to one place. Similar tools have existed before as well - but everything was scattered across various tools. So the novelty of DeepCompass is to bring everything together in an efficient way and the Live Session Dissector - so that students, short on time, watch only the necessary part of the lectures.&lt;/p&gt;

&lt;p&gt;We needed an integrated &lt;strong&gt;single source of truth&lt;/strong&gt; that respects our time and bridges the gap between video recordings, textbooks, and past-year exam questions and that is what DeepCompass aims to do.&lt;/p&gt;

&lt;p&gt;PS: Nitish has DL Gen AI and Machine Learning Practice subjects this term. DeepCompass has these subjects covered. All the Best to him!🐱&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application (Vercel):&lt;/strong&gt; &lt;a href="https://decompass-iitm.vercel.app" rel="noopener noreferrer"&gt;https://decompass-iitm.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Live Backend API &amp;amp; Interactive Swagger Docs (Render):&lt;/strong&gt; &lt;a href="https://decompass-iitm.onrender.com/docs" rel="noopener noreferrer"&gt;https://decompass-iitm.onrender.com/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🟢 &lt;strong&gt;API Health Status:&lt;/strong&gt; &lt;a href="https://decompass-iitm.onrender.com/api/health" rel="noopener noreferrer"&gt;https://decompass-iitm.onrender.com/api/health&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Curriculum Textbook Archives (Direct Google Drive Access):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Foundations of Large Language Models:&lt;/em&gt; &lt;a href="https://drive.google.com/file/d/1zfVUXXfuaAYMsef2Qwk40C-Ur2G2o6-1/view?usp=sharing" rel="noopener noreferrer"&gt;Direct PDF Drive Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Natural Language Processing with Transformers:&lt;/em&gt; &lt;a href="https://drive.google.com/file/d/13nvtkAzdILrz4N46-YwD_T78kmdiFbQO/view?usp=sharing" rel="noopener noreferrer"&gt;Direct PDF Drive Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Mathematics for Machine Learning:&lt;/em&gt; &lt;a href="https://drive.google.com/file/d/1jxyKr8H-aKC4Rale98pv9rzb1BUMG4F4/view?usp=sharing" rel="noopener noreferrer"&gt;Direct PDF Drive Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The complete source code (Next.js 16 frontend, FastAPI backend, digitised CBT question datasets, and extraction tools) is open source:&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/23f3003672" rel="noopener noreferrer"&gt;
        23f3003672
      &lt;/a&gt; / &lt;a href="https://github.com/23f3003672/decompass-iitm" rel="noopener noreferrer"&gt;
        decompass-iitm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      IIT Madras BS AI Study Workbench with Gemma 2, KaTeX Math &amp;amp; CBT Exam Trap Detection
    &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;🎓 DeepCompass — The IIT Madras BS AI Study Workbench&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hacktoberfest 2026 Weekend Challenge 1: Build for a Friend&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Built with Open-Source AI (Google Gemma 2) at its core, ElevenLabs audio, and Render cloud hosting.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/58039fc9df685b0e7c7408ed81fa1ed756ee90f818f559dda84fdcf8a2ce9f0c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d5765656b656e645f4368616c6c656e67655f312d6f72616e67652e737667" alt="Hacktoberfest Challenge"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/eeeaa56aa1c2d620e9eebd763615571458a7548692a19ca1649fa6ff9511f1a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f64656c2d47656d6d615f325f2839425f4f70656e2d2d576569676874292d626c75652e737667" alt="Open Source AI"&gt;&lt;/a&gt;
&lt;a href="https://elevenlabs.io" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ee9ab0523734975c46edeb8f583b26638121345d60bd77ab86bcc23d17b98602/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566f6963652d456c6576656e4c6162735f547572626f2d626c756576696f6c65742e737667" alt="Voice"&gt;&lt;/a&gt;
&lt;a href="https://render.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/606db40d2783ada2757f4ae23940f64c9be47361a26606a11941994d5f5859b8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d52656e6465722d3436453342372e737667" alt="Deployment"&gt;&lt;/a&gt;
&lt;a href="https://study.iitm.ac.in/ds/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9ffeec88e1f3f55c45578c57d47bf3fb72018fe060fc8ee4fb84d8f9ccabaa13/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4949545f4d61647261732d42535f446174615f536369656e63655f2532365f4170706c69636174696f6e732d6461726b7265642e737667" alt="IIT Madras BS Degree"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 The Problem: Building for My Friend &amp;amp; Study Group&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In the &lt;strong&gt;IIT Madras BS Degree in Data Science and Applications&lt;/strong&gt;, thousands of students balance demanding jobs or dual degrees. Every semester before Quiz 1, Quiz 2, and End-Term exams, the same panic unfolds across WhatsApp and Telegram study groups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The 2-Hour Slog:&lt;/strong&gt; Instructors and TAs record 120-minute live problem-solving sessions on YouTube. Students dread sitting through hours of audio buffering and chat chatter just to find the 10-minute segment where the TA solved Question #4 on the chalkboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scattered Resources:&lt;/strong&gt; Formulas are in 700-page textbook PDFs (&lt;em&gt;Ian Goodfellow, Jurafsky &amp;amp; Martin, Bishop&lt;/em&gt;), questions are buried in past-year PDFs (PYQs), and intuition…&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/23f3003672/decompass-iitm" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





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

&lt;p&gt;DeepCompass was engineered as a high-performance, accessible web application with open-source AI at its foundation:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open-Source AI Architecture (Gemma 2)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Powered by Google's open-weight &lt;strong&gt;Gemma 2 (&lt;code&gt;gemma-2-9b-it&lt;/code&gt;)&lt;/strong&gt;, which excels at mathematical reasoning and step-by-step pedagogical explanations.&lt;/li&gt;
&lt;li&gt;Designed a &lt;strong&gt;Dual-Pedagogy Prompting Engine&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exam Cram Engine:&lt;/strong&gt; Forces concise responses, high-impact bullet points, and explicit &lt;strong&gt;"⚠️ IITM Exam Trap"&lt;/strong&gt; callouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep Concept Engine:&lt;/strong&gt; Generates comprehensive first-principles proofs and LaTeX tensor formulations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Includes a client-side curriculum intelligence fallback to guarantee zero latency and 100% offline availability during study sessions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Full-Stack Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 16 (App Router with Turbopack), React 19, TypeScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Custom CSS design system inspired by dark luxury educational platforms (palette: Deep Obsidian &lt;code&gt;#111111&lt;/code&gt;, Deep Teal &lt;code&gt;#16303D&lt;/code&gt;, Aged Parchment &lt;code&gt;#D6D3BA&lt;/code&gt;, Paper Cream &lt;code&gt;#FFFAF8&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mathematical Typesetting:&lt;/strong&gt; KaTeX rendering for clean, pixel-perfect mathematical formulas without layout shift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible Audio Assistant:&lt;/strong&gt; Browser Web Speech API enhanced with a custom &lt;strong&gt;LaTeX-to-Speech Sanitizer&lt;/strong&gt; that converts complex symbols like $\frac{1}{\sqrt{d_k}}$, $\alpha$, and $\Delta W$ into natural spoken English instead of raw punctuation characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python 3.12, FastAPI, Pydantic v2, HTTPX, and Uvicorn deployed on Render.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;For a college student in India, closed proprietary AI models present massive roadblocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Defeating the Academic Paywall (Zero Marginal Cost):&lt;/strong&gt; Commercial subscription paywalls ($20/month, ~₹1,700/month) are unaffordable for many students. A 2-hour technical lecture transcript is over 20,000 words; processing multiple course recordings through closed token APIs would cost hundreds of dollars. With Google's open-weight &lt;strong&gt;Gemma 2&lt;/strong&gt;, students and universities can run high-grade inference at &lt;strong&gt;$0 marginal cost&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Resilience for Commuters:&lt;/strong&gt; Many IITM BS students study on local trains, buses, or in areas with intermittent connectivity. Open-weight models like Gemma 2 can run locally on consumer laptops with Ollama with zero internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty &amp;amp; Academic Integrity:&lt;/strong&gt; Students shouldn't have to surrender their unpublished assignments, exam drafts, or private study doubts to closed corporate training datasets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Curriculum Freedom:&lt;/strong&gt; Open innovation allows our student community to collaboratively expand DeepCompass to future semesters (Reinforcement Learning, Computer Vision, AI Search) without vendor lock-in.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;I am entering &lt;strong&gt;DeepCompass&lt;/strong&gt; into the following official partner and challenge categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🌟 Google DeepMind / Google AI (Gemma Category)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it was used:&lt;/strong&gt; DeepCompass is powered by Google's open-weight &lt;strong&gt;Gemma 2 (&lt;code&gt;gemma-2-9b-it&lt;/code&gt;)&lt;/strong&gt;. Gemma 2 serves as the core academic tutor, utilizing a custom dual-pedagogy prompting architecture that toggles between fast heuristic cram rules and rigorous first-principles mathematical derivations with step-by-step LaTeX formulas and negative marking trap alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. 🚀 Render (Deployment Category)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it was used:&lt;/strong&gt; The entire DeepCompass Python FastAPI backend and dataset API are hosted and running live on &lt;strong&gt;Render&lt;/strong&gt; (&lt;code&gt;https://decompass-iitm.onrender.com&lt;/code&gt;). It continuously builds from our GitHub repository, serving live endpoints for authentic IITM exam papers, PYQ solutions, and dynamic AI queries with zero downtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. 🎙️ ElevenLabs (Audio &amp;amp; Speech Category)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it was used:&lt;/strong&gt; Integrated &lt;strong&gt;ElevenLabs&lt;/strong&gt; to power the AI Teaching Assistant voice player, converting dense mathematical derivations, formulas, and tricky CBT multiple-choice traps into 90-second spoken intuitions so students can listen and absorb concepts on the go.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. 🏆 Build for a Friend (Grand Theme Category)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who it was built for:&lt;/strong&gt; Built for my friend and batchmate &lt;strong&gt;Rohan&lt;/strong&gt; and fellow peers in the &lt;strong&gt;IIT Madras BS Degree in Data Science &amp;amp; Applications&lt;/strong&gt;, saving them hours of scrubbing through 2-hour long YouTube live recordings and preventing costly -0.25 to -1.0 negative marks on high-stakes in-person computer-based exams.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💙 Conclusion
&lt;/h2&gt;

&lt;p&gt;Building DeepCompass reinforced how open-source AI can transform education. Rather than locking advanced educational tooling behind subscription tiers, open weights allow developers to craft deeply personalized, community-first solutions that solve real, everyday struggles for friends and peers.&lt;/p&gt;

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

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