Job Notification: Real-time Job Alert Dashboard
Overview
Job Notification is an automated job search tool that polls developer job feeds and aggregates postings into a streamlined, customizable UI. Built using React, Node.js, and SQLite, it eliminates manual searching by delivering notifications instantly.
Initially developed as a local tool, the system was fully deployed to Vercel, integrating serverless APIs, lightweight storage, and notification channels like Telegram and Discord.
The Problem
Checking multiple job portals, forums (like Upwork or Web3 RSS feeds), and boards daily is incredibly time-consuming. Job postings often close quickly, meaning candidates who apply within the first few hours stand the highest chance of success.
Typical job alerts are either too slow (daily digests) or lack granular filtering (by keywords, location, or source platform), resulting in inbox clutter and missed opportunities.
The Solution
I built a personalized full-stack system that constantly scans job channels and formats them beautifully:
- Automatic Scanning: Periodically pulls job posts via RSS and parses them on a serverless scheduler.
- Dynamic Search & Filters: Filter by keywords, location, source platform, and date, or toggle custom categories instantly.
- Instant Actions: Delete unwanted cards, toggle "Applied" status, or perform a manual job sync with a single click.
- Zero-Loss Settings: Settings are persisted locally and synced with the backend to ensure zero configuration loss on page refresh.
Process & Technical Execution
Building for production on Vercel presented unique architectural challenges compared to local environments:
1. Serverless Life Cycle Management
Vercel Serverless Functions tear down execution contexts as soon as an API response is sent. A background scraper function would get killed prematurely. I rewrote the scraper trigger API to sequentially `await` the RSS parsing loop before returning a response, ensuring 100% processing completion.
2. Lightweight Storage Integration
A local SQLite database was ported to work efficiently inside serverless handlers, managing schema initialization automatically on cold starts and ensuring zero loss of user credentials and filters.
3. Minimalist UX Iterations
The UI was redesigned to move away from distracting multi-color gradients and complex emojis. Instead, a sleek, flat dark theme using solid purple (`#a855f7`) accents and Google Material Symbols was implemented to prioritize reading clarity and efficiency.
Results
The deployed app runs continuously, delivering alerts, maintaining state, and helping track job applications systematically.
Automatic Processing Completion
Instant Filter Latency