DEV Community

Cover image for NudgeBox -- A privacy-first agent that reads a job seeker's Gmail, finds interviews and online assessments (OAs), and "nudges" them!
Chaitanya Yadav
Chaitanya Yadav

Posted on

NudgeBox -- A privacy-first agent that reads a job seeker's Gmail, finds interviews and online assessments (OAs), and "nudges" them!

Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built

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

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.

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.

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."

Code

GitHub logo chaitanyayad / NudgeBox

A privacy-first agent that reads a job seeker's Gmail, finds interviews and online assessments (OAs), and "nudges" them!

NudgeBox 🧠🚀

Hacktoberfest Weekend Challenge: Build for a Friend 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 T-7 days, T-1 day, morning-of, and T-1 hour.

NudgeBox Dashboard


📖 Table of Contents

  1. The Problem & The Story
  2. High-Level Architecture
  3. Deep Dive: Zero-Password Auth (OAuth PKCE) & Encryption
  4. Deep Dive: Local LLM Extraction (Gemma 3)
  5. Deep Dive: Durable Scheduling (Temporal)
  6. Deep Dive: Multi-Channel Delivery (ElevenLabs)
  7. Security & Privacy Threat Model
  8. The "Kill-Worker" Resilience Demo
  9. Database Schema & Event Structure
  10. Local Setup & Installation

📖 The Problem & The Story

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.

My friend Tushar is a brilliant developer, but his inbox is an absolute…

How I Built It
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.
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.
The Backend: Python, FastAPI, and Motor (MongoDB).
The Frontend: React, Vite, and custom glassmorphism CSS (no bloated frameworks).
Why Does Open Innovation Matter?
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.

My Agent Session
Prize Categories
I am submitting for the following sponsor categories:

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.

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.

(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).

Top comments (0)