01Case study · Privacy

Our own project: software we built and operate ourselves.

Paste Shield

It strips names, emails, keys and passwords out of text before you paste it into ChatGPT. Everything runs in your browser, on a language model (LLM) driven by the graphics card you already own. No text ever reaches a server.

Open the live demoGet my free audit
Paste Shield: removing personal data from text in the browserLive demo
02Challenge

Every paste into ChatGPT is a potential leak

You paste a snippet of an email, a log, or a config into a model, and you easily leave names, addresses, account numbers, API keys and passwords behind. Tools that clean text on a server only move the leak somewhere else. So we built a filter that removes this data before it leaves the browser tab: no install, no account, no text sent to an external API.

03How it works

Three detection layers, all on device

LLM (WebGPU)

Data with no fixed format: names, emails, addresses, phones, dates, account numbers. Understands sentence context, runs in a Web Worker (@huggingface/transformers), WASM as a fallback.

Regex network

Structured data: API keys, tokens, JWTs, private keys, IBANs, cards, passwords. Runs instantly, before the model even loads, because a leaked key is catastrophic.

Your always-hide list

Words only you know are sensitive: client names, project codenames. The model can't infer them.

Hits from all three layers merge into one list, with no confidence cutoff: a miss is a leak, so over-redaction is the safe side of the error. The model runs fail-closed: a load error blocks copying until you reload the model.

04Privacy

Zero requests, not a claim, an architecture

0

network requests carrying your text: it never leaves your browser, so there is nothing on a server to steal.

~2.6k

lines of code: the entire codebase fits in a single security audit.

fail-closed

a model load error blocks copying: even a failure never lets unprotected text out.

Cross-origin isolation headers (COOP/COEP/CORP) required for the model runtime are set in next.config.ts and vercel.json. The app ships no analytics and no telemetry of any kind.

Check these numbers yourself in the live demo
05Stack

Every choice has a reason

Framework
Next.js 16 (App Router) + React 19
Client-side rendering, zero server requests to send
LLM
@huggingface/transformers v4, ONNX Runtime
WebGPU with a WASM fallback, runtime self-hosted in public/ort
Structured detection
Regexes in a Web Worker
Doesn't block the main thread, works before the model finishes loading
Offline
Service worker
Caches the app shell and model weights after the first fetch
06Contact

Got a nagging problem? Describe it, I'll code the rest.

One sentence is enough to start. Tell me what's bothering you. Within 48 hours I come back with a clear answer: can it be done, and at what fixed price.

No obligation: describing your problem costs nothing
Free intro audit: you keep the report either way
Fixed price agreed upfront or we don't start: no surprises on the invoice
A limited number of projects at a time, each with full attention: reach out early if the deadline matters
We reply within 48 hours