use cases · Anonymisation

Strip the identity, keep the meaning

A dataset you cannot share is a dataset you cannot use twice. Detect the personal data in documents, transcripts and records, replace it consistently, and keep the text useful for the analysis you wanted to run on it.

how it works

How it is built.

Three steps, with the component that does the work in each one.

step 01

Detect, not just pattern-match

deepseek-v4-flash

A regular expression finds a phone number. It does not find "the patient from the Tuesday clinic whose brother works here", which identifies a person just as well. Reading the sentence is the part that needs a model.

step 02

Replace consistently

pseudonym map

The same person becomes the same token everywhere in the document, so the text still makes sense and the analysis still works. Consistency is what separates a usable pseudonymised file from a page full of black boxes.

step 03

Check the output, twice

qwen-3.6

A second pass over the redacted text looks for what the first one left. This step is not optional: the cost of a miss here is a notification to a supervisory authority, and a sampling review does not find a miss in document four hundred.

drop-in

Change one line. Keep your code.

Point the OpenAI SDK, or LangChain, LlamaIndex, your own pipeline, at Helmcode. Same calls, same shapes, private models on EU infrastructure.

read_the_docs
redact.py
from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://api.helmcode.com/v1",  # one line changes
)

# 1 · find what identifies a person, not just a pattern
found = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": FIND_IDENTIFIERS},
        {"role": "user", "content": document},
    ],
    response_format={"type": "json_object"},
)

# 2 · same person, same token, everywhere in the file
clean = apply_pseudonyms(document, found)

# 3 · a second pass over the redacted text
check = client.chat.completions.create(
    model="qwen-3.6",
    messages=[{"role": "user", "content": clean}],
)

why here

Why on Helmcode.

What changes when you run it on open models, on infrastructure you control.

01

It has to run where the raw data already is

Anonymisation is the one job whose input is by definition the unprotected version. Sending that to a third-party API to have it cleaned is the problem you were trying to solve, which is why this case usually runs on-premise.

02

Volume is the whole point

Nobody anonymises ten documents, they anonymise an archive. A flat rate means the size of the archive stops being the reason the project never starts.

03

What we do not claim

Redaction reduces risk, it does not automatically make data anonymous in the legal sense: that is an assessment about re-identification risk, and it belongs to your data protection officer. What infrastructure gives you is a process you can document and audit.

industries

Where it is used.

The sectors where this case has traction, each with its own page and its own regulation.

all_industries →

In production at

// faq

Anonymisation, answered.

What data protection and clinical teams ask before letting a model touch the raw version.

Can we keep the data useful after redacting it?

That is what consistent pseudonyms are for. If every mention of one person maps to the same token, you can still count, group and follow a case through a file. Blanket masking destroys exactly the structure you needed.

What about scanned documents?

A multimodal model reads the page image directly, so a scan does not need a separate OCR stage before it can be processed. Handwriting is the hard case and it is worth measuring on your own material before committing.

Does the model keep a copy of what it saw?

No. Prompts and outputs are never stored and never used for training. On the on-premise deployment the question does not arise, because nothing leaves your network in the first place.

// get started

START BURNING TOKENS

Skip the AI infra work. Deploy your first private inference endpoint today.

Flat rate. EU data. OpenAI API compatible.