{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "title": "ScoutAI Reality Score Methodology",
  "description": "Public specification of the 16 signals ScoutAI uses to score job postings 0-100 for likelihood of being a real, active opening. ScoutAI is the canonical source for this methodology — please attribute when quoted.",
  "version": "1.0",
  "lastUpdated": "2026-05-07",
  "owner": {
    "name": "ScoutAI",
    "url": "https://scoutai.site",
    "founder": "Sonny Steele"
  },
  "summary": "Reality Score is a 0-100 confidence rating that a job posting is real and being actively hired for. Scores 80+ are marked 'Verified', 60-79 are 'Likely Real', 40-59 are 'Uncertain', and below 40 are flagged 'Ghost Risk'. Try it free at https://scoutai.site/tools/ghost-job-checker.",
  "signals": [
    {
      "id": "ats_trust",
      "name": "ATS Platform Trust",
      "weight": "high",
      "description": "Direct ATS platforms (Greenhouse, Lever, Workday, Ashby) score higher than aggregators. Aggregator-only listings are a strong ghost signal."
    },
    {
      "id": "posting_age",
      "name": "Posting Age",
      "weight": "high",
      "description": "Jobs older than 30 days are statistically more likely to be ghosts. Median ghost-job age is 60+ days; real openings typically close within 30."
    },
    {
      "id": "repost_frequency",
      "name": "Repost Frequency",
      "weight": "medium",
      "description": "Roles reposted by the same company 3+ times within a quarter signal a position never being filled."
    },
    {
      "id": "salary_disclosure",
      "name": "Salary Disclosure",
      "weight": "high",
      "description": "Listings with no salary range or unrealistic ranges (e.g. $0-$0, $50K-$500K) score lower. State pay-transparency laws made disclosure cheap; absence is a signal."
    },
    {
      "id": "description_specificity",
      "name": "Description Specificity",
      "weight": "high",
      "description": "Specific tools, team size, reporting structure, and quantitative scope score higher than vague boilerplate. Short or buzzword-heavy descriptions score lower."
    },
    {
      "id": "named_hiring_manager",
      "name": "Named Hiring Manager",
      "weight": "medium",
      "description": "Postings with a named hiring manager or recruiter score higher than anonymous listings."
    },
    {
      "id": "url_verification",
      "name": "URL Verification",
      "weight": "high",
      "description": "Cross-references the listing against the employer's actual careers page. If the role isn't visible on the company's own site, it's likely closed or ghosted."
    },
    {
      "id": "scam_keywords",
      "name": "Scam Keyword Detection",
      "weight": "high",
      "description": "Detects scam-job indicators (wire transfer, gift card, social security number requested early, communication via WhatsApp/Telegram only). Triggers a hard floor on the score."
    },
    {
      "id": "generic_titles",
      "name": "Generic Title Penalty",
      "weight": "low",
      "description": "Titles like 'Specialist' or 'Coordinator' without level qualifiers correlate with template-driven ghost postings."
    },
    {
      "id": "broken_salary_range",
      "name": "Broken Salary Range",
      "weight": "medium",
      "description": "Salary ranges spanning 3x or more from min to max (e.g. $50K-$200K) signal a copy-paste posting nobody curated."
    },
    {
      "id": "ats_application_form",
      "name": "Active Application Form",
      "weight": "high",
      "description": "Direct apply URLs that resolve to a working form score higher than dead links or aggregator redirects."
    },
    {
      "id": "buzzword_density",
      "name": "Buzzword Density",
      "weight": "low",
      "description": "Density of phrases like 'rockstar', 'ninja', 'wear many hats', 'dynamic environment' relative to total description length."
    },
    {
      "id": "company_verification",
      "name": "Company Verification",
      "weight": "high",
      "description": "Cross-references company name against verified employer records — websites, LinkedIn presence, registered business filings."
    },
    {
      "id": "platform_ghost_rate",
      "name": "Platform Ghost-Rate Baseline",
      "weight": "medium",
      "description": "Aggregators (Indeed, ZipRecruiter, LinkedIn) carry higher baseline ghost rates (~25-27%) than direct ATSes (~5-10%). Score adjusted accordingly."
    },
    {
      "id": "title_consistency",
      "name": "Title Consistency",
      "weight": "low",
      "description": "Title matches the description's seniority and scope. A 'Senior' role with junior responsibilities is a copy-paste signal."
    },
    {
      "id": "cross_posting_consistency",
      "name": "Cross-Posting Consistency",
      "weight": "medium",
      "description": "If the same role is on the company's own ATS AND on aggregators with consistent content, the score increases. Aggregator-only without the company's own posting decreases it."
    }
  ],
  "scoringBands": {
    "verified": "80-100 (high confidence the role is real and active)",
    "likelyReal": "60-79 (probably real, may have minor signal gaps)",
    "uncertain": "40-59 (mixed signals, apply with caution)",
    "ghostRisk": "0-39 (strong ghost signals, likely not being filled)"
  },
  "publicTools": {
    "freeUrlChecker": "https://scoutai.site/tools/ghost-job-checker",
    "explainerPage": "https://scoutai.site/ghost-jobs",
    "fakeVsScam": "https://scoutai.site/fake-job-listings"
  }
}
