<?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: Aroso Emmanuel</title>
    <description>The latest articles on DEV Community by Aroso Emmanuel (@emarc99).</description>
    <link>https://dev.to/emarc99</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%2F462416%2F3407b14b-33ee-4e49-8365-49c728eb9f3d.png</url>
      <title>DEV Community: Aroso Emmanuel</title>
      <link>https://dev.to/emarc99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emarc99"/>
    <language>en</language>
    <item>
      <title>ScholarSentinel: An Open-Source AI Watchdog Built So My Brother Never Misses a Scholarship Screening Again</title>
      <dc:creator>Aroso Emmanuel</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:12:06 +0000</pubDate>
      <link>https://dev.to/emarc99/scholarsentinel-an-open-source-ai-watchdog-built-so-my-brother-never-misses-a-scholarship-4e9l</link>
      <guid>https://dev.to/emarc99/scholarsentinel-an-open-source-ai-watchdog-built-so-my-brother-never-misses-a-scholarship-4e9l</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;ScholarSentinel&lt;/strong&gt;, an autonomous scholarship intelligence watchdog designed specifically for my younger brother, &lt;strong&gt;Daniel&lt;/strong&gt;, who is a 300-level Computer Engineering student at the &lt;strong&gt;Federal University of Technology, Akure (FUTA)&lt;/strong&gt; in Nigeria.&lt;/p&gt;

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

&lt;p&gt;Daniel is a hardworking engineering student who applies to competitive undergraduate merit scholarships (NNPC/TotalEnergies, Chevron, MTN Foundation Science &amp;amp; Technology, PTDF, Shell, Jim Ovia). &lt;/p&gt;

&lt;p&gt;Recently, he suffered a devastating blow. He was shortlisted for a prestigious screening examination, but &lt;strong&gt;the scholarship board never sent an email notification&lt;/strong&gt;. In Nigeria, scholarship organizers frequently upload massive PDF candidate lists or post unformatted notices on obscure portal bulletin boards and educational forums (like &lt;em&gt;Myschool&lt;/em&gt; and &lt;em&gt;Scholar9ja&lt;/em&gt;). &lt;/p&gt;

&lt;p&gt;Because his inbox stayed silent, Daniel had no idea he was shortlisted. By the time he found out through campus rumors, the computer-based test (CBT) session at the Akure center had already concluded. His seat was forfeited.&lt;/p&gt;

&lt;p&gt;He had the CGPA, the technical talent, and the preparation to pass—but lost a life-changing full university scholarship simply because of a communication failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ScholarSentinel&lt;/strong&gt; eliminates this forever. It acts as an autonomous scout that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Crawls scholarship portals and university announcement boards with &lt;strong&gt;SerpApi&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;Google Gemma&lt;/strong&gt; (open-weight AI) to parse messy circulars, match Daniel's academic credentials (FUTA, matric number, JAMB code), and extract exact CBT test venues and dates.&lt;/li&gt;
&lt;li&gt;Persists application and tracking states in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Synthesizes an urgent audio wake-up call using &lt;strong&gt;ElevenLabs&lt;/strong&gt; so sound cuts through notification fatigue.&lt;/li&gt;
&lt;li&gt;Dispatches an emergency message directly to Daniel's &lt;strong&gt;WhatsApp&lt;/strong&gt; with venue coordinates, accreditation cutoff times, and required physical documents.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployed App (on Render):&lt;/strong&gt; &lt;a href="https://scholarsentinel.onrender.com" rel="noopener noreferrer"&gt;https://scholarsentinel.onrender.com&lt;/a&gt; &lt;em&gt;(or run locally with zero config at &lt;code&gt;http://localhost:3000&lt;/code&gt;)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Features:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;📋 &lt;strong&gt;Live Watchlist&lt;/strong&gt;: Real-time monitoring board with exam dates, venues (e.g. &lt;em&gt;FUTA Digital Research Centre&lt;/em&gt;), and requirements.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Gemma Circular &amp;amp; PDF Scanner&lt;/strong&gt;: Paste unformatted circulars or click sample presets (NNPC / MTN) to watch Gemma extract dates, venues, and confirm shortlist status.&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;SerpApi Autonomous Scout&lt;/strong&gt;: Queries live educational forums and feeds for fresh releases.&lt;/li&gt;
&lt;li&gt;🎙️ &lt;strong&gt;ElevenLabs Audio Alerts Studio&lt;/strong&gt;: Hear the urgent voice briefing informing Daniel of his test screening date and venue.&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;WhatsApp Dispatcher&lt;/strong&gt;: Mobile phone simulation showing the exact WhatsApp alert sent directly to Daniel (+234 812 345 6789), with direct &lt;code&gt;wa.me&lt;/code&gt; click-to-chat links.&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 is open-source under the MIT license:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/emarc99" rel="noopener noreferrer"&gt;
        emarc99
      &lt;/a&gt; / &lt;a href="https://github.com/emarc99/scholarsentinel" rel="noopener noreferrer"&gt;
        scholarsentinel
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Autonomous AI Scholarship Watchdog for Daniel
    &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;🛡️ ScholarSentinel — Autonomous AI Scholarship Watchdog&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Built for my younger brother Daniel (300L Computer Engineering, Federal University of Technology, Akure - FUTA)&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Official submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;Hacktoberfest 2026 Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0983502e6059e97553030c163ef5aa9ab037ec66098fdd3ae8aa427a08ed4990/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032365f5765656b656e645f4368616c6c656e67652d4646364234413f7374796c653d666f722d7468652d6261646765266c6f676f3d6861636b746f62657266657374266c6f676f436f6c6f723d7768697465" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842e217521a27b3d64b815400ac46c9df8db709f95af4dd9ee90ec6897b03e09/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f6f676c655f47656d6d612d4f70656e2d2d576569676874735f436f72652d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465" alt="Google Gemma"&gt;&lt;/a&gt;
&lt;a href="https://render.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3f11ca8cdd758c8aa3203b79b44047f4c364898ee353b06069df154b8729bca7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f7965645f6f6e2d52656e6465722d3436453342373f7374796c653d666f722d7468652d6261646765266c6f676f3d72656e646572266c6f676f436f6c6f723d626c61636b" alt="Render"&gt;&lt;/a&gt;
&lt;a href="https://elevenlabs.io" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/13d5cb0012313a2638cf3125dc75093c8c1445d1589bcbbb7c82d61a74b184fa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566f6963655f416c657274732d456c6576656e4c6162732d626c61636b3f7374796c653d666f722d7468652d6261646765" alt="ElevenLabs"&gt;&lt;/a&gt;
&lt;a href="https://www.mongodb.com/atlas" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/619d39bf28679212580d488506c2a38b26aac4732735f3e390d55a8f78971fd5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f44617461626173652d4d6f6e676f44425f41746c61732d3437413234383f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465" alt="MongoDB Atlas"&gt;&lt;/a&gt;
&lt;a href="https://serpapi.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/747eeae20634da20aeab527f0394823c7b21eb4d19da2ce79c0b9dcf01dce8b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5765625f53636f75742d536572704170692d626c75653f7374796c653d666f722d7468652d6261646765" alt="SerpApi"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 The Story Behind ScholarSentinel&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;My younger brother, &lt;strong&gt;Daniel&lt;/strong&gt;, is a 300-level Computer Engineering student at the &lt;strong&gt;Federal University of Technology, Akure (FUTA)&lt;/strong&gt; in Nigeria. Like thousands of determined STEM undergraduates, he applies for major merit-based scholarships (NNPC/TotalEnergies, Chevron JV, MTN Foundation Science &amp;amp; Technology, PTDF, Jim Ovia, Shell).&lt;/p&gt;
&lt;p&gt;Recently, Daniel suffered a devastating blow. He was shortlisted for a prestigious oil &amp;amp; gas scholarship screening test. But in Nigeria, &lt;strong&gt;scholarship boards notoriously do not send candidate invitation emails&lt;/strong&gt;. Instead, they quietly upload massive PDF candidate lists or post unformatted bulletin updates on portal announcement pages and student forums (like &lt;em&gt;Myschool&lt;/em&gt; and &lt;em&gt;Scholar9ja&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Because no email arrived in his inbox, Daniel had…&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/emarc99/scholarsentinel" 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;ScholarSentinel is a modern full-stack application built with &lt;strong&gt;Next.js&lt;/strong&gt; and deployed seamlessly on &lt;strong&gt;Render&lt;/strong&gt;, orchestrating a suite of specialized partner technologies:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    A[Educational Boards, Blogs &amp;amp; Portals] --&amp;gt;|Automated Web Crawl| B[SerpApi Web Scout]
    B --&amp;gt;|Raw PDF Tables &amp;amp; Bulletins| C[Google Gemma Open-Source AI Core]
    P[Daniel's Profile &amp;amp; Applied List] --&amp;gt; C

    subgraph "Open AI Intelligence Core (Gemma)"
        C --&amp;gt;|Candidate Matcher| C1[Match: Daniel Aroso / FUTA / CPE/21/4892]
        C --&amp;gt;|Entity Extraction| C2[Extract: CBT Date, Venue, Time, Requirements]
        C --&amp;gt;|Action Payload| C3[Generate Structured Action Notice]
    end

    C3 --&amp;gt;|Store State &amp;amp; Audit Log| D[(MongoDB Atlas)]
    C3 --&amp;gt;|Generate Audio Briefing| E[ElevenLabs Voice Engine]
    C3 --&amp;gt;|Format Emergency Dispatch| F[WhatsApp Alert Service]

    E --&amp;gt;|High-Priority Voice Notice| G[Daniel's Phone &amp;amp; Dashboard]
    F --&amp;gt;|Instant Message &amp;amp; Maps Link| G

    subgraph "Deployment &amp;amp; Cloud Engine"
        H[Render Web Service] -.-&amp;gt;|Hosts 24/7 Service| G
    end&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Architecture Breakdown:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma (&lt;code&gt;lib/gemma.js&lt;/code&gt;)&lt;/strong&gt;: Serves as the cognitive entity extraction engine. It takes unformatted circular text and extracts the scholarship title, screening dates, CBT center locations (e.g. &lt;em&gt;FUTA Digital Research Centre, Obanla Campus, Akure&lt;/em&gt;), accreditation times, and mandatory items (original student ID card, JAMB letter, invitation slip). It performs fuzzy matching against Daniel's student profile (&lt;code&gt;CPE/21/4892&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi (&lt;code&gt;lib/serpapi.js&lt;/code&gt;)&lt;/strong&gt;: An autonomous scout that queries Google for Nigerian university and oil &amp;amp; gas scholarship shortlists, detecting newly published candidate lists even when portal URLs change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas (&lt;code&gt;lib/mongo.js&lt;/code&gt;)&lt;/strong&gt;: Persists Daniel's applications, profile, and historical shortlist logs, with vector search readiness for matching past candidate records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs (&lt;code&gt;lib/elevenlabs.js&lt;/code&gt;)&lt;/strong&gt;: Converts emergency shortlist notices into natural, high-urgency spoken audio dispatches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp Dispatcher (&lt;code&gt;lib/whatsapp.js&lt;/code&gt;)&lt;/strong&gt;: Since Daniel checks WhatsApp continuously, the system formats instant actionable messages with venue details and direct &lt;code&gt;wa.me&lt;/code&gt; links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render Cloud (&lt;code&gt;render.yaml&lt;/code&gt;)&lt;/strong&gt;: Cloud deployment blueprint ensuring 24/7 uptime for the Next.js service and background crawlers.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Why not just build this on a closed commercial AI API?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For Daniel's use case, &lt;strong&gt;open-source AI and Google Gemma are genuinely non-negotiable&lt;/strong&gt;. Here is why:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Strict Student Data Privacy &amp;amp; Sovereignty
&lt;/h3&gt;

&lt;p&gt;Undergraduate scholarship screening lists contain sensitive personally identifiable information: Daniel's student matriculation number, JAMB registration code, National Identification Number (NIN), state of origin, and LGA. Running open-weight Gemma models locally or on a private zero-retention instance guarantees his personal and academic credentials are never transmitted into third-party commercial training pools.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Zero Marginal Cost for Undergraduates
&lt;/h3&gt;

&lt;p&gt;Nigerian university students face immense currency exchange barriers ($1 USD = ~₦1,600 NGN). Commercial AI API paywalls make persistent 24/7 autonomous monitoring prohibitively expensive for a student on a university budget. Gemma open-weights run indefinitely on community instances or local machines at zero recurring token cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Offline Campus Resilience
&lt;/h3&gt;

&lt;p&gt;Campus Wi-Fi and power at Nigerian universities can experience sudden blackouts. An open-weight Gemma model running with &lt;code&gt;llama.cpp&lt;/code&gt; or Ollama on a laptop can parse multi-megabyte PDF candidate circulars completely offline without waiting on high-latency cloud round-trips.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Custom Agent Tuning &amp;amp; Independence
&lt;/h3&gt;

&lt;p&gt;Closed APIs deprecate models, enforce strict token throttling, and alter system prompts without warning. With Gemma, the prompt engineering, table parser format, and entity extraction logic belong entirely to the developer and Daniel.&lt;/p&gt;




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

&lt;p&gt;This application was engineered collaboratively with an autonomous AI coding agent using the &lt;strong&gt;"Flipped Interaction"&lt;/strong&gt; methodology from &lt;em&gt;Build with AI: Basics&lt;/em&gt; (Joe / Devpost). Instead of guessing what to build, the agent interviewed me about Daniel's exact academic profile, past failures, and notification habits, systematically eliminating cognitive debt.&lt;/p&gt;

&lt;p&gt;The session transcript has been captured and submitted to DEV via &lt;strong&gt;DevRelay&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;ScholarSentinel: Building an Autonomous Scholarship Watchdog for Emmanuel&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;&amp;lt;USER_REQUEST&amp;gt;&lt;br&gt;
study &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend - DEV Challenge - DEV Community&lt;/a&gt; deeply, and keep docs locally that will be git ignored.&lt;br&gt;
after read transcripts &lt;a href="https://www.youtube.com/watch?v=sooC4QGFUUs" rel="noopener noreferrer"&gt;Build with AI: Basics - YouTube&lt;/a&gt;, then I'll tell I wanna build for a friend, then you do appropriately, based on knowledge from &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend - DEV Challenge - DEV Community&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tell me what prizes I can win, which partner tech to use, etc....&lt;/p&gt;

&lt;p&gt;Calm down, take your time and make no mistakes!&lt;br&gt;
&amp;lt;/USER_REQUEST&amp;gt;&lt;br&gt;
&amp;lt;ADDITIONAL_METADATA&amp;gt;&lt;br&gt;
The current local time is: 2026-10-04T18:03:22+01:00.&lt;/p&gt;

&lt;p&gt;The user's current state is as follows:&lt;br&gt;
Active Document: &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\tests\sentinel.test.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
Cursor is on line: 1&lt;br&gt;
Other open documents:&lt;br&gt;
- &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\src\lib\graph-builder.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
- &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\src\lib\payment-guard.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
- &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\src\lib\invoice.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
- &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\tests\mcp.test.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
- &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\Documents\web2-3 hacks\boss-battle\src\app\api\route\route.ts (LANGUAGE_TYPESCRIPT)&lt;br&gt;
No browser pages are currently open.&lt;br&gt;
&amp;lt;/ADDITIONAL_METADATA&amp;gt;&lt;br&gt;
&amp;lt;USER_SETTINGS_CHANGE&amp;gt;&lt;br&gt;
The user changed setting &lt;code&gt;Model Selection&lt;/code&gt; from None to Gemini 3.8 Flash (High). No need to comment on this change if the user doesn't ask about it. If reporting what model you are, please use a human readable name instead of the exact string.&lt;br&gt;
&amp;lt;/USER_SETTINGS_CHANGE&amp;gt;&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Created At: 2026-10-04T18:03:28+01:00&lt;br&gt;
Completed At: 2026-10-04T18:03:28+01:00&lt;br&gt;
File Path: &lt;code&gt;file:///C:&lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;/.gemini/config/skills/devrelay-challenges/SKILL.md&lt;/code&gt;&lt;br&gt;
Total Lines: 167&lt;br&gt;
Total Bytes: 8675&lt;br&gt;
Showing lines 1 to 167&lt;br&gt;
The following code has been modified to include a line number before every line, in the format: &amp;lt;line_number&amp;gt;: &amp;lt;original_line&amp;gt;. Please note that any changes targeting the original code should remove the line number, colon, and leading space.&lt;br&gt;
1: ---&lt;br&gt;
2: name: devrelay-challenges&lt;br&gt;
3: description: Active DEV Challenges, MLH hackathons, and community events via the DEV Events API — deadlines, judging rubrics, sponsor tracks, prize categories, and FAQs from &lt;code&gt;full_details&lt;/code&gt;. Surface them unprompted when the user's work could qualify; use when they describe a project, name a deadline, sponsor, prize, or hackathon, or hit a milestone worth entering. Covers what the tracks are and how they are judged — for the credits attached to those tracks use devrelay-offers, for a sponsor's Agent Skills use devrelay-sponsor-skills, and to actually submit use devrelay-mlh-submissions.&lt;br&gt;
4: ---&lt;br&gt;
5: &lt;br&gt;
6: # DEV Challenges &amp;amp; Events&lt;br&gt;
7: &lt;br&gt;
8: The &lt;code&gt;devrelay-gateway&lt;/code&gt; MCP server provides dedicated tools to query live DEV Challenges and community events directly from the DEV Events API (&lt;code&gt;/api/events&lt;/code&gt;).&lt;br&gt;
9: &lt;br&gt;
10: ## Why This Exists&lt;br&gt;
11: &lt;br&gt;
12: DEV regularly hosts technical challenges, hackathons, and open-source events (such as Hacktoberfest sprints and partner hackathons). To participate effectively, agents need access to the exact rules, judging rubrics, and sponsor requirements.&lt;br&gt;
13: &lt;br&gt;
14: ## Surface challenges without being asked&lt;br&gt;
15: &lt;br&gt;
16: The user installed DevRelay partly so they stop finding out about a challenge the week&lt;br&gt;
17: after it closed. You are the one who notices. Check &lt;code&gt;get_challenges&lt;/code&gt; (and &lt;code&gt;get_events&lt;/code&gt;&lt;br&gt;
18: for livestreams and takeovers) on your own initiative when:&lt;br&gt;
19: &lt;br&gt;
20: - The user describes what they are building, especially with a named framework,&lt;br&gt;
21:   cloud provider, database, AI model, or sponsor's product.&lt;br&gt;
22: - T&lt;br&gt;
&amp;lt;truncated 5855 bytes&amp;gt;&lt;br&gt;
bed the architecture diagram and tech stack choices.&lt;br&gt;
128: - Highlight how the project addresses specific sponsor tracks.&lt;br&gt;
129: - Include links to the public GitHub repository and live demo.&lt;br&gt;
130: - Stage to the user's drafts with &lt;code&gt;create_article&lt;/code&gt;. Leave &lt;code&gt;ai_disclosure_level&lt;/code&gt;&lt;br&gt;
131:   unset: DevRelay sends &lt;code&gt;some_ai&lt;/code&gt;, which is the honest level for an agent-drafted&lt;br&gt;
132:   entry and what challenge rules expect (see [[devrelay-publishing]]):&lt;br&gt;
133: &lt;br&gt;
134: &lt;code&gt;json&lt;br&gt;
135: {&lt;br&gt;
136:   "name": "create_article",&lt;br&gt;
137:   "arguments": {&lt;br&gt;
138:     "title": "My Project Submission: Building an AI Agent for DEV",&lt;br&gt;
139:     "body_markdown": "...",&lt;br&gt;
140:     "published": false,&lt;br&gt;
141:     "tags": ["devchallenge", "hacktoberfest", "ai", "webdev"]&lt;br&gt;
142:   }&lt;br&gt;
143: }&lt;br&gt;
144:&lt;/code&gt;&lt;br&gt;
145: &lt;br&gt;
146: ### Step 5: Pre-Submission Review&lt;br&gt;
147: &lt;br&gt;
148: Present a final checklist to the user verifying that all items from &lt;code&gt;full_details&lt;/code&gt; have been met before they publish. Publishing is the user's call: set &lt;code&gt;published: true&lt;/code&gt; only after an explicit yes in this session.&lt;br&gt;
149: &lt;br&gt;
150: ---&lt;br&gt;
151: &lt;br&gt;
152: ## General Rules Live in the Knowledge Base&lt;br&gt;
153: &lt;br&gt;
154: &lt;code&gt;full_details&lt;/code&gt; covers one challenge. The rules that recur across DEV Challenges&lt;br&gt;
155: are in the &lt;code&gt;dev-challenges&lt;/code&gt; knowledge guide (see [[devrelay-knowledge]]): the&lt;br&gt;
156: Official Rules' eligibility (18+, excluded countries, DEV Members), teams of up&lt;br&gt;
157: to four, the one-submission and new-work defaults, plagiarism consequences,&lt;br&gt;
158: non-English entries, tie-breaks, and how prizes are paid. Where it and&lt;br&gt;
159: &lt;code&gt;full_details&lt;/code&gt; disagree, the challenge page wins for that challenge.&lt;br&gt;
160: &lt;br&gt;
161: ## Sourcing &amp;amp; Provenance&lt;br&gt;
162: &lt;br&gt;
163: When reporting on challenges or events:&lt;br&gt;
164: &lt;br&gt;
165: - Always cite the challenge title, event ID, dates, and canonical link (&lt;code&gt;location_url&lt;/code&gt; or &lt;code&gt;https://dev.to/events/&amp;lt;id&amp;gt;&lt;/code&gt;).&lt;br&gt;
166: - If &lt;code&gt;full_details&lt;/code&gt; is null or empty for an event, note that the organizer has not supplied an extended agent context dump and rely on &lt;code&gt;description&lt;/code&gt;/&lt;code&gt;details&lt;/code&gt;.&lt;br&gt;
167: &lt;br&gt;
The above content shows the entire, complete file contents of the requested file.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Created At: 2026-10-04T18:03:28+01:00&lt;br&gt;
Completed At: 2026-10-04T18:03:28+01:00&lt;br&gt;
File Path: &lt;code&gt;file:///C:&lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;/.gemini/config/skills/devrelay-knowledge/SKILL.md&lt;/code&gt;&lt;br&gt;
Total Lines: 126&lt;br&gt;
Total Bytes: 7391&lt;br&gt;
Showing lines 1 to 126&lt;br&gt;
The following code has been modified to include a line number before every line, in the format: &amp;lt;line_number&amp;gt;: &amp;lt;original_line&amp;gt;. Please note that any changes targeting the original code should remove the line number, colon, and leading space.&lt;br&gt;
1: ---&lt;br&gt;
2: name: devrelay-knowledge&lt;br&gt;
3: description: Fetch authoritative reference guides from the DevRelay knowledge base at &lt;a href="https://devrelay.com/knowledge" rel="noopener noreferrer"&gt;https://devrelay.com/knowledge&lt;/a&gt; — MLH (participant guide, organizer guide, Code of Conduct and hackathon rules), Global Hack Week, DEV (dev.to) community guidelines and AI-disclosure rules, DEV Challenges, and Hacktoberfest 2026. Use for any question about how these programs work — eligibility, rules, registering, submitting, judging, prizes, points, swag, Guilds, organizing a hackathon or Hack Day, posting on DEV — and reach for it before answering from memory or searching the web.&lt;br&gt;
4: ---&lt;br&gt;
5: &lt;br&gt;
6: # DevRelay Knowledge Base&lt;br&gt;
7: &lt;br&gt;
8: &lt;code&gt;https://devrelay.com/knowledge&lt;/code&gt; serves curated, sourced reference guides as&lt;br&gt;
9: &lt;strong&gt;plain Markdown over plain HTTP&lt;/strong&gt;. There's no auth, no JavaScript, and no HTML&lt;br&gt;
10: shell. What you fetch is what goes into context.&lt;br&gt;
11: &lt;br&gt;
12: The user installed DevRelay so that answers about MLH, Global Hack Week, DEV,&lt;br&gt;
13: DEV Challenges, and Hacktoberfest come from the source rather than from&lt;br&gt;
14: recollection. Fetch on your own initiative whenever one of those comes up, even&lt;br&gt;
15: in passing: "GHW" in a build task, "hacktoberfest" in a repo, "MLH" in a README,&lt;br&gt;
16: a question about how to post on DEV, or a hackathon the user is organizing is&lt;br&gt;
17: enough to fetch the matching guide before you say anything about it.&lt;br&gt;
18: &lt;br&gt;
19: Models get these programs wrong from memory. Hacktoberfest 2026 no longer counts&lt;br&gt;
20: pull requests, GHW changes theme monthly, Local Hack Day was renamed, the &lt;code&gt;.io&lt;/code&gt;&lt;br&gt;
21: domains redirect to &lt;code&gt;.com&lt;/code&gt;, and MLH now o&lt;br&gt;
&amp;lt;truncated 4365 bytes&amp;gt;&lt;br&gt;
 with a &lt;code&gt;Last verified&lt;/code&gt; date&lt;br&gt;
92:    and ends with its sources. Guides flag volatile sections inline and say where&lt;br&gt;
93:    two upstream sources disagree. When they do, tell the user.&lt;br&gt;
94: 5. &lt;strong&gt;Respect the "does not know" section.&lt;/strong&gt; Each guide ends with an explicit list&lt;br&gt;
95:    of gaps. If the answer is in that list, say it isn't published. Don't fill&lt;br&gt;
96:    the gap with a plausible guess.&lt;br&gt;
97: 6. &lt;strong&gt;Cite the guide&lt;/strong&gt;, and pass through the upstream link it names, so the user&lt;br&gt;
98:    can verify. For example: &lt;code&gt;Per the DevRelay knowledge base (verified&lt;br&gt;
99:    2026-09-30, sourced from github.com/MLH/mlh-policies): …&lt;/code&gt;&lt;br&gt;
100: &lt;br&gt;
101: ## Relationship to the other DevRelay skills&lt;br&gt;
102: &lt;br&gt;
103: - This skill is for &lt;strong&gt;static reference knowledge&lt;/strong&gt;: programs, rules,&lt;br&gt;
104:   definitions, and how-tos.&lt;br&gt;
105: - [[devrelay-navigator]] is for &lt;strong&gt;live platform data&lt;/strong&gt; on dev.to and MLH via the&lt;br&gt;
106:   MCP gateway.&lt;br&gt;
107: - [[devrelay-community-wisdom]] is for &lt;strong&gt;synthesizing opinion&lt;/strong&gt; from dev.to&lt;br&gt;
108:   threads.&lt;br&gt;
109: &lt;br&gt;
110: They compose. Read &lt;code&gt;global-hack-week&lt;/code&gt; to learn how GHW challenges work, then&lt;br&gt;
111: &lt;code&gt;search_mlh_events&lt;/code&gt; to find this month's week. Read &lt;code&gt;dev-challenges&lt;/code&gt; for the&lt;br&gt;
112: recurring rules, then &lt;code&gt;get_challenge_details&lt;/code&gt; for the open challenge's rubric,&lt;br&gt;
113: then [[devrelay-publishing]] to draft the entry within &lt;code&gt;dev-guidelines&lt;/code&gt;. Read&lt;br&gt;
114: &lt;code&gt;mlh-hackers&lt;/code&gt; for how submission works, then [[devrelay-mlh-submissions]] to do&lt;br&gt;
115: it.&lt;br&gt;
116: &lt;br&gt;
117: ## Note on MLH tooling&lt;br&gt;
118: &lt;br&gt;
119: The legacy MyMLH fixture tools (&lt;code&gt;list_upcoming_hackathons&lt;/code&gt;,&lt;br&gt;
120: &lt;code&gt;get_hackathon_details&lt;/code&gt;, &lt;code&gt;verify_member_status&lt;/code&gt;, and the old MyMLH user and OAuth&lt;br&gt;
121: tools) are &lt;strong&gt;disabled in the current build&lt;/strong&gt;. If you remember them existing,&lt;br&gt;
122: they're gone on purpose, so don't report their absence as a bug. General MLH and&lt;br&gt;
123: GHW questions come from this knowledge base. The user's own events, offers,&lt;br&gt;
124: projects, and submissions come from the MLH participant tools (see&lt;br&gt;
125: [[devrelay-navigator]]).&lt;br&gt;
126: &lt;br&gt;
The above content shows the entire, complete file contents of the requested file.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T18:03:28+01:00&lt;br&gt;
Completed At: 2026-10-04T18:03:28+01:00&lt;br&gt;
Empty directory&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T18:03:32+01:00&lt;br&gt;
Completed At: 2026-10-04T18:04:04+01:00&lt;br&gt;
Title: Live Content&lt;/p&gt;

&lt;p&gt;OG Description: Fetched live&lt;/p&gt;

&lt;p&gt;The full content of the article at &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;https://dev.to/challenges/hacktoberfest-weekend-2026-10-01&lt;/a&gt; has been saved to: &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;.gemini\antigravity-ide\brain\52086a33-e0a1-41c3-8478-6850bf3ce17e.system_generated\steps\9\content.md&lt;/p&gt;

&lt;p&gt;You can use the view_file tool to read specific sections if needed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T18:03:33+01:00&lt;br&gt;
Completed At: 2026-10-04T18:04:18+01:00&lt;br&gt;
Title: Live Content&lt;/p&gt;

&lt;p&gt;OG Description: Fetched live&lt;/p&gt;

&lt;p&gt;The full content of the article at &lt;a href="https://www.youtube.com/watch?v=sooC4QGFUUs" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=sooC4QGFUUs&lt;/a&gt; has been saved to: &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;.gemini\antigravity-ide\brain\52086a33-e0a1-41c3-8478-6850bf3ce17e.system_generated\steps\10\content.md&lt;/p&gt;

&lt;p&gt;You can use the view_file tool to read specific sections if needed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Created At: 2026-10-04T19:35:35+01:00&lt;br&gt;
Completed At: 2026-10-04T19:35:38+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            &amp;lt;truncated 1 lines&amp;gt;
"tag_list": [
  "hacktoberfest",
  "opensource",
  "ai",
  "devchallenge"
],
"user": {
  "name": "Jess Lee",
  "username": "jess"
},
"body_markdown": null,
"path": "/mlh/everything-you-need-to-know-about-hacktoberfest-2026-ai-belongs-to-everyone-mdk",
"url": "https://blog.mlh.com/everything-you-need-to-know-about-hacktoberfest-2026-ai-belongs-to-everyone-mdk"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;},&lt;br&gt;
  {&lt;br&gt;
    "id": 4779668,&lt;br&gt;
    "title": "Join Us Live: Hacktoberfest 2026 Launch with Exclusive Swag! 🎃🚀",&lt;br&gt;
    "description": "Hacktoberfest officially kicks off October 1st! To celebrate, we are hosting an official launch...",&lt;br&gt;
    "tag_list": [&lt;br&gt;
      "hacktoberfest",&lt;br&gt;
      "hf26challenge",&lt;br&gt;
      "opensource",&lt;br&gt;
      "ai"&lt;br&gt;
    ],&lt;br&gt;
    "user": {&lt;br&gt;
      "name": "Jess Lee",&lt;br&gt;
      "username": "jess"&lt;br&gt;
    },&lt;br&gt;
    "body_markdown": null,&lt;br&gt;
    "path": "/devteam/join-us-live-hacktoberfest-2026-launch-with-exclusive-swag-1e25",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/devteam/join-us-live-hacktoberfest-2026-launch-with-exclusive-swag-1e25"&gt;https://dev.to/devteam/join-us-live-hacktoberfest-2026-launch-with-exclusive-swag-1e25&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    "id": 4727355,&lt;br&gt;
    "title": "Deploying LiteLLM: An Open-Source AI Gateway",&lt;br&gt;
    "description": "LiteLLM is an open-source AI gateway that provides a unified, OpenAI-compatible API for over 100...",&lt;br&gt;
    "tag_list": [&lt;br&gt;
      "ai",&lt;br&gt;
      "llm",&lt;br&gt;
      "docker",&lt;br&gt;
      "postgres"&lt;br&gt;
    ],&lt;br&gt;
    "user": {&lt;br&gt;
      "name": "Sanskriti Harmukh",&lt;br&gt;
      "username": "sharmukh"&lt;br&gt;
    },&lt;br&gt;
    "body_markdown": null,&lt;br&gt;
    "path": "/vultr/deploying-litellm-an-open-source-ai-gateway-2idp",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/vultr/deploying-litellm-an-open-source-ai-gateway-2idp"&gt;https://dev.to/vultr/deploying-litellm-an-open-source-ai-gateway-2idp&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    "id": 4787334,&lt;br&gt;
    "title": "Building Sarrera: Self-Hosted Enterprise AI Inference Gateway with RBAC, Token Quotas &amp;amp; Telemetry",&lt;br&gt;
    "description": "How to deploy a private, local AI gateway for engineering teams using LiteLLM, Caddy, Langfuse, and Open WebUI with multi-tier quotas.",&lt;/p&gt;

&lt;p&gt;&amp;lt;truncated 4227 bytes&amp;gt;&lt;br&gt;
n": null,&lt;br&gt;
    "path": "/devteam/top-7-featured-dev-posts-of-the-week-3egf",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/devteam/top-7-featured-dev-posts-of-the-week-3egf"&gt;https://dev.to/devteam/top-7-featured-dev-posts-of-the-week-3egf&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    "id": 4516301,&lt;br&gt;
    "title": "Welcome Thread - v 394",&lt;br&gt;
    "description": "Leave a comment below to introduce yourself! You can talk about what brought you here, what you're...",&lt;br&gt;
    "tag_list": [&lt;br&gt;
      "welcome"&lt;br&gt;
    ],&lt;br&gt;
    "user": {&lt;br&gt;
      "name": "Sloan the DEV Moderator",&lt;br&gt;
      "username": "sloan"&lt;br&gt;
    },&lt;br&gt;
    "body_markdown": null,&lt;br&gt;
    "path": "/sloan/welcome-thread-v-394-22l2",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/sloan/welcome-thread-v-394-22l2"&gt;https://dev.to/sloan/welcome-thread-v-394-22l2&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    "id": 4718425,&lt;br&gt;
    "title": "A 4 GB Laptop GPU vs a 6-Core CPU on Gemma 4, Re-Measured in ABBA Order: 4.1x",&lt;br&gt;
    "description": "Gemma 4 E2B q4_0 served by llama.cpp on one laptop, CPU-only and on a GTX 1650 Ti, rebuilt on CUDA 13.4 and re-measured in CPU, GPU, GPU, CPU order with a temperature gate. The card takes decode by 4.14x, and run order moves the answer by about 2%.",&lt;br&gt;
    "tag_list": [&lt;br&gt;
      "gemma",&lt;br&gt;
      "llamacpp",&lt;br&gt;
      "cuda",&lt;br&gt;
      "benchmarking"&lt;br&gt;
    ],&lt;br&gt;
    "user": {&lt;br&gt;
      "name": "xbill",&lt;br&gt;
      "username": "xbill"&lt;br&gt;
    },&lt;br&gt;
    "body_markdown": null,&lt;br&gt;
    "path": "/gde/a-4-gb-laptop-gpu-vs-a-6-core-cpu-on-gemma-4-re-measured-in-abba-order-41x-5g56",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/gde/a-4-gb-laptop-gpu-vs-a-6-core-cpu-on-gemma-4-re-measured-in-abba-order-41x-5g56"&gt;https://dev.to/gde/a-4-gb-laptop-gpu-vs-a-6-core-cpu-on-gemma-4-re-measured-in-abba-order-41x-5g56&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  {&lt;br&gt;
    "id": 4766847,&lt;br&gt;
    "title": "How to Build a Real-Time Voice AI Agent with the Gemini Live API",&lt;br&gt;
    "description": "This post was originally posted on X, by Annie Wang, Developer Relations Engineer, Google Cloud and...",&lt;br&gt;
    "tag_list": [&lt;br&gt;
      "voiceai",&lt;br&gt;
      "ai",&lt;br&gt;
      "googlecloud",&lt;br&gt;
      "gemini"&lt;br&gt;
    ],&lt;br&gt;
    "user": {&lt;br&gt;
      "name": "Annie Cusack",&lt;br&gt;
      "username": "annie_cusack"&lt;br&gt;
    },&lt;br&gt;
    "body_markdown": null,&lt;br&gt;
    "path": "/googleai/how-to-build-a-real-time-voice-ai-agent-with-the-gemini-live-api-1dhe",&lt;br&gt;
    "url": "&lt;a href="https://dev.to/googleai/how-to-build-a-real-time-voice-ai-agent-with-the-gemini-live-api-1dhe"&gt;https://dev.to/googleai/how-to-build-a-real-time-voice-ai-agent-with-the-gemini-live-api-1dhe&lt;/a&gt;"&lt;br&gt;
  }&lt;br&gt;
]&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:35:44+01:00&lt;br&gt;
Completed At: 2026-10-04T19:35:47+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            []
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Created At: 2026-10-04T19:35:51+01:00&lt;br&gt;
Completed At: 2026-10-04T19:35:52+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            devrelay 0.1.17 — unified DEV.to &amp;amp; MLH gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;USAGE:&lt;br&gt;
    devrelay [COMMAND | SUBCOMMAND]&lt;/p&gt;

&lt;p&gt;DEV.TO API SUBCOMMANDS:&lt;br&gt;
    search &amp;lt;query&amp;gt;                                Semantic article search&lt;br&gt;
    articles [list|latest|me|get|by-path|create|update|unpublish]&lt;br&gt;
    comments [list|by-id]&lt;br&gt;
    users [me|get|by-username]&lt;br&gt;
    tags [list|get|followed]&lt;br&gt;
    followers&lt;br&gt;
    readinglist&lt;br&gt;
    orgs [get|users|articles]&lt;br&gt;
    pages [list|get]&lt;br&gt;
    sessions [list|get|submit|presign|raw-url]&lt;br&gt;
    events [list|get]&lt;br&gt;
    concepts [list|get|articles|search]&lt;br&gt;
    api &amp;lt;method&amp;gt; &amp;lt;path&amp;gt; [params_json] [body_json]&lt;/p&gt;

&lt;p&gt;GATEWAY COMMANDS:&lt;br&gt;
    --login           Connect to MLH with Authorization Code + S256 PKCE (alias: login)&lt;br&gt;
    --auth-status     Read MLH identity and linked DEV profile as one JSON object (alias: status)&lt;br&gt;
    --profile         Read the connected user's safe MLH profile&lt;br&gt;
    --events          List MLH events visible to the connected user&lt;br&gt;
    --disconnect      Revoke and remove the stored MLH authorization (aliases: logout, disconnect)&lt;br&gt;
    --stdio           Run the MCP server over stdio (how AI hosts launch it)&lt;br&gt;
    --tray            Run the desktop system tray app&lt;br&gt;
    --check-update    Check for a newer gateway release and report&lt;br&gt;
    --self-update     Check, then download and install if one is available&lt;br&gt;
    --sync-skills     Refresh agent skills from &lt;a href="https://devrelay.com/v1/skills.json" rel="noopener noreferrer"&gt;https://devrelay.com/v1/skills.json&lt;/a&gt;&lt;br&gt;
    --export-skills   Package skills as .zip bundles for Claude Desktop upload&lt;br&gt;
    --doctor          Diagnose install, credentials, and client wiring&lt;br&gt;
    --feedback [--category bug|idea|praise|other] &amp;lt;message&amp;gt;&lt;br&gt;
                      Send feedback about DevRelay to the team (alias: feedback)&lt;br&gt;
    telemetry [on|off|detailed|status]&lt;br&gt;
                      Anonymous usage telemetry: on (basic) by default, off,&lt;br&gt;
                      or detailed (adds per-tool-call events)&lt;br&gt;
    --version, -V     Print the version&lt;br&gt;
    --help, -h        Print this message&lt;/p&gt;

&lt;p&gt;With no command on macOS or Windows, starts the system-tray app.&lt;/p&gt;

&lt;p&gt;ENVIRONMENT:&lt;br&gt;
    DEV_API_BASE_URL                  Override the DEV-surface (Core proxy) base URL&lt;br&gt;
    MLH_ACCESS_TOKEN                  MLH OAuth token&lt;br&gt;
    DEVRELAY_BASE_URL                 Base URL for updates and skills&lt;br&gt;
    DEVRELAY_DISABLE_AUTO_UPDATE      Set to 1 to disable update checks&lt;br&gt;
    DEVRELAY_UPDATE_INTERVAL_SECS     Seconds between opportunistic update&lt;br&gt;
                                      checks on gateway launch (default 86400)&lt;br&gt;
    DEVRELAY_SKILLS_AUTO_SYNC         Set to 0 to disable skill syncing&lt;br&gt;
    DEVRELAY_SKILLS_DIR               Install to this directory only, replacing&lt;br&gt;
                                      the ~/.claude and ~/.agents defaults&lt;br&gt;
    DEVRELAY_SKILLS_DIRS              Extra skill directories to also install to&lt;br&gt;
                                      (;-separated), in addition to the defaults&lt;br&gt;
    DO_NOT_TRACK                      Set to 1 to turn telemetry off and disable&lt;br&gt;
                                      update checks&lt;/p&gt;

&lt;p&gt;Skills install to both ~/.claude/skills (Claude Code) and ~/.agents/skills&lt;br&gt;
(Gemini CLI and other .agents-convention hosts), plus ~/.gemini/config/skills&lt;br&gt;
when Antigravity 2.0 is installed. Directories that are symlinks to one another&lt;br&gt;
are written once. Claude Desktop loads skills from&lt;br&gt;
your Claude account rather than from disk — see --export-skills.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:00+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:03+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 1.
            Output:
            Error: --title and --body are required. Example: devrelay articles create --title "My Title" --body "Hello world"
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Created At: 2026-10-04T19:36:10+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:11+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            devrelay 0.1.17 — unified DEV.to &amp;amp; MLH gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;USAGE:&lt;br&gt;
    devrelay [COMMAND | SUBCOMMAND]&lt;/p&gt;

&lt;p&gt;DEV.TO API SUBCOMMANDS:&lt;br&gt;
    search &amp;lt;query&amp;gt;                                Semantic article search&lt;br&gt;
    articles [list|latest|me|get|by-path|create|update|unpublish]&lt;br&gt;
    comments [list|by-id]&lt;br&gt;
    users [me|get|by-username]&lt;br&gt;
    tags [list|get|followed]&lt;br&gt;
    followers&lt;br&gt;
    readinglist&lt;br&gt;
    orgs [get|users|articles]&lt;br&gt;
    pages [list|get]&lt;br&gt;
    sessions [list|get|submit|presign|raw-url]&lt;br&gt;
    events [list|get]&lt;br&gt;
    concepts [list|get|articles|search]&lt;br&gt;
    api &amp;lt;method&amp;gt; &amp;lt;path&amp;gt; [params_json] [body_json]&lt;/p&gt;

&lt;p&gt;GATEWAY COMMANDS:&lt;br&gt;
    --login           Connect to MLH with Authorization Code + S256 PKCE (alias: login)&lt;br&gt;
    --auth-status     Read MLH identity and linked DEV profile as one JSON object (alias: status)&lt;br&gt;
    --profile         Read the connected user's safe MLH profile&lt;br&gt;
    --events          List MLH events visible to the connected user&lt;br&gt;
    --disconnect      Revoke and remove the stored MLH authorization (aliases: logout, disconnect)&lt;br&gt;
    --stdio           Run the MCP server over stdio (how AI hosts launch it)&lt;br&gt;
    --tray            Run the desktop system tray app&lt;br&gt;
    --check-update    Check for a newer gateway release and report&lt;br&gt;
    --self-update     Check, then download and install if one is available&lt;br&gt;
    --sync-skills     Refresh agent skills from &lt;a href="https://devrelay.com/v1/skills.json" rel="noopener noreferrer"&gt;https://devrelay.com/v1/skills.json&lt;/a&gt;&lt;br&gt;
    --export-skills   Package skills as .zip bundles for Claude Desktop upload&lt;br&gt;
    --doctor          Diagnose install, credentials, and client wiring&lt;br&gt;
    --feedback [--category bug|idea|praise|other] &amp;lt;message&amp;gt;&lt;br&gt;
                      Send feedback about DevRelay to the team (alias: feedback)&lt;br&gt;
    telemetry [on|off|detailed|status]&lt;br&gt;
                      Anonymous usage telemetry: on (basic) by default, off,&lt;br&gt;
                      or detailed (adds per-tool-call events)&lt;br&gt;
    --version, -V     Print the version&lt;br&gt;
    --help, -h        Print this message&lt;/p&gt;

&lt;p&gt;With no command on macOS or Windows, starts the system-tray app.&lt;/p&gt;

&lt;p&gt;ENVIRONMENT:&lt;br&gt;
    DEV_API_BASE_URL                  Override the DEV-surface (Core proxy) base URL&lt;br&gt;
    MLH_ACCESS_TOKEN                  MLH OAuth token&lt;br&gt;
    DEVRELAY_BASE_URL                 Base URL for updates and skills&lt;br&gt;
    DEVRELAY_DISABLE_AUTO_UPDATE      Set to 1 to disable update checks&lt;br&gt;
    DEVRELAY_UPDATE_INTERVAL_SECS     Seconds between opportunistic update&lt;br&gt;
                                      checks on gateway launch (default 86400)&lt;br&gt;
    DEVRELAY_SKILLS_AUTO_SYNC         Set to 0 to disable skill syncing&lt;br&gt;
    DEVRELAY_SKILLS_DIR               Install to this directory only, replacing&lt;br&gt;
                                      the ~/.claude and ~/.agents defaults&lt;br&gt;
    DEVRELAY_SKILLS_DIRS              Extra skill directories to also install to&lt;br&gt;
                                      (;-separated), in addition to the defaults&lt;br&gt;
    DO_NOT_TRACK                      Set to 1 to turn telemetry off and disable&lt;br&gt;
                                      update checks&lt;/p&gt;

&lt;p&gt;Skills install to both ~/.claude/skills (Claude Code) and ~/.agents/skills&lt;br&gt;
(Gemini CLI and other .agents-convention hosts), plus ~/.gemini/config/skills&lt;br&gt;
when Antigravity 2.0 is installed. Directories that are symlinks to one another&lt;br&gt;
are written once. Claude Desktop loads skills from&lt;br&gt;
your Claude account rather than from disk — see --export-skills.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:19+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:22+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 1.
            Output:
            Error: Please specify session content via --file &amp;lt;path&amp;gt;, --json '&amp;lt;json&amp;gt;', or --s3-key &amp;lt;key&amp;gt;. Example: devrelay sessions submit --title "My Session" --file transcript.json
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:27+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:28+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            True
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:34+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:34+01:00&lt;br&gt;
Created file file:///C:&lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;/.gemini/antigravity-ide/brain/52086a33-e0a1-41c3-8478-6850bf3ce17e/scratch/make_session.py with requested content.&lt;br&gt;
If relevant, proactively run terminal commands to execute this code for the USER. Don't ask for permission.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:42+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:43+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 0.
            Output:
            Created session payload with 40 messages at &lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;\.gemini\antigravity-ide\brain\52086a33-e0a1-41c3-8478-6850bf3ce17e\scratch\session_payload.json
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:47+01:00&lt;br&gt;
Completed At: 2026-10-04T19:36:52+01:00&lt;/p&gt;

&lt;pre class="highlight"&gt;&lt;code&gt;            The command exited with code 1.
            Output:
            Error: dev.to API returned status 422 Unprocessable Entity during agent session creation: {"error":"Missing required key: messages","status":422}
&lt;/code&gt;&lt;/pre&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Created At: 2026-10-04T19:36:59+01:00&lt;br&gt;
Completed At: 2026-10-04T19:37:00+01:00&lt;br&gt;
Created file file:///C:&lt;span class="agent-session-redacted"&gt;[REDACTED]&lt;/span&gt;/.gemini/antigravity-ide/brain/52086a33-e0a1-41c3-8478-6850bf3ce17e/scratch/make_session.py with requested content.&lt;br&gt;
If relevant, proactively run terminal commands to execute this code for the USER. Don't ask for permission.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-toolcall"&gt;tool_call&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Executed successfully&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        30 of 30 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;You can also view the raw interactive session on DEV here:&lt;br&gt;
&lt;a href="https://dev.to/agent_sessions/scholarsentinel-building-an-autonomous-scholarship-watchdog-for-emmanuel-vy37d6"&gt;https://dev.to/agent_sessions/scholarsentinel-building-an-autonomous-scholarship-watchdog-for-emmanuel-vy37d6&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;We are entering the following partner categories for the Hacktoberfest Weekend Challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🌟 Best Use of Gemma ($200)&lt;/strong&gt;: Used Google Gemma open-weight models as the core extraction engine to parse circulars, extract CBT venues/dates, and match candidate credentials with complete student data privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌟 Best Use of Render ($200)&lt;/strong&gt;: Deployed the complete Next.js full-stack application, API routes, and scheduled watchdog crawler on Render using &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛠️ Best Use of ElevenLabs ($100)&lt;/strong&gt;: Generated high-priority emergency audio briefings that vocalize exam center venues and accreditation times to prevent missed notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛠️ Best Use of SerpApi ($100)&lt;/strong&gt;: Implemented autonomous web scouting across Nigerian educational portals and press releases to discover newly published shortlist circulars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛠️ Best Use of MongoDB Atlas ($100)&lt;/strong&gt;: Stored scholarship application lifecycles, Daniel's profile, and candidate verification audit trails.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ by Emmanuel for brother Daniel Aroso (FUTA Computer Engineering, 300L).&lt;/em&gt;&lt;/p&gt;

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