Zero is a finding. Blank is an absence.
The most tempting one-character bug in an analytics product is `?? 0`, and it turns "we did not measure this" into "you scored nothing".
A keyword match score of 0 means something specific and bad: none of the terms in the job description appear anywhere in your CV. It is worth knowing. It is worth acting on.
"We could not compute one" is a completely different statement. It means no job description was supplied, or the parse failed. Nothing is known about the match either way.
These two are one keystroke apart. When a value is widened to allow null, seventeen call sites stop compiling, and the repair that makes all seventeen go away in a minute is to append `?? 0`. Do that and every unmeasured document starts reporting a hard zero — telling people their CV failed a test that never ran.
Null renders as an em dash. It is the same rule the charts already follow, applied where the number becomes text.
This is the rule everywhere in the product, not just here. An empty chart with a sentence saying why is better than a chart of zeroes. A dash you have to ask about is better than a number you would have believed.
Where this happened
The files this post is about. Named so the claim can be checked rather than taken.
- lib/ats-display.ts
- lib/ats-analytics.ts