<?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: Chaitanya Yadav</title>
    <description>The latest articles on DEV Community by Chaitanya Yadav (@chaitanyayad).</description>
    <link>https://dev.to/chaitanyayad</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%2F4156720%2F3202efdd-4e2b-44c0-afdb-92fe57f9e9f5.jpg</url>
      <title>DEV Community: Chaitanya Yadav</title>
      <link>https://dev.to/chaitanyayad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chaitanyayad"/>
    <language>en</language>
    <item>
      <title>NudgeBox -- A privacy-first agent that reads a job seeker's Gmail, finds interviews and online assessments (OAs), and "nudges" them!</title>
      <dc:creator>Chaitanya Yadav</dc:creator>
      <pubDate>Sun, 04 Oct 2026 20:44:48 +0000</pubDate>
      <link>https://dev.to/chaitanyayad/nudgebox-a-privacy-first-agent-that-reads-a-job-seekers-gmail-finds-interviews-and-online-25dn</link>
      <guid>https://dev.to/chaitanyayad/nudgebox-a-privacy-first-agent-that-reads-a-job-seekers-gmail-finds-interviews-and-online-25dn</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;br&gt;
What I Built&lt;/p&gt;

&lt;p&gt;The job market is brutal right now, but what's even worse is finally getting an interview and then completely missing it.&lt;/p&gt;

&lt;p&gt;My friend Tushar is a brilliant developer, but his inbox is an absolute disaster zone. Last month, he got a recruiter screen invite for a job he really wanted, but because the recruiter used a weird timezone abbreviation and it got buried under 50 marketing emails, he completely missed the call. He was devastated.&lt;/p&gt;

&lt;p&gt;So, I built NudgeBox for him. It's an autonomous AI exoskeleton that securely reads his inbox, identifies interviews and online assessments (OAs), and durably schedules aggressive nudges (T-7 days, T-1 day, morning-of, and T-1 hour) so he is always prepared.&lt;/p&gt;

&lt;p&gt;When I finally handed the app over to him and he saw it extract his first real interview, his exact text to me was: "Bro, this is actually insane. I don't even have to look at my email anymore, it just tells me where to be and when. You just saved my career."&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chaitanyayad" rel="noopener noreferrer"&gt;
        chaitanyayad
      &lt;/a&gt; / &lt;a href="https://github.com/chaitanyayad/NudgeBox" rel="noopener noreferrer"&gt;
        NudgeBox
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A privacy-first agent that reads a job seeker's Gmail, finds interviews and online assessments (OAs), and "nudges" them!
    &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;NudgeBox 🧠🚀&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/strong&gt;
A privacy-first, autonomous agent that reads a job seeker's Gmail, securely extracts interview invites and online assessments (OAs) using local LLMs, and durably nudges them at &lt;strong&gt;T-7 days, T-1 day, morning-of, and T-1 hour&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/chaitanyayad/NudgeBox/./screenshots/dashboard.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fchaitanyayad%2FNudgeBox%2FHEAD%2F.%2Fscreenshots%2Fdashboard.png" alt="NudgeBox Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#the-problem--the-story" rel="noopener noreferrer"&gt;The Problem &amp;amp; The Story&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#high-level-architecture" rel="noopener noreferrer"&gt;High-Level Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#deep-dive-zero-password-auth-oauth-pkce--encryption" rel="noopener noreferrer"&gt;Deep Dive: Zero-Password Auth (OAuth PKCE) &amp;amp; Encryption&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#deep-dive-local-llm-extraction-gemma-3" rel="noopener noreferrer"&gt;Deep Dive: Local LLM Extraction (Gemma 3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#deep-dive-durable-scheduling-temporal" rel="noopener noreferrer"&gt;Deep Dive: Durable Scheduling (Temporal)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#deep-dive-multi-channel-delivery-elevenlabs" rel="noopener noreferrer"&gt;Deep Dive: Multi-Channel Delivery (ElevenLabs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#security--privacy-threat-model" rel="noopener noreferrer"&gt;Security &amp;amp; Privacy Threat Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#the-kill-worker-resilience-demo" rel="noopener noreferrer"&gt;The "Kill-Worker" Resilience Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#database-schema--event-structure" rel="noopener noreferrer"&gt;Database Schema &amp;amp; Event Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chaitanyayad/NudgeBox#local-setup--installation" rel="noopener noreferrer"&gt;Local Setup &amp;amp; Installation&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 The Problem &amp;amp; The Story&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Job seekers get interview invites and OA links buried in a noisy inbox: HackerRank, Codility, CodeSignal, recruiters, and ATS systems. Deadlines are missed, times get confused across time zones, and reschedules are overlooked.&lt;/p&gt;
&lt;p&gt;My friend Tushar is a brilliant developer, but his inbox is an absolute…&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/chaitanyayad/NudgeBox" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;How I Built It&lt;br&gt;
The Brain: I used Gemma 3 (via Ollama) orchestrated by Instructor/Pydantic AI to accurately extract structured JSON from raw email text. We passed a 100% extraction accuracy on our synthetic evaluation suite, handling complex timezones and prompt injections flawlessly.&lt;br&gt;
The Resilient Scheduler: I used Temporal to orchestrate the "sleeping" logic. When NudgeBox schedules a reminder 7 days in the future, it doesn't leave a Python thread hanging. It serializes the sleep state to Temporal. You can literally kill the server, deploy new code, and restart it 5 days later—the workflow wakes up exactly when it's supposed to.&lt;br&gt;
The Backend: Python, FastAPI, and Motor (MongoDB).&lt;br&gt;
The Frontend: React, Vite, and custom glassmorphism CSS (no bloated frameworks).&lt;br&gt;
Why Does Open Innovation Matter?&lt;br&gt;
Open innovation was crucial here because NudgeBox reads highly sensitive personal emails. A closed API would mean sending Tushar's private data to a third-party server. By using Gemma 3 running locally on open weights, we guarantee zero data exfiltration. The LLM parses the emails completely locally, ensuring absolute privacy for Tushar.&lt;/p&gt;

&lt;p&gt;My Agent Session&lt;br&gt;
Prize Categories&lt;br&gt;
I am submitting for the following sponsor categories:&lt;/p&gt;

&lt;p&gt;Best Use of Gemma: Used Gemma 3 via Ollama as the core extraction engine to parse unstructured emails into strict JSON schemas with 100% accuracy on our test suite.&lt;/p&gt;

&lt;p&gt;Best Use of Temporal: Implemented Durable Execution to schedule long-running sleep timers (up to 7 days). Demonstrated the "Kill-Worker" resilience where the server can be restarted mid-sleep without dropping the scheduled reminder.&lt;/p&gt;

&lt;p&gt;(Note to judges: Our repository also includes code for Sentry Agent Tracing, Render IaC, ElevenLabs TTS, and MongoDB Atlas Vector Search, but we are specifically claiming the two categories above where the technology is actively running in the core demoed pipeline).&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>hi</title>
      <dc:creator>Chaitanya Yadav</dc:creator>
      <pubDate>Fri, 02 Oct 2026 07:43:36 +0000</pubDate>
      <link>https://dev.to/chaitanyayad/hi-3dg0</link>
      <guid>https://dev.to/chaitanyayad/hi-3dg0</guid>
      <description></description>
    </item>
  </channel>
</rss>
