Open Source · MIT License

Every Job.
Verified Safe.

We aggregate thousands of jobs directly from company career pages and scan each one against 54 fraud signals. No spam, no scams, no sponsored results.

Protecting job seekers
54 detection signals · 120+ companies · 9 data sources · MIT licensed
$ pip install sentinel
$ sentinel scan "https://linkedin.com/jobs/view/..."
✓ Score: 78/100 — HIGH RISK
↳ 6 signals triggered: upfront_payment, ssn_requested, ...

How It Works

We scan thousands of jobs from company career pages every 4 hours so every listing you see is verified safe.

1

We Aggregate

Every 4 hours, we fetch jobs directly from 120+ company career pages on Greenhouse, Lever, Ashby, and more — plus Adzuna, USAJobs, and RemoteOK.

2

We Verify

Each listing is scanned against 54 fraud detection signals — upfront fees, identity harvesting, MLM language, ghost job indicators, and more. In under 10ms.

3

You Apply Safely

Click through directly to the company's career page. No middleman, no sponsored results. Every listing shows its safety score and signal breakdown.

Built for Real Protection

Every design decision prioritizes accuracy — because false positives cost people jobs, and false negatives cost people money.

Multi-Signal Analysis

50+ independent signals spanning red flags, structural patterns, ghost job indicators, linguistic markers, and positive trust signals — each calibrated against a dataset of 1,500+ real postings.

Intelligent Scoring

Confidence grows with accumulated evidence rather than binary rules. Multiple weak signals combine correctly, and contradictory positive signals reduce false alarms — like a trained investigator would reason.

Adaptive Detection

Detection improves continuously based on user-reported outcomes. Scam tactics that evade today's detectors get caught faster tomorrow as the system adapts.

Real-Time Detection

Regex-based signals complete in under 10ms per posting, making it viable to scan hundreds of listings during a job search session without perceptible delay.

Direct from Companies

Jobs come directly from company career pages via Greenhouse, Lever, and Ashby APIs — the same source hiring.cafe and Indeed pull from, but verified safe before you see them.

Browser Extension

Analyze postings inline as you browse. Risk badges appear directly on job listing cards — no copy-paste needed. Works on Chrome, Firefox, and Edge.

Live Demo

Paste a job description below and get an instant client-side scam analysis. No data is sent to any server.

job-description.txt — JobSentinel Analyzer
Full Demo →

Signal Categories

Every signal is hand-crafted, independently weighted, and continuously validated against known scam patterns.

Upfront payment required
SSN / banking info requested
Guaranteed income claims
Check cashing scheme
MLM / pyramid structure
High-pressure urgency tactics
Excessive personal info demand
Impersonation of known brands
No company name or address
Fake recruiter contact
Wire transfer / money order
Interview via text only
Request for gift cards
Fake government job offer
Vague company description
Unusually high salary claim
Grammar and spelling errors
Reshipping / package handling
Cryptocurrency payment
Generic job description
Mismatched domain / email
No physical address
Immediate hire offer
Mystery shopper role
No formal application
Copied posting text
Perpetually open role
No contact information
Posting age anomaly
Candidate pool building
No hiring manager listed
Duplicated across cities
Non-existent department
No qualifications listed
Missing salary range
Zero responsibilities listed
Unusually short description
No job title clarity
Detailed company info
Structured interview process
Legitimate benefits listed
Verified employer badge
Clear salary range
LinkedIn profile linked
ATS / careers portal link
Named hiring manager

By the Numbers

Built with rigor, tested against reality.

0
Detection Signals
0
Signal Categories
0
Test Cases Validated
<10ms
Detection Latency

Get Started in Seconds

Installable via pip. Works as a CLI, Python library, or REST API.

Installation
$ pip install sentinel

# or install from source
$ git clone https://github.com/ericrihm/JobSentinel
$ cd JobSentinel && pip install -e .
CLI Usage
# Scan a single URL
$ sentinel scan "https://linkedin.com/jobs/view/..."

# Analyze a text file
$ sentinel analyze posting.txt

# Batch scan from a list
$ sentinel batch urls.txt --output results.json
Python API
from sentinel import Sentinel

s = Sentinel()
result = s.analyze(url="https://...")

print(result.score)        # 78
print(result.verdict)      # HIGH_RISK
print(result.signals)      # [...signals...]
Sample Output
✓ JobSentinel v0.9.0
  Analyzing: linkedin.com/jobs/view/...

  Score:   78 / 100 (HIGH RISK)
  Signals: 6 triggered

  ● upfront_payment    (+35)
  ● ssn_early          (+40)
  ● urgency_pressure   (+22)
  ✓ structured_process (-12)

Open Source

MIT licensed. Built in the open, improved by the community.

MIT License

Use it, fork it, embed it in your product. No strings attached.

View License

Contributions Welcome

Add new signals, improve scrapers, report false positives. See CONTRIBUTING.md to get started.

Contribute

Report Issues

Found a missed scam pattern or a false positive? Open an issue with the posting (redacted) and we'll fix it.

Open Issue