How Jini reads and scores a resume
Published 2026-09-18. Updated 2026-09-21. · By Blake Crosley · Who makes it
Every number Jini shows is computed by a published formula from things you can see on the page. This is the whole of it, including what Jini cannot see.
What Jini reads
Jini extracts the text layer of a PDF or a Word file, the way hiring software does. It shows you that extracted text next to your original and lets you correct it. It does not look at the page as a picture, so it cannot read text inside images, and it does not know what any particular company's system does with your file.
Readout 1: extraction success (0 to 100)
Up to 40 points for coverage: the share of the extracted text that Jini could place inside a resume item. Then fixed points for things a reader needs to find:
- 15 points: a name
- 10 points: at least one way to contact you
- 20 points: a job with a role and dates that name a year
- 10 points: an education entry
- 5 points: a skills section
The total is rounded to a whole number. Coverage is measured on the extracted text, never on the original file: if a page is an image, its text is not in the extraction at all, and the second readout says so.
Worked example
A one-page resume Jini keeps for this page, structured the way Check structures a file: 6 items found, 94.4% of the text inside them, so 37.8 coverage points.
- A name: found, +15
- A way to contact you: found, +10
- A job with a role and dates: found, +20
- An education entry: found, +10
- A skills section: found, +5
The sum is 97.8; the readout is 98.
Readout 2: document structure (0 to 100)
Starts at 100. Each layout hazard Jini finds is deducted once, however often it occurs, and the score never goes below zero. When a document has more layout than Jini analyzes, this readout says unavailable instead of guessing.
- The page places text in two or more columns. Jini read the columns one after another, so lines from different columns may sit next to each other in the extracted text. −25
- Some content is laid out in a table. Jini read the cells in row order; a value may appear far from its label in the extracted text. −20
- Text sits in the page header or footer. Jini extracted it separately from the body, so it may appear out of place or repeat on every page. −15
- Some text lives in a floating text box. Jini read it after the main body, so it may appear in a different place than on the page. −15
- At least one page has no text layer (it is an image). Jini could not read any text from those pages. −30
- The order of the text on the page differs from the order Jini read it in. Some lines may appear before or after where you expect them. −15
- Part of the text uses a very small font. Jini read it, but small text tends to carry details a reader skips. −10
- The document runs to more than two pages. Jini read all of them; the extracted text is long. −10
- Jini could not match some section headings to a known kind, so their content is filed under other. −5
Worked example
A resume with these three hazards:
- The page places text in two or more columns. Jini read the columns one after another, so lines from different columns may sit next to each other in the extracted text.: −25
- Some content is laid out in a table. Jini read the cells in row order; a value may appear far from its label in the extracted text.: −20
- Part of the text uses a very small font. Jini read it, but small text tends to carry details a reader skips.: −10
100 less the deductions is 45.
Readouts 3 and 4: writing and fit for a job
These are written feedback, not scores. Writing feedback points at sentences and says what would make them clearer. Fit compares what the posting asks for with what your resume says, requirement by requirement, as covered, partly covered, or a gap. Jini never blends the four readouts into one number, because a single number would hide which of four different things needs your attention.
Worked example
Against the posting Staff Engineer, Platform, the same resume reads like this. Fit is the model's reading of the posting against your words; every status it gives is checked against the units it names.
- Lead a team of engineers. (Led a team of four engineers building the invoicing service.) covered
- Own the migration of reporting to a new warehouse. (Helped the data team migrate reporting to PostgreSQL.) partly covered
- Deep Kubernetes experience. gap
How the rewrite stays honest
When Jini writes your resume for a job, every sentence it produces is broken into claims and each claim is checked against your own resume. A claim your words support passes. A claim they do not support is marked unresolved, and you either confirm it yourself, in those exact words, or delete it. The posting is never evidence about you. Export stays locked while any claim is unresolved.
Worked example
The evidence is one sentence of the resume: “Cut infrastructure costs 20% by consolidating message queues.”. Two claims are checked against it by the same rules Jini uses on a draft.
- Cut infrastructure costs 20% by consolidating message queues. 20supported
- Cut infrastructure costs 35% by consolidating message queues. 35unresolved
What Jini cannot tell you
- Whether a specific employer's system will rank you higher. Nobody outside that employer can know that.
- Whether a recruiter will like your resume. The writing feedback is about clarity, not taste.
- Anything about text that lives inside an image or a drawing in your file.
Formula version 1.