Scan on-device
Gemini Nano reads the document inside your browser and returns structured entities: names, IDs, accounts, addresses, amounts, dates. Zero network traffic while it works.
On-device first · Nothing raw leaves this page
Redacta scans contracts, payslips and medical letters for personal data entirely on your device, using Gemini Nano through Firebase AI Logic. You review and approve every redaction. Only then — and only the redacted text — may a cloud model see it for deeper analysis.
What Redacta does
Gemini Nano reads the document inside your browser and returns structured entities: names, IDs, accounts, addresses, amounts, dates. Zero network traffic while it works.
Every span is listed with its type, confidence and sensitivity. Critical and high spans start redacted; you can keep or redact any span individually before anything else happens.
Every inference step is recorded with where it ran, what it carried, and a fingerprint of the payload. On-device rows can be cross-checked in the Network tab.
The panels above show the same components the studio uses, with invented data. The studio above does this live.
The studio
Gemini Nano, running inside Chrome via the Prompt API. The scan lane is created with InferenceMode.ONLY_ON_DEVICE: if Nano cannot run, the scan refuses — a raw document is never re-routed to the cloud as a fallback.
Model state has not been prepared yet.
Detecting Firebase AI Logic…
The scan is a single-turn structured request: document in, entity JSON out (schema in data/schema.json). It works with the network cable pulled.
Your document will appear here with every sensitive span highlighted in place, exactly where the scanner found it.
Sensitivity score
Run a scan to see the on-device summary and the redaction plan. You stay in control: every span can be kept or redacted individually before anything leaves this page.
No entities yet.
The exact text a cloud model is allowed to see will appear here — nothing more, nothing hidden.
Boundary rule: the analysis function accepts this artefact only — analyseRedacted({ redactedText, documentType, entityStats }). Raw text has no path into it.
Deep reasoning the small on-device model cannot do: what the document commits each side to, clauses that deserve a second look, and every dated obligation. It runs on the redacted text above — verify the payload yourself before sending:
Analysis will appear here after the redacted document is sent.
| Time | Step | Source | Mode | Latency | Payload | Fingerprint |
|---|---|---|---|---|---|---|
| No inference yet. The ledger fills as you work — and every on-device row can be cross-checked in your browser's Network tab: no request leaves the machine. | ||||||
How Redacta works
On a user action, Redacta calls initializeDeviceModel() so Chrome downloads or confirms Gemini Nano. Download progress is a first-class state in the interface, never hidden.
The document is sent to a model created with ONLY_ON_DEVICE and a JSON schema constraint. It returns structured entities — names, IDs, accounts, addresses, amounts, dates — plus a sensitivity score and a local summary. This step produces zero network traffic.
Every span is highlighted in place and listed with its type, confidence and sensitivity. Critical and high spans are redacted by default; you can keep or redact any span individually. The redacted document is shown verbatim before anything else happens.
The analysis model is constructed from the redacted artefact. Its function signature accepts that artefact and nothing else, so raw personal data has no code path to the cloud. Each response reports its own inferenceSource, which the privacy ledger records next to the payload length and fingerprint.
Redacta is a redaction assistant, not a legal guarantee: a human reviews every span before a document is shared, and unusual documents can contain data types outside the extraction schema. On-device inference requires Chrome on desktop with Gemini Nano available; on any other browser the scan lane refuses rather than degrading to a cloud upload. This prototype build runs its inference in clearly labelled simulation mode until a Firebase project is configured; the production module (js/hybrid.js) implements the same flow against the real Firebase AI Logic SDK.
Why Redacta
Questions
No. The scan runs on-device and produces no network traffic. The only thing that can ever be sent is the redacted artefact, and only after you press the analyse button yourself.
The scan lane refuses. It is created with ONLY_ON_DEVICE, so a missing model is a visible refusal, never a silent fallback that uploads your document to the cloud instead.
SIM marks a simulated inference step. This prototype build runs its inference in clearly labelled simulation mode; every simulated row says SIM in the ledger, and the production module implements the same flow against the real Firebase AI Logic SDK.
Yes, and that is your explicit choice: spans you keep stay in the text. The payload audit tells kept spans apart from real leaks, and the payload box shows the fingerprint before anything is sent.
No. Redacta is a redaction assistant: a human reviews every span before a document is shared, and unusual documents can contain data types outside the extraction schema.
Exactly the redacted text shown in panel 4, plus the document type and entity counts. The payload box shows its length, its SHA-256 fingerprint, and whether it contains raw personal data, before you send it.
Fake data, real flow. Watch the scan, approve the redactions, and check the ledger before anything reaches the cloud.
Open the studio