The score, live

This is the exact scoring module from the app, running in your browser on a real comparison — a synthetic posting against a synthetic resume. The AI marked the facts once; everything below recomputes in pure code as you type. Try adding Redis to the skills line — the number moves instantly. Then try adding Terraform: nothing moves, because the AI marked it cannot-claim against the original resume, and typing a word is not evidence. Delete every TypeScript to watch the primary-stack cap bite.

Job posting green = in the resume, amber = still missing
The resume — edit it watch the score and the posting react

What's AI and what isn't: one AI call marked each keyword as present / missing / ask-the-user against the original resume, and graded the alignment. Everything since — coverage, the primary-stack cap, the number — is score.mjs, the same file the dashboard ships. A parity test keeps this page's copy byte-identical.