Job Board Duplicate Posting Flagger
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This script detects and flags duplicate job postings across multiple job boards, helping you avoid wasting time on the same job appearing multiple times. When you search for jobs on LinkedIn, Indeed, Glassdoor, Monster, CareerBuilder, ZipRecruiter, or SimplyHired, the script scans each posting, extracts key information (job title, company, location, and job ID), and compares postings to find duplicates. It uses similarity matching on titles, companies, and locations to identify likely duplicates even when the exact text differs slightly. Each suspected duplicate gets a visual badge: yellow for "Possible Duplicate" and red for "Likely Duplicate." A colored left border is also added to make duplicates stand out. An optional "Group duplicates" feature clusters duplicate postings together for easier comparison. The script updates dynamically as new postings load and works across all supported job boards.
WHERE IT RUNS
The script runs on multiple job boards: LinkedIn Jobs, Indeed, Glassdoor, Monster, CareerBuilder, ZipRecruiter, and SimplyHired. It works on search results pages and job listings. It supports both desktop and mobile views.
HOW TO USE
After installation, the settings panel appears on the left side of the screen with the gear emoji (⚙️). Open the panel to configure the script:
- The "Enable duplicate flagger" toggle enables or disables the script.
- Toggle "Group duplicates together" to cluster duplicate postings for easier comparison.
- Click "Refresh postings" to manually re-scan the current page.
The script works automatically—just browse job listings and duplicates will be flagged.
TECHNICAL SECTION — REAL MECHANISM
The script detects job boards by checking the URL for each supported domain. It uses site-specific selectors for each job board to find postings, titles, companies, locations, and job IDs. For LinkedIn, it uses .job-card and .base-search-card; for Indeed, .job-card and .result; for Glassdoor, .jobCard and .JobCard; for Monster, .job-card and .result-item; and similar selectors for other sites. For each posting, it extracts the title, company, location, and job ID. Duplicate detection uses a similarity algorithm that compares titles (string similarity), companies, and locations. The overall similarity score is calculated and postings with a score above 0.65 are grouped as duplicates. The confidence level is determined by the group size and matching criteria. A badge is created using style properties and textContent (never innerHTML) and inserted next to the title. A colored left border is also added. The grouping feature reorders the DOM to place duplicate postings together. A MutationObserver watches for DOM changes and re-scans when new postings load.
THE PANEL
The settings panel is built with BotGentz's BGPanel component. It is draggable via its header, allowing you to reposition it anywhere on the screen. The panel snaps to the left edge by default but can be moved freely. Click the gear emoji to collapse the panel into a small bubble, and click the bubble to expand it again. The panel remembers its position per page session. Press the Escape key to quickly close or minimize the panel. The panel includes a status flash bar that provides visual feedback when settings are changed or actions are performed. All settings save automatically via GM_setValue.
PLEASE NOTE
This script requires the free BotGentz browser extension to run. It does not function as a standalone Chrome extension and does not use chrome.* APIs. Job boards frequently update their page structures, which may affect the selectors used to find postings and extract data. If the script stops working, please check for updates. The duplicate detection is heuristic-based and may produce false positives or false negatives. The "Group duplicates" feature reorders the page DOM, which may affect the natural scroll position. The script stores only your preferences via GM_setValue. No data is sent externally—all data is stored locally in your browser. The script never reads or writes password fields, hidden inputs, or file inputs. All DOM operations use safe methods (style properties, textContent, appendChild) and never use innerHTML.