Skip to content

Build1 publisher3 min readPublished

A resume builder bans its AI from adding nine named kinds of fact to a user's bullets

A developer's free resume builder bans its AI from adding nine named kinds of fact and rejects any rewrite that changes the bullet count. The live check covers only the count, so a claim invented in words inside a single bullet still reaches the user, who is told to read every result.

The Engineer · Build desk

Illustration accompanying A resume builder bans its AI from adding nine named kinds of fact to a user's bullets

What happened

  • A developer writing on dev.to built a free resume builder under one rule: its AI may reword a user's bullets but may never add facts.
  • The system prompt allows only facts the user provided and names each forbidden invention, including job titles, dates, percentages, tools and awards.
  • Before showing a result, the code demands exactly one rewritten bullet per input bullet and returns an error when the count differs.
  • During testing, an automated check flagged any output containing digits, percent signs or technology names that were absent from the input.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • decision A team adding a rewrite feature has to collect its own model's invention patterns first, because this ban list was built from inventions the developer had already seen.
  • constraint The one-in, one-out rule also blocks honest edits, such as merging two thin bullets into a single line that adds no new facts.
  • cost Strict validation puts the price of failed responses on the developer, since only successful AI actions count against a user's 20-per-day limit.

In the developer's account, the model invents because invention is what a strong resume looks like. The developer wrote that strong resumes have numbers, tools and outcomes, so when a model sees a vague bullet, the most resume-like completion includes a number, a tool and an outcome, whether or not they are true [2]. In the post's example, "worked on the website" comes back as "Spearheaded a website redesign that boosted conversions by 35%" [3]. According to the post, that line falls apart the first time an interviewer asks how the 35% was measured [3].

The developer wrote that vague instructions, such as telling the model not to make things up, are not enough [4]. The prompt names nine categories the model may not invent [5]. Two other lines mattered more than the developer expected, and both are good engineering [6]. The first bans placeholders such as [X%] and "N users". Without it, models "politely" offered [X]% for the user to fill in, and the user was left to make up the number [6]. The second gives the model something to do when a bullet has no measurable result: make it clear and specific with the facts given [7].

"Prompts are guidance, not guarantees," the developer wrote [8]. The count rule stops the model slipping in an extra bullet with an invented achievement. It also stops the model merging or dropping lines, so the user can compare each bullet before and after [9]. When the check fails, the user sees an error. "I'd rather fail loudly than show something plausible but wrong," the developer wrote [10].

Put the post's own example through those layers. The count check passes it: one bullet went in, one came out. The scan for digits, % or technology names missing from the input would flag "35%" [12]. It would not flag "Spearheaded" or "redesign". Those two words claim a leadership role and a project the user never mentioned. The developer calls the scan "crude" [12]. The post lists it among the tests the developer ran and does not say it screens live responses [12]. As described, an invention written in plain words reaches the user. The last check is the interface telling people to read the result before they use it [13].

The post does not report how often either check fired, or a fabrication rate before and after the rules went in. By the developer's description, JSON output mode is there for reliable parsing and a temperature of 0.4 keeps rewrites conservative [11]. No measurement comes with either setting. For the approach to carry over, invention in another product would have to look the way it does here: numbers and tool names in short bullets. Where invented claims are mostly words, a lexical scan catches less.

The same habit of testing what a machine reads turned up a second defect. The PDF export is the browser's print-to-PDF of a single-column HTML preview. That keeps the text selectable, which matters because many employers run applicant tracking systems that read it [15]. Extracted text came back as "SKI L LS" and "CERTI F ICATIONS" because wide letter-spacing on uppercase headings made the extractor treat the gaps as word breaks [14]. The developer wrote that where a human sees the heading SKILLS, a parser may see three words [14]. Removing the letter-spacing, plus a thin divider so the headings still stand out, gave clean extraction [16].

What to watch

  • Whether the developer moves the digit-and-technology scan from the test suite into the live response path.
  • A published fabrication rate on the vague-bullet test set, measured before and after the honesty rules.
  • Whether the checks grow to catch inflated verbs such as "spearheaded" that contain no digits or tool names.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories