This is a working demo of the resume builder inside my job-search pipeline. It runs entirely in your browser — no server, no API calls, no LLM. Every number you see is computed by rules you can read below and verify against the output.
A resume isn't the unit of storage. Each accomplishment is an atom: text, one or more shorter phrasing variants, the skills and keywords it evidences, the role types it argues for, and a manual impact weight from 0–10. The resume is what gets assembled from them at request time.
The posting's title and body are matched against a keyword ladder — first match wins —
producing one of seven types: solutions_consultant,
implementation, customer_success, product_manager,
revenue_operations, talent_intelligence, or
default. This picks the headline and summary variant, and it is the single
largest scoring input.
| Signal | Weight |
|---|---|
| Atom is tagged with the detected role type | +25 |
Atom is tagged default (broadly useful) | +4 |
| Each distinct keyword/skill found in the posting | +6 each, capped at +30 |
| Intrinsic impact weight (0–10) | × 2 |
Keyword matching uses word boundaries with a suffix allowance, so ai never
matches inside maintaining and recruit still catches
recruiting. A multi-word phrase matches whole, or every token in it (3+ chars)
must appear somewhere in the posting.
Atoms sort by score, then the selector takes the top 16 overall, at most 4 per role, dropping anything below 8 points. Skill clusters sort by how many of their skills the posting mentions; the top 4 print. Then you override everything — that's what the left panel is for.
The meter counts the distinct keywords the posting asks for that you have evidence for somewhere in the repository, then measures how many survive into the bullets you've actually selected. A missing keyword means you own the receipt and left it in the drawer — hover any red chip to see which bullet carries it.
The demo persona — Morgan Avery — is fictional. The companies, metrics, and career history are invented to exercise all seven role types. Switching to "Rob's real repo" loads my actual career repository: real roles, real bullets, phone number withheld. The engine is the artifact here; the résumé data is just fuel.