You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of the UI-parity epic (#22). Depends on the token layer (#23) — do not start until #23 lands; this round consumes the semantic tokens it establishes.
resumelint already renders the data: score number, /100, algo version, the three dimension bars (Specificity/Structure/Completeness), per-bullet feedback, "Try another PDF". This round brings the presentation up to the source ATS surface resumelint was migrated from. No new data, no parser changes — chrome only.
Gaps vs the source surface (screenshot reference)
Score ring. The source shows a circular badge (colored ring + large number) at the card's top-left. resumelint shows a bare 3xl number + /100 inline. Add the ring; color it by verdict band (brand-amber / accent / feedback tokens).
Verdict label. Source: Needs Work heading in band color + ATS readiness · 50 / 100 subline. resumelint has no verdict word. Add a band → label map (e.g. Strong / Solid / Needs Work) using the existing score bands.
Clean ATS layout banner. The source shows a green success pill-banner when layout is clean. Wire it to the existing layout-trigger signal using feedback.success tokens.
Header pill chips. Source: ⚡ ~30 seconds · 🔒 Runs in your browser · ✓ No signup required. resumelint header has none. Add the chip row (static content) — reuse a shared chip/badge primitive, don't hand-roll.
Wordmark. The source has a boxed monogram + wordmark; resumelint has a plain lowercase resumelint text. Decide resumelint's own mark (boxed monogram in brand color) — keep the name, match the treatment.
Card chrome. Border-radius, surface-card bg, border + subtle shadow on the score card and any sub-cards, matching the source's elevation.
Out of scope
The Contact-information card and thumbs feedback — those surface new data / new behavior → Round 3 (round 3, filed next).
Result.tsx decomposition (it is 430 LOC; if this round pushes it well past that, split out ScoreRing / VerdictHeader as their own feature components per CLAUDE.md — but do not refactor unrelated code).
Side-by-side with the reference screenshot: visually comparable layout
References
The source surface is not public. The two files that matter — the ring/verdict/bar markup, and the band → label/color view-model logic — are known to the maintainer and are not linkable here.
Edited 2026-07-30: originally named a private, non-public codebase and two of its internal file paths. Rewritten to describe the same work without them; no gap, decision, or acceptance criterion changed. See #457.
Round 2 — Score-card visual parity
Part of the UI-parity epic (#22). Depends on the token layer (#23) — do not start until #23 lands; this round consumes the semantic tokens it establishes.
resumelint already renders the data: score number,
/100, algo version, the three dimension bars (Specificity/Structure/Completeness), per-bullet feedback, "Try another PDF". This round brings the presentation up to the source ATS surface resumelint was migrated from. No new data, no parser changes — chrome only.Gaps vs the source surface (screenshot reference)
3xlnumber +/100inline. Add the ring; color it by verdict band (brand-amber/accent/ feedback tokens).Needs Workheading in band color +ATS readiness · 50 / 100subline. resumelint has no verdict word. Add a band → label map (e.g. Strong / Solid / Needs Work) using the existing score bands.brand-amberon asurface-subtletrack. Restyle resumelint'sDimensionbars to match (token-driven, post-Establish the semantic token layer (UI parity round 1) #23).Clean ATS layoutbanner. The source shows a green success pill-banner when layout is clean. Wire it to the existing layout-trigger signal usingfeedback.successtokens.⚡ ~30 seconds·🔒 Runs in your browser·✓ No signup required. resumelint header has none. Add the chip row (static content) — reuse a shared chip/badge primitive, don't hand-roll.resumelinttext. Decide resumelint's own mark (boxed monogram in brand color) — keep the name, match the treatment.surface-cardbg, border + subtle shadow on the score card and any sub-cards, matching the source's elevation.Out of scope
Result.tsxdecomposition (it is 430 LOC; if this round pushes it well past that, split outScoreRing/VerdictHeaderas their own feature components perCLAUDE.md— but do not refactor unrelated code).Acceptance
npm run typecheck+npm run buildgreenReferences
The source surface is not public. The two files that matter — the ring/verdict/bar markup, and the band → label/color view-model logic — are known to the maintainer and are not linkable here.
Edited 2026-07-30: originally named a private, non-public codebase and two of its internal file paths. Rewritten to describe the same work without them; no gap, decision, or acceptance criterion changed. See #457.