Skip to content

M5-10 PDF Verification Report Generation

Milestone: M5 — Disclosure and Verification SOW Reference: FR3, INT7 Requirement Clarity: ✅ Clear — concrete rules added 2026-08-26 Dev Status: ❌ Not started — no PDF generation library exists anywhere in app/backend/package.json; the pdfS3Key column on the VerificationReport entity is currently unused dead schema

Overview

Let a Staffing Company download and save a PDF report of a verification outcome, for compliance/audit purposes — covering credentials within the whole Velocity ecosystem, not just those issued/verified via this platform.

2026-08-26, from Velocity's CV Capture spec — concrete rules, not previously specified anywhere: - One credential and its verification checks per page — not one combined table for all disclosed credentials. - Printing must be disabled on the rendered/viewed report. - If generation fails, show a clear, visible error. Never render a download link/button with an empty href — a dead-looking-live control is explicitly called out as a failure state to avoid. - The PDF's content must match the on-screen verification results exactly (same checks, same pass/fail state) — this is a testable acceptance criterion, not just a suggestion (see M5-13).

Backend Tasks

  • Add a PDF generation library (pdfkit, puppeteer, or similar) — none currently present
  • Build a PDF report template: one credential + its 6 checks (see M5-09) + timestamp + issuer/credential metadata per page
  • Wire the existing VerificationReport.pdfS3Key column up to actual storage (S3) and generation
  • Per the SOW, note VerifyMyCreds already contains this capability — confirm whether that code can be reused rather than built fresh

Frontend Tasks

  • Add a "Download PDF" action on the verification result view
  • Handle the generation-failure case explicitly — visible error state, disabled/absent button rather than a broken link

Dependencies

Acceptance Criteria

  • PDF report generated
  • PDF is downloadable
  • PDF includes audit evidence (per SOW Appendix 3, FR3 acceptance criteria)

Existing Reference Material

Blockers & Risks

  • Risk: confirm the VerifyMyCreds PDF-generation code-reuse question here too — same underlying uncertainty as M5-08.