How it stays private

The image never leaves. Here's exactly how.

No hand-waving. This page is the whole mechanism — including the parts we can't promise — so you can decide whether it's right for your scan.

  1. On your device

    OCR & redaction

    A WebAssembly OCR engine reads the text off your photo entirely in your tab — the image is never uploaded. A tokeniser and a multilingual name model then find names, emails, phones, postal addresses, cards, national IDs, IPs and reference numbers in that text, and swap a realistic surrogate over each. This step makes zero network connections — watch the scanline stay flat.

  2. Leaves your device (optional)

    Surrogate-only relay

    Only if you press "Ask AI about this scan" does anything leave the browser — the cloaked text is sent to an AI model, through the CloakAPI gateway, carrying a cryptographic pre-tokenisation proof (a MAC over the exact bytes). The gateway relays those bytes verbatim. Your real values, and the map back, are never in the request.

  3. Back on your device

    Re-identify & receipt

    The answer returns still carrying the surrogates. cloak-scan maps them back to your real values locally, then signs a content-free receipt: category counts, the engine's identity, the SHA-256 of the exact bytes that egressed, and the claims raw_bytes_egressed: 0 and raw_image_bytes_egressed: 0.

What is guaranteed

  • A strict Content-Security-Policy hard-limits every network connection to this origin plus the CloakAPI gateway — nothing else can be contacted, by construction.
  • OCR and cloaking run before any relay and make no network calls. The raw image bytes are never included in any request this app makes, ever — the "ask" relay is fail-closed: if it can't obtain the privacy proof, nothing is sent.
  • Only surrogate text is ever transmitted; the re-identification map stays in your browser's memory.
  • Nothing you scan is stored on any server of ours — there is no server behind this site, only the static files and the gateway relay.
  • Every ask can mint an offline-verifiable receipt you (or anyone you show it to) can check without trusting us.

What we don't claim

  • OCR reads what a scan clearly shows, not what a person could infer. Blurry photos, unusual fonts and handwriting reduce accuracy — always check the extracted text before asking a question about it.
  • Detection is very good, not omniscient. An unusual identifier the models don't recognise stays in the text — always glance at the "preview what leaves" view before you ask.
  • English is the only OCR language bundled today (see the honest scope note in BUILD-READY). PDFs aren't read yet — export a page as an image in the meantime.
  • Surrogates are realistic, gender- and locale-matched where the engine can; for scripts it can't morph, it falls back to a safe neutral stand-in.
  • If the AI model re-spells a surrogate, that altered token simply stays as a safe placeholder in the output — never your real value.
  • The "ask" step itself is performed by a third-party model via the gateway. It sees fluent surrogate-bearing text, and it is billed. That's the one thing that leaves — on purpose, and only when you ask.

Verify a receipt

Paste any cloak-scan receipt JSON to check its signature offline. This runs the same on-device verification a recipient would — no server involved.