duplicate-prevention

Detects duplicate job applications using database hash checks, email parsing, and vector similarity.

Updated May 19, 2026
One-click install
npx skills add https://github.com/Jessitoii/career-os --skill duplicate-prevention-jessitoii
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: duplicate-prevention
Source: https://github.com/Jessitoii/career-os/tree/main/.agents/skills/duplicate-prevention
Command: npx skills add https://github.com/Jessitoii/career-os --skill duplicate-prevention-jessitoii

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Applying to the same job twice wastes recruiter goodwill and pollutes application tracking data. This Skill implements a three-layer detection pipeline that catches duplicate job applications before any submission happens, whether the duplicate comes from the same URL, an out-of-system manual application, or a reposted listing with different wording. ## Core Features & Use Cases - Layer 1 - DB Hash Check: Instantly matches job URLs or company-role composite keys against the job_listings table using SHA-256 hashes, before any LLM or embedding calls. - Layer 2 - Email Parsing: Searches Gmail via the Gmail API for application confirmation keywords (English and Turkish) from the last 30 days to catch applications made outside the system, logging them as manual entries. - Layer 3 - Semantic Detection: Uses pgvector cosine similarity with a 0.95 threshold to catch renamed or reposted jobs, escalating matches to human approval instead of auto-applying. - Use Case: A job discovery pipeline finds a listing that was reposted under a slightly different title. The semantic layer flags it as a possible duplicate of a prior application and routes it to an approval queue with the similarity score and original application reference. ## Quick Start Run the duplicate check orchestrator on this job listing and its embedding to tell me whether it is a duplicate and which detection layer caught it.

Frequently Asked Questions about duplicate-prevention

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I detect duplicate job applications in a database?

Hash the job URL with SHA-256, or fall back to a normalized company-plus-role composite key, then query the job_listings table for matching external_id or url. This check runs first because it costs nothing and catches exact reposts instantly.

How to catch job applications made outside the system using Gmail?

Search Gmail for messages from the company containing application confirmation keywords like "application received" or "thank you for applying" within the last 30 days. Matches are logged as manual entries with is_manual_entry set to true.

What similarity threshold should I use for semantic duplicate detection with pgvector?

This implementation uses a 0.95 cosine similarity threshold computed as 1 minus the vector distance operator on embeddings. Matches at or above this threshold are flagged as possible duplicates and sent to human review rather than auto-applied.

Why run the database and email checks before generating embeddings?

Layers 1 and 2 complete before any embedding API call to save cost, since hash lookups and email searches are cheap compared to LLM embedding requests. Only jobs passing both layers proceed to semantic comparison.

What happens when a semantic duplicate is found?

The job is marked as possible_duplicate and routed to an AWAITING_APPROVAL state; it is never auto-applied. The user receives a notification containing the similarity score and a reference to the original application, and the event is logged with action_type duplicate_detected.