All projects

Case Studies / Document Workflow Lab

PDFLover

A document workspace for people who need to merge, redact, or make PDFs searchable while understanding where processing happens and being able to inspect the exported result.

Public status

Public repository - accepted evidence

Personal project with synthetic workflow evidence and public source available below. Processing boundaries and limitations are documented with each example.

Verified delivery

Merge / split
Synthetic export reopened for inspection
Redaction
Synthetic output checked after export
OCR
Synthetic scan processed into searchable output
PDFLover privacy-first document tools dashboard
Public PDFLover dashboard showing its browser-first document workflow.
Project type
Personal project
Period
2026
Development
Active development
State
Public repository - accepted evidence

01 / Problem

PDF work needs clear boundaries and a checkable result.

Routine PDF work should make document processing location and downloadable results clear.

02 / Contribution

I built a workspace that makes the processing path explicit.

Keep supported operations browser-local and expose server-side processing as an explicit path. Inspect exported files rather than treating an interface screenshot as output proof.

Merge/split
Redaction/security
OCR/searchable output

03 / Inspectable synthetic result

Synthetic merge, redaction, and OCR workflows produce downloadable outputs that were reopened and inspected. The captures and files show the documented processing boundaries for those examples.

Verified synthetic workflow evidence

Inspectable outputs, with clear processing boundaries.

Evidence package accepted on 15 September 2026. It contains synthetic documents only; captures are Chromium screenshots, not production or physical-device proof.

Merge and split

Two synthetic PDFs are queued, merged, then inspected again as a downloaded PDF. The 390px capture shows the same populated workflow at a narrow viewport.

Browser-local document processing. The captures show real candidate downloads generated from synthetic inputs.

Download the synthetic merged PDF
PDFLover merge queue with two synthetic PDF files ready to merge
Generated merged PDF reopened in the PDFLover viewer
PDFLover merge queue at a 390 pixel viewport

Redaction output

A synthetic marker is selected, then the resulting PDF is reopened after the server raster-rebuild redaction flow.

The selection image is not proof of removal. The output package verified that original text and PDF objects were removed; raster rebuilding loses the original text, forms, and vector content.

Download the synthetic redacted PDF
Synthetic redaction target selected in PDFLover before export
Generated redacted PDF reopened in the PDFLover viewer

OCR and searchable output

An image-only synthetic English scan is used for browser OCR text extraction and for a separately inspected server-generated searchable PDF.

Browser OCR used an explicitly preloaded local English model. The searchable PDF is server output for this simple English synthetic document; this does not claim multilingual, default offline, client-document, or production behavior.

Download the synthetic searchable PDF
Image-only synthetic English scan selected for PDFLover OCR
Completed PDFLover browser OCR text extraction from the synthetic English scan
Server-generated searchable PDF reopened in the PDFLover viewer

04 / Workflow

Before

  • Upload documents without a clear processing boundary
  • Repeat merging, redaction and OCR in disconnected tools

With the system

  • Merge/split: select local PDFs, arrange pages and inspect the exported document
  • Redaction/security: apply the selected operation and independently inspect exported content before sharing
  • OCR/searchable output: process a scanned document and inspect extracted text and search behavior

05 / Evidence notes, boundaries, and provenance

Architecture

  • React/Vite frontend with a Fastify backend
  • Browser-local processing handles supported operations without uploading document bytes
  • Static model downloads fetch processing resources; they are distinct from uploading a document
  • Explicit server-side processing sends documents to the backend for operations that require it

Accepted evidence and limitations

  • Accepted repository evidence dated 5 September 2026 at 9e3d858: 463 JS/TS tests and nine Python tests
  • Synthetic merge/split, redaction and OCR packages accepted 15 September 2026; captures and outputs are inspectable
  • These historical counts are not a test run from this portfolio candidate or a production claim

Tradeoffs

  • Local processing depends on browser resources and operation support
  • Model downloads require resource availability even when document processing is local
  • An exported file and its inspection results are required before claiming a demonstrated output

Why it matters

  • Makes document handling boundaries explicit
  • Connects document operations to inspectable exports

What this proves

The recorded implementation separates browser processing, resource downloads and explicit backend processing in a practical document workspace.