Job Intelligence
How Worth Score works
Worth Score is a deterministic heuristic, not a black-box model. The implementation lives in src/lib/yourresume/scoring.ts and you can read it end-to-end if you want to audit how a number was produced.
The engine runs seven scoring blocks against each posting:
A. Role fit - skill overlap between the posting's required skills and your profile skills, plus target-role language overlap. Weighted 0.75 skills, 0.25 role language. B. Proof strength - overlap between the posting's required skills and your Proof Bank tags, plus overlap with your resume text. Weighted 0.6 proof, 0.4 resume. C. Compensation - posting salary checked against your salary floor when both are present; defaults to a neutral 0.7 if either is missing. D. Growth upside - keyword signal for ownership, lead, strategy, scale, growth, mentor, build, 0-to-1, founding. E. Logistics - work mode and location preference fit. Match returns 1.0, mismatch returns 0.56, missing data returns 0.7. F. Market signal - positive keywords (team, budget, customers, revenue, series, funded, profitable, benefits, hiring manager) minus negative keywords (urgent hiring, unlimited earning, commission only, training fee, crypto payment). G. Posting legitimacy - derived from the ghost-risk pattern detector. Zero flags = high confidence (0.92), one flag = proceed with caution (0.66), two or more = suspicious (0.42). This block is NOT averaged into the overall score; it gates the decision separately.
Each block is clamped to a 20-100 range so a single weak input cannot zero out the score. The overall score is the simple average of blocks A through F.
Decision logic (see scoring.ts lines 80-84): - 2 or more risk flags, or score below 62, returns 'skip'. - Score at or above 82 with zero risk flags returns 'apply'. - Everything else returns 'maybe'.
A confidence number is also returned, derived from how many blocks scored, raw skill overlap, and a penalty per risk flag, clamped to 35-96. Confidence is a self-report about how much signal the engine had, not a probability of getting the job.
What this is not: there is no learned model, no embedding, and no per-user training. Better inputs (resume text, proof points tagged with the right skills, an honest salary floor, a specific job description) produce more useful scores. Garbage in still produces a score, but the confidence number will be lower and the gaps section will tell you what the engine could not see.
