Kellen Poole ← All projects

Front-end · client-side · privacy

Resume Shock

Turn a PDF résumé into a clean, shareable web résumé — parsed entirely in your browser. No account, no upload, no server.

Live demo · running now

Started March 2026 · self-directed

The problem

A PDF résumé is hard to share attractively and slow to tailor. Most "résumé website" tools make you create an account and upload your document to their servers — a privacy trade-off many job seekers don't want.

How it works

  1. Parse the PDF locally with PDF.js — the file never leaves your machine.Heuristics pull out name, contact, experience, education, skills, and projects.
  2. Render a themed visual résumé with light/dark styles.
  3. Share with a link, not a server. The résumé data is compressed into the URL hash, so the link is the résumé — browsers never send it to a server.

The story · STAR

S

Situation

I had a PDF résumé that was hard to share nicely, and the tools that make résumé pages all wanted an account and an upload.

T

Task

Build a tool that turns a PDF into a shareable web résumé entirely on the user's side, so the data never leaves the browser.

A

Action

Used PDF.js to parse in-browser and wrote heuristics to extract each section; rendered a themed résumé; and made sharing work with zero backend by compressing the data into the URL hash. I also code-split the 2 MB PDF engine to cut the initial load ~54% and hardened the share button with a clipboard fallback.

R

A working, privacy-first app: "See Example" (or upload) → visual résumé → a share link that reconstructs the page on any machine with no server. Production build verified; initial JS bundle reduced from ~254 KB to ~118 KB gzip.

Result

Try it in 20 seconds

  1. Open the live demo.resume-shock-demo-kp.netlify.app
  2. Click "See Example" — loads a fictional "Jane Smith" résumé, no upload needed.
  3. Hit "Share Link" — it copies a self-contained URL that rebuilds the résumé anywhere. (Or drop in your own PDF.)

Built with

ReactVitePDF.jslz-stringTailwindFramer Motion

Status & honest limitations

Working v1, deployed. The full parse → render → share/download workflow runs in the browser.

  • Parsing is heuristic — unusual layouts (multi-column, scanned PDFs) may parse imperfectly.
  • No backend by design — shared data lives only in the URL hash; the sample data is fictional.

Self-directed project, built with AI-assisted development. Status is accurate, not aspirational.