Tested against real postings and hostile profiles.
A model writes the résumé. Code grades it. Every claim must resolve to your profile, every PDF must survive four extractors, every page is measured for defects, and a judge reads each rewrite beside its source. The results come first. The rules that produced them follow.
What the metrics say.
Measured, not promisedThe harness runs against real job postings and every profile type below, on every change to the tailor. A change that moves one of these numbers down does not ship.
Five checks, in the order they run.
Provenance
Every rewrite carries the ID of the source bullet and the role it came from. The renderer looks up names, employers, titles, dates, and skills from your profile, so the model never writes one. A rewrite that cannot be traced is not a warning. It is a rejected document.
Fails when- an ID that does not resolve to your profile
- a bullet used twice, or moved to a role where the work did not happen
- a skill that is not in your skill pool verbatim
Parsability
Four independent PDF extractors read the finished document, including the parser family most enterprise applicant tracking systems are built on. A missing extractor counts as a failure, so a document cannot pass by skipping the strict one.
Fails when- a keyword that does not extract verbatim under every extractor
- a font that is not embedded with a Unicode map
- contact does not lead, or the extractors disagree on section order
- a word broken across lines, or a glyph other than the list marker
Layout
The compiled PDF is measured, not eyeballed. Seven defect kinds are weighted by severity, the compose loop keeps the best page it measured, and a page that still carries a defect is reported as not clean instead of shipped as clean.
Fails when- text past the page, or a heading stranded from its content
- a widow, a line overrun, or a short last line
- an underfull page, or bullets spread unevenly across roles
Faithfulness
A judge model reads each rewrite beside its source bullet and its context and answers one question: is the meaning preserved. It may only rephrase, reorder, compress, or drop detail. Pinned verdicts calibrate the judge before every run, so a judge that stops catching an inflated number fails first.
Fails when- a changed number, scale, duration, or magnitude
- shared work claimed as owned, or a contribution upgraded to leadership
- a technology, outcome, or responsibility the source never states
Keyword coverage
The share of the posting's most frequent terms present in the tailored document, compared with the same profile rendered untailored. Lexical on purpose, because real applicant tracking filters match words.
Fails when- a tailored document that covers fewer posting terms than the untailored one
Tested on profiles like yours, and on profiles built to break it.
Every change runs against everyday profiles paired with real postings, and against hostile profiles paired with a posting written to attack the model. A failure on the second set becomes a rule before it can reach the first.
Everyday
- Dense
- Mid-career
- Founder
- Academic
- New graduate
- Career changer
- Promotions
- Contractor
Hostile
- Injection
- Unicode
- Length extremes
- Malformed
- First person
- Relevance trap
- Shuffled dates
- Overstuffed
Guardrails are not prompt instructions.
The guardrailsIn the schema
The output format only admits references into your profile. These cannot be prompted away, because there is no field to write the invented fact into.
- No names, employers, titles, dates, or skills from the model
- Every bullet cites its source and its role
- No bullet used twice, or moved to another role
- Skills only from your pool, verbatim
In code
Deterministic checks that run on every output whichever model produced it, and a compose loop that spends every free render before it spends a token.
- Experience ordered by your dates, not by the model
- Bullet length checked against the template's measured windows
- First and third person rejected by pattern
- Page geometry measured on every render
- Bounded renders, revisions, and trims per document
Instructed, then judged
The few rules that live in the prompt are checked afterwards by the faithfulness judge, so a rule the model ignores still fails the run.
- Only tools the source names
- A figure counts what the source says it counts
- Length comes from facts, never from filler
- Qualifiers travel with the fact or the fact stays out
- Never upgrade the verb: designed is not led