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.

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
Exhibit A · Product interface capturePublic PDFLover dashboard showing its browser-first document workflow.

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.

Supported operations run in the browser, so the document never leaves the device; operations that need the server use an explicit, visible server path. Every example below was checked by reopening the exported file, not just the screen.

  • Merge/split
  • Redaction/security
  • OCR/searchable output

03 / Checked results

Merge, redaction, and OCR were run on synthetic documents, and each exported file was reopened and checked. The captures and files below show the results.

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.

Processing boundary

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
Exhibit E1-a
Generated merged PDF reopened in the PDFLover viewer
Exhibit E1-b
PDFLover merge queue at a 390 pixel viewport
Exhibit E1-c

Redaction output

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

Processing boundary

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
Exhibit E2-a
Generated redacted PDF reopened in the PDFLover viewer
Exhibit E2-b

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.

Processing boundary

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
Exhibit E3-a
Completed PDFLover browser OCR text extraction from the synthetic English scan
Exhibit E3-b
Server-generated searchable PDF reopened in the PDFLover viewer
Exhibit E3-c

04 / Workflow

Before

  • Upload documents without knowing where they are processed
  • Repeat merging, redaction, and OCR in separate tools

With the system

  1. Merge/split: pick local PDFs, arrange pages, and export
  2. Redaction: redact content and check the exported file before sharing
  3. OCR: turn a scanned document into searchable text

05 / Architecture and tradeoffs

Architecture

  • React/Vite frontend with a Fastify backend
  • Browser-side processing for supported operations: no document upload
  • OCR and processing models are downloaded as static files, separate from documents
  • Explicit server-side path for operations that need the backend

Evidence

  • 463 JS/TS tests and 9 Python tests at commit 9e3d858 (5 Sep 2026)
  • Merge/split, redaction, and OCR outputs exported and inspected with synthetic documents (15 Sep 2026)

Tradeoffs

  • Browser processing depends on the device and supported operations
  • Models must be downloadable even when processing is local

Why it matters

  • Makes it clear where documents are processed
  • Gives users an output they can verify

What this proves

I can build a practical document tool with a clear split between browser processing, model downloads, and backend processing, backed by a large automated test suite.

Signed · Mohamed Abdelwahab