Numbers on a resume: what can be checked, and what is never invented
How a number on a resume is checked against your own words. Equal, converted, or derived from your figures, never inflated. The rules, from the code.
Every piece of resume advice says to quantify. A number is also the easiest thing to invent: a writer, human or machine, fills the gap the advice opens. This page says what happens to a number in Jini's Write step, rule by rule, from the code that applies the rules. It is written for anyone whose work is measured in figures, in finance and accounting above all, and it holds for every other field the same way.
What a claim is
The verifier does not read a sentence as prose. It reads it as propositions: a relation (what you did), an object (to what), the quantities (how much, with a role and a unit), and the modifiers that say when, whether it was you or a team, and whether it happened or was conditional.[1] Your own resume text, as you corrected it in Check, and the confirmations you give during Write are the evidence. A rewritten sentence is checked proposition by proposition against that evidence and nothing else. A job posting is never evidence.
The checks a number goes through
A rewritten proposition is supported only when an evidence proposition passes five checks, in this order: it comes from the same context (the same job or entry); it names the same object, with articles stripped and nothing else folded, so a synonym or a plural difference is not a match; it keeps the same polarity, attribution, condition, and time; its relation belongs to the same class in a shared registry, where leading is not building and owning is not managing; and every quantity in the rewrite has a matching quantity in the evidence.[2]
The last check governs numbers. A match is the same role, unit, and value, after the unit table's conversions: months to years, thousands written as k, currency codes.[2:1] Dropping a figure from a sentence is allowed, because it weakens the claim; adding one is not, and the claim comes back to you unresolved.[2:2]
The rules also admit a derivation: a sum, a difference, a percent change from a from-value to a to-value, or a duration from a date range, recomputed by the server from your own figures and refused when the result does not equal the recomputation at the rewritten number's precision, when a literal was added, or when the sign of a change was reversed.[2:3] A sum or a difference may not be finer than the figures it came from; a percent change is exempt from that rule, so a third of a whole may be written to more decimals than its parts.[2:4] Today the writer proposes no derivations: in Write, a number that is not in your evidence as written or after a unit conversion comes back unresolved, marked with the first of the checks above that failed, and you confirm it in your own words or remove it.[3]
The worked example
The methodology page computes this on every visit from the same rules. The evidence sentence is "Cut infrastructure costs 20% by consolidating message queues."[4] A rewrite that keeps 20% is supported; a rewrite that says 35% is unresolved, and the page shows both quantities side by side rather than a guess about which is right.[4:1] The check that fails first for that pair is the object, because the figure sits inside what the sentence is about, so the unresolved mark names the object rather than the quantity.[4:2]
What this means when your work is measured in money
Put the figure you can source. A figure you cannot source stays out, and the writer is not allowed to estimate a figure for you. Write the figures you hold as they appear in your evidence, because the writer does not derive a new one from them today, and confirm any rewrite of a figure in your own words.[3:1] A claim left unresolved blocks export of the draft until you confirm the figure as your own or remove the sentence; nothing stores an "exportable" flag, the eligibility is recomputed from the claims every time.[5]
What this page does not claim
Whether a recruiter prefers a bullet with a number in it. We hold no study of our own and cite none. What any employer's software does with a number. The rules above are Jini's, applied to your evidence, and the page they run on is public.
jini/services/verify/propositions.py (Proposition v1, PRD-VERIFY v2 §6.1 to §6.3): the decomposer marks spans only; the relation and its class, the object key, the quantities with roles and units, polarity, attribution, conditionality, and the temporal class are derived from the spans by the locale tables. Tested 2026-09-21 in tests/verify/test_grammar_and_support.py: a grounded sentence derives every field from its spans, and an omitted clause inside a span is a coverage failure that confirming cannot clear. ↩︎
jini/services/verify/support.py, the functions supporters and derivation, applying the five rules of PRD-VERIFY v2 §6.4 with the class registry jini/services/verify/tables/classes.json and the unit conversions of the locale tables (months to years in the module; thousand, k, and the currency codes in the tables' unit entries); the precision rule exempts the percent_change operation (the line comparing digits with the operands' precision). Tested 2026-09-21 in tests/verify/test_grammar_and_support.py: an equivalent relation in the same context supports; the named exclusions and a changed modifier are unresolved; a different context never supports; quantities equal or derived, never inflated, with the derivation supplied to the function directly; object keys strip articles and keep plurals; number words are quantities and change like digits. Unknown: how often a real resume's sentences ground at all; the evaluation fixtures are invented resumes, not a field measurement. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
jini/services/verify/handler.py, the claims loop of the verify job, read 2026-09-21: it calls supporters with the evidence propositions and no derivation, so in Write the derivation rules are never reached and a quantity absent from the evidence leaves the claim unresolved, marked with the first failing check in the order of PRD-VERIFY v2 §6.4 (support.py compares the object before the quantities, so a figure that is part of the object fails as the object; the methodology page's own pair fails that way); the derivation rules are exercised only where a test supplies one directly (tests/verify/test_grammar_and_support.py). A future writer that proposes derivations would be a change to PRD-VERIFY, not to this page. ↩︎ ↩︎
/methodology, read 2026-09-21: the claims example is computed on every visit by jini/web/methodology.py from the two sentences in the repository's examples, through the same grounding and support rules; the quantities shown are the propositions' own, and the unresolved claim's reason, as the same call returns it, is object (jini/services/verify/support.py, supporters: the object key is compared before the quantities, and the figure is part of the object span). ↩︎ ↩︎ ↩︎
jini/services/verify/eligibility.py, the function eligible (PRD-VERIFY v2 §7.6): exportable only when the proposal is not stale, the verification is complete for the current inputs, every live sentence has a claim for those inputs, and no claim is unresolved; every route that shows or acts on exportability calls it. Tested 2026-09-21 in tests/verify/test_eligibility.py. ↩︎