pulse-cv / docs /validation-report.md
qyam23's picture
Deploy PulseCV Docker Space
192ba94 verified
|
Raw
History Blame Contribute Delete
3.86 kB

Validation Report

Scope

This validation report covers the first evidence-based pivot release for the manufacturing vertical.

Checked in this release

  • Typed requirement extraction from pasted JD text
  • Typed requirement extraction from LinkedIn job pages
  • Requirement-by-requirement evidence mapping from CV text
  • Grouped result rendering in the public UI
  • Evidence Map rendering
  • JD Quality Review rendering
  • Manufacturing benchmark scaffolding and starter fixtures
  • Product and quality telemetry capture
  • New parse endpoints:
    • /api/jd/parse
    • /api/cv/parse
    • /api/jd/lint
    • /api/analytics/summary
  • Backward-compatible fields still present in /api/analyze

What the release now proves

  • The product no longer depends on flat keyword matching as its primary output model.
  • Requirements are grouped and typed.
  • Each requirement can carry evidence, support level, and confidence.
  • The final score is decomposed and secondary.
  • The UI exposes uncertainty and JD quality warnings.

Commands executed successfully

  • npm run lint
  • npm run build
  • npm run benchmark:manufacturing
  • POST /api/analyze against a pasted Hebrew factory-engineer JD
  • POST /api/scrape against LinkedIn job URL https://www.linkedin.com/jobs/view/4398015632/

Local runtime checks

  • GET /health
    • returned product=Pulse CV - Evidence-Based Hiring Intelligence
    • returned scoringMode=evidence-based-deterministic
    • returned vertical=manufacturing
  • GET /
    • returned HTTP 200 locally
  • POST /api/jd/parse
    • returned typed requirement groups for a manufacturing JD
  • POST /api/analyze
    • returned decomposed scoring, evidence map, JD quality warnings, and candidate/recruiter recommendations
  • GET /api/analytics/summary
    • returned telemetry summary JSON

Behavior checks confirmed

  • Strong manufacturing-fit sample produced:
    • explicit tool matches (AutoCAD, SolidWorks)
    • explicit methods/domain matches (Continuous Improvement, Quality Management, Manufacturing)
    • decomposed score instead of flat ATS-only output
  • Partial-fit industrial leader sample stayed meaningfully lower than the strong-fit case
  • Maintenance-heavy sample against manufacturing-engineer JD stayed low-fit and exposed real tool/domain gaps
  • Seniority extraction no longer emits a flat individual_contributor requirement for non-leadership roles
  • Must-have calibration is stricter:
    • role title and years-experience remain mandatory by default
    • tools, education, and language only become must-haves when the JD wording actually marks them as required
    • broad domain/methodology signals are no longer auto-promoted to must-have unless the source line carries explicit requirement context
  • AI no longer overrides deterministic recommendations or bullet rewrites
  • AI no longer overrides the deterministic profile summary / tailored bio in the main payload

Remaining weaknesses

  • Manufacturing pack is curated and useful, but still compact rather than benchmark-complete.
  • Recruiter and hiring manager views are beta-level surfaces, not separate polished products yet.
  • AI rewrite quality still depends on provider availability.
  • Benchmark scaffolding now exists, but a full human-reviewed corpus is still a next-step task.

Benchmark harness

  • Script: npm run benchmark:manufacturing
  • Fixtures: benchmark/manufacturing/cases.json
  • Current benchmark asserts:
    • primary domain detection
    • expected role family where relevant
    • score range guardrails
    • matched requirement expectations
    • missing requirement expectations

Telemetry added

  • Product events:
    • analysis.started
    • jd.parse
    • cv.parse
    • feedback.correction
  • Quality events:
    • analysis.completed
    • analysis.fallback
    • jd.lint
  • Summary endpoint:
    • GET /api/analytics/summary