John Lloyd Logo Image
John Lloyd

OLJ Job Alert

I built an automated job alert system that scrapes OnlineJobs.ph for new and updated postings, stores them in a database, and notifies users via Telegram when jobs match their subscribed keywords.
Using n8n workflows and PostgreSQL, the system runs on a fully decoupled architecture - each workflow operates independently through the database as the central data bus.

Project Overview

Introduction

     OLJAlerts is a keyword-based job alert system for OnlineJobs.ph. Users subscribe to keywords via a Telegram bot, and the system automatically scrapes job postings, matches them against active subscriptions, and delivers formatted alerts - all powered by n8n workflows and PostgreSQL in a fully decoupled, modular architecture.

Challenges

⏺ Manual Job Searching: Constantly refreshing job boards to find relevant postings is tedious and time-consuming.
⏺ Keyword Tracking: Manually checking if new jobs match specific skills or roles across hundreds of postings.
⏺ Timely Notifications: Missing out on fresh job opportunities because there's no instant alert mechanism.

Solution

     OLJAlerts automates the entire pipeline: n8n workflows scrape OnlineJobs.ph every 8 minutes for new jobs and every 15 minutes for recently updated ones, storing them in PostgreSQL. A separate workflow polls for unprocessed jobs every 20 seconds, matches keywords against job titles and descriptions using word-boundary regex, and sends HTML-formatted Telegram alerts to matched subscribers.

Key Features

✔ Real-Time Job Alerts: Subscribers receive instant Telegram notifications when jobs match their keywords.
✔ Word-Boundary Matching: Precise keyword matching using regex - 'ai' matches 'AI specialist' but not 'PAID'.
✔ Auto-Cleanup of Blocked Users: Automatically removes subscriptions when users block the bot.
✔ Decoupled Architecture: Each workflow operates independently through PostgreSQL - one failure doesn't affect others.

Tools Used

javascript-iconJavaScript
postgresql-iconPostgreSQL
n8n-iconn8n
telegram-iconTelegram
supabase-iconSupabase
vscode-iconVSCode
Git-icon

Git

github-iconGithub