Open source
OfflineCV is licensed under Apache 2.0 and developed in the open at github.com/offlinecv/OfflineCV. You can read it, run it, fork it, and reskin it.
Why that matters here specifically
This is a tool you hand your resume to. Every privacy claim on the privacy page is the kind of claim you should not have to take on trust, and public source is what makes it checkable: open the network tab, then open the code, and confirm the two agree. A closed tool making the same claim is asking for something quite different from you.
Run it yourself
The app is static files — no server, no database, no environment to provision. A local build runs the whole product from your own machine.
Requirements: Node.js and npm.
git clone https://github.com/offlinecv/OfflineCV.gitcd OfflineCV && npm installnpm run dev— development servernpm run build— production build intodist/
The dev server runs over HTTPS with a self-signed certificate. That is deliberate: WebGPU is gated behind a secure context, so the on-device AI features need it. Accept the browser warning once.
A build made without a PostHog key contains no analytics at all — the dependency is dynamically imported and is eliminated from the bundle entirely, so it is absent rather than merely disabled. The hosted site at offlinecv.org is built with a key; that difference is described on the privacy page.
Reskin it without forking
Colours are plain CSS custom properties in two layers: a stable semantic vocabulary
(--color-surface-card, --color-content-primary, and so on) and a
swappable file of raw values behind it. The default palette is a generic accessible one,
not a brand. You can override the values from your own stylesheet in the cascade, or point
the build’s token alias at your own file. The component layer has an equivalent
swap seam. The README covers both.
Contributing
Bug reports about parsing are the most valuable contribution, and the most useful ones name a specific PDF shape rather than a general complaint — a two-column template whose dates vanish, a header whose email survives only as a link annotation, an employer line that merges into the title above it.
Please do not attach your real resume to an issue. The repository ships a local
command-line probe that reads a PDF path you give it and prints only to your terminal
— it writes nothing and hardcodes no path — so you can characterise a bug
against your own private file and then report the shape of it. Run it with
npm run fidelity path/to/resume.pdf. Regression tests use synthetic, PII-free
fixtures, and a CI gate enforces that.
- Issues
- README — architecture, telemetry, theming
- Apache 2.0 licence