Skip to content
Back to skills

job-posting-comparison

ASecurity

Compare advertised job postings using Crawlora jobs datasets, employer ATS boards, and Indeed detail. Use for a role shortlist or posting comparison with employer/requisition identity, location, seniority, compensation units, transport-dependent fields, and offer limits preserved.

  • 0 votes
  • 0 copies
  • 0 views
  • Added October 12, 2026
ai-agentsgoapibackend

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 12, 2026

npx -y skills add Crawlora-org/crawlora-skills --skill job-posting-comparison --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of job-posting-comparison?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for job-posting-comparison
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/crawlora-org-job-posting-comparison/badge)](https://www.skillsdirectory.com/skills/crawlora-org-job-posting-comparison)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: job-posting-comparison
description: Compare advertised job postings using Crawlora jobs datasets, employer ATS boards, and Indeed detail. Use for a role shortlist or posting comparison with employer/requisition identity, location, seniority, compensation units, transport-dependent fields, and offer limits preserved.
---

# Job posting comparison

## Access and scope

Set `CRAWLORA_API_KEY` to your Crawlora key. Prefer the listed Crawlora MCP tools
when connected; otherwise use the bundled `scripts/crawlora.sh`, which sends
`x-api-key` to `https://api.crawlora.net/api/v1`. Read
[reference/endpoints.md](reference/endpoints.md) for exact methods and parameters.
Check application `code` as well as HTTP status; payloads are inside `data`.
Stop on authentication errors, back off on `429`, and retry a transient upstream
failure once. Bound calls/pages by the requested scope and credit budget. Retain
source IDs, URLs, source dates, and observation/crawl times separately.

Build a candidate-facing comparison of advertised roles. Establish desired
function, seniority, geography/workplace constraints, compensation basis, and
must-have requirements. A posting is an advertised role, not a negotiated offer.

## Discover and verify postings

1. Discover dataset provider/workplace/department values, then collect a bounded
   role set. Stored roles are open by default but can lag live boards. Resolve
   provider-specific posting IDs, employer/domain, requisition and location before
   detail. Dataset IDs, Indeed `job_key`, and ATS IDs are separate namespaces.
2. Use `jobs_company_search` for supplied company slugs, then the actual detected
   provider's board/detail route. Include full posting content when available and
   keep exact required slug/token/company fields. A guessed ATS slug is not proof
   that a board belongs to the employer; verify its official identity.
3. Preserve title/responsibilities, required versus preferred qualifications,
   location/remote scope, employment type, salary text and normalized currency/
   period, benefits and source dates. Indeed's GraphQL response can omit remote,
   employment type and benefits even when page transport supplies them; missing
   fields are unknown rather than a denial. Some dataset providers omit dates/types.
4. Deduplicate by actual requisition/provider ID with location evidence. Multiple
   geographic versions can be one role; evergreen/pipeline listings are not a
   count of filled or actively funded vacancies. Expired/failed detail leaves
   unavailable evidence rather than proof the employer stopped hiring.

```sh
scripts/crawlora.sh /datasets/jobs/facets
scripts/crawlora.sh /datasets/jobs/search q="backend engineer" page=1 page_size=10
scripts/crawlora.sh /indeed/search q="backend engineer" l="Austin, TX" page=1
# Use verified returned posting IDs and provider-specific selectors for detail.
```

## Compare the same compensation and requirement basis

Salary-bounded dataset queries require `salary_currency` and expose no salary-period
selector: inspect and normalize period after retrieval rather than assuming every
bound is annual. Ranges use overlap
semantics, not proof every possible offered salary meets the user's minimum.
Keep hourly/monthly/annual, base/bonus/equity, gross/net, currency and regional
bands separate. Annualize only with declared hours/weeks/basis assumptions;
unknown equity, commissions, fees, tax and relocation costs remain unknown.
A posted upper range is not an expected individual offer or take-home pay.

Return an employer/requisition ledger, requirements-and-compensation matrix,
fit evidence and questions. Separate source wording from classifier-derived
seniority/occupation labels; ambiguous roles need review rather than automatic
exclusion. Use the user's criteria and disclosed weights, not employer popularity.
Do not apply, upload a CV, contact recruiters, infer visa eligibility from silence,
or negotiate terms unless the user requests those actions.

Files in this skill

  • SKILL.md3.9 KB
  • reference/endpoints.md26.9 KB
  • scripts/crawlora.sh7.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.