Samuel GarcíaAI / Software Engineer
GitHub (opens in a new tab)Public demo repo Contact

ENGINEERING CASE STUDY / 2026

JobLens

Turn multiple CVs into one truthful CV, with evidence at every step.

JobLens 2.0 is a local application for turning 1–5 existing PDF/DOCX CVs into one job-tailored CV. It extracts source-grounded facts, reconciles conflicting details, generates a deterministic draft, lets the candidate review and edit every line, and exports real PDF or DOCX files. The main web flow is deterministic; no LLM is used to generate the CV.

JobLens 2.0 is an unpublished local release candidate. It is not the older public synthetic demo and is not available as a public repository.

JobLens 2.0 review screen showing an editable tailored CV, contact details, review notes and export controls.
Authentic screenshot from the unpublished JobLens 2.0 release candidate, using fictional CVs and a synthetic job posting. The report is computed by the real evaluator and rendering pipeline.

OVERVIEW

What was built, how it was validated, and what remains limited

JobLens 2.0 moves from evidence inspection to evidence-grounded CV generation. It processes multiple CVs, consolidates candidate facts, parses a job posting, generates a draft, supports human review and exports a real document. Recorded results include 556 Python tests, 109 Node UI tests and 20 evaluation scenarios.

  • Built: PDF/DOCX ingestion, source provenance, profile reconciliation, job parsing, deterministic CV generation, editable preview, review workflow and PDF/DOCX export.
  • Validated: unit, integration, UI, release-safety, fact-preservation and synthetic end-to-end tests.
  • Limited: synthetic-data scope, no OCR, no cloud deployment, no persistence beyond explicit profile export/import, no hiring prediction.
5CVs per batchPDF and DOCX inputs
556Python testsrecorded release-candidate result
109Node UI testsrecorded release-candidate result
20Evaluation scenarios19 successful, 1 expected error

KEY ENGINEERING DECISION

Evidence states instead of a hiring score

The product avoids a black-box score. It shows documented requirements, tag-only matches, evidence gaps, context-only mentions and manual-review conditions. A gap is shown as a gap, not as proof that a candidate lacks ability. Final export requires explicit candidate confirmation.

PRODUCT JOURNEY

From multiple CVs to one confirmed CV.

The journey is deterministic and human-reviewed. Every generated line remains traceable to source evidence.

01

Upload 1–5 CVs

PDF and DOCX files are read locally and never persisted.

02

Extract evidence

Text, page or paragraph locators and source quotations are captured.

03

Reconcile facts

Compatible proposals merge; disputed details are omitted.

04

Parse the job

Requirements are matched with whole-term technology matching.

05

Generate CV

A deterministic draft ranks source-backed facts against the posting.

06

Review and export

Editable preview, contact prefill, confirmation and PDF/DOCX export.

JobLens 2.0 create screen with fictional CV uploads and a synthetic job posting.
Authentic screenshot from the release candidate. Sample data uses fictional CVs and a synthetic posting.

PROBLEM AND DECISIONS

Useful recommendations without invented evidence.

The practical problem is not ranking candidates. It is showing what is documented, what needs verification and what requires a human decision.

Problem

Job matching is often reduced to a score. JobLens instead separates documented requirements, tag-only matches, evidence gaps, context-only mentions and manual-review conditions. It never turns a missing requirement into a candidate skill.

Constraints

  • Synthetic-data scope for the public demonstration.
  • Text-based PDF and DOCX only; no OCR.
  • Small explicit skill vocabulary; unrecognised requirements remain for manual review.
  • Local, loopback-only execution with no cloud service.
  • No persistence, accounts or background jobs.

ARCHITECTURE

The browser is a viewer; Python evaluates and renders.

The evidence bank stays server-side. The browser receives candidate metadata, synthetic postings and reports. Approved profiles can be exported and imported as private JSON, but there is no database.

BROWSER

CV upload and job posting
Editable CV preview
Contact prefill and review

LOCAL API

Loopback host and origin checks
Request validation and limits
Approved profile and draft endpoints

ENGINE

PDF/DOCX extraction
Consolidation and reconciliation
Deterministic generation and export

Verified capabilities

  • PDF and DOCX ingestion with page or paragraph provenance.
  • Up to five CVs per batch.
  • Conservative candidate profile consolidation.
  • Job parsing with whole-term technology matching.
  • Deterministic, evidence-grounded CV generation.
  • Editable preview, review and contact prefill.
  • Real PDF and DOCX export.

Engineering invariants

  • Disputed details are omitted rather than guessed.
  • Human approval binds to exact content, contact details and section order.
  • Editing invalidates confirmation.
  • Stale confirmation or download responses are discarded.
  • Changed wording requires explicit candidate attestation.
  • Unsupported requirements remain gaps and never become skills.

EVIDENCE AND REVIEW

Documented, partial, missing and manually reviewed.

Coverage means documented evidence in the bank. It is not ability, seniority or likelihood of an interview.

Review workspace

JobLens 2.0 review screen with editable CV, contact details and Why this content notes.
Authentic screenshot from the release candidate. The preview mirrors the downloaded PDF and DOCX.

Decision report

JobLens 2.0 review screen with the Why this content control for tailored CV lines.
The Why this content control exposes backend-generated inclusion, omission and conflict decisions; it is not model reasoning or a confidence score.

Evidence states

EVIDENCE REPORTSYNTHETIC EXAMPLE
  • Documented5 / 5 required
  • Tag only0 / 2 preferred
  • Evidence gapshown as a gap
  • Human review4 gates surfaced

No score. No prediction. The report separates documented evidence from what still needs a human.

Example result

With fictional candidate Alex Rivera and the Junior AI Engineer posting, the report returns 5/5 documented required skills, 0/2 preferred skills andREVIEW_REQUIRED because degree, authorization, production depth and experience gates remain. The tests lock these outcomes so documentation cannot drift silently.

JobLens 1.0 public demo remains available separately. It is synthetic-only and does not implement the 2.0 CV-tailoring workflow.

VALIDATION AND PRIVACY

Recorded checks with explicit scope.

The release candidate was validated with unit, integration, UI, release-safety, fact-preservation and synthetic end-to-end tests.

Recorded results

  • 556 Python tests passed.
  • 109 Node UI tests passed.
  • Ruff: all checks passed.
  • 20 evaluation scenarios: 19 successful, 1 expected error, 0 unexpected failures.
  • Fact preservation: 55/55; forbidden insertions: 0/21.
  • Supported requirement recall: 22/22; unsupported leakage: 0/3.
  • PDF/DOCX mean token Jaccard: 1.0; review enforcement: 65/65.

Privacy controls

  • Loopback-only server with host, origin and request-token checks.
  • Upload limits: 5 documents, 10 MiB per file, 25 MiB batch, 100 PDF pages, 20,000 DOCX paragraphs.
  • Request bodies and CV text are not logged.
  • No persistence, analytics, cloud calls or external data requests in the main flow.
  • Static assets are allow-listed; source files and fixtures cannot be fetched through application routes.
  • Exports use fixed safe filenames and Cache-Control: no-store.

Version distinction

The public GitHub repository currently contains the older synthetic JobLens demo. JobLens 2.0 is the unpublished local release candidate. Claims about 2.0 capabilities in this portfolio are based on the local release candidate, not on the public repository.

LIMITATIONS AND SOURCE

Deliberately narrow, not a hiring predictor.

JobLens is an evidence-review aid. It is not an ATS and not a hiring predictor.

CONTACT

Have a hard problem?
Let's make it measurable.

Open to AI Engineer, Applied ML and Software Engineer roles where evaluation and engineering judgment matter as much as model choice. Based in Madrid.

samcarjes@gmail.com

Open to AI Engineer, Applied ML and Software Engineer roles