feat: job_quality module — deterministic trust scorer for job listings #48
Labels
No labels
architecture
backlog
enhancement
module:documents
module:hardware
module:manage
module:pipeline
module:voice
priority:backlog
priority:high
priority:medium
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/circuitforge-core#48
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
New MIT module
circuitforge_core/job_quality/that scores a job listing for ghost/shadow/scam risk. Returns a structuredJobQualityScorewith a 0.0–1.0 trust score and per-signal breakdown.Intended callers: Peregrine (job review badge), Falcon (benefits listing quality), and any future product that ingests external listings.
Module layout
Input models
Output models
Signal set
High-weight (deterministic)
listing_agerepost_detectedno_salary_transparencyalways_open_patternstaffing_agencyMedium-weight
requirement_overloadjd_vaguenessats_blackholehigh_applicant_countlayoff_newsLow-weight / contextual
weekend_postedpoor_response_historyAvocet routing
When
confidence < 0.5(few signals, uncertain score), the caller is expected to submit anunlabeledsignal to Avocet for human review.JobQualityScoreincludesconfidenceexplicitly for this purpose.Avocet label schema for this signal type:
This feeds a labeled corpus for a future learned classifier that supplements the deterministic scorer.
Licensing
Full MIT — no LLM inference in the core module. Callers may optionally pass LLM-derived fields (vagueness score, requirement analysis) as enrichment, but the module itself makes no inference calls.
Acceptance criteria
score_job(listing, enrichment=None) -> JobQualityScoreimplemented and testedtrust_scorerange validated: always 0.0–1.0confidencelow when fewer than 3 signals have dataRelated