Why did we open-source our inference engine? Read the post

Mask personal data before documents reach your agent

Superlinked gives your agent one API to find names, addresses, account numbers and any other data type you name, with the exact character offsets to mask.

Get started
Your request /v1/extract/urchade/gliner_multi_pii-v1

CFPB H-25(B) Closing Disclosure sample

  • person
  • address
  • loan number
  • mortgage insurance case number
Masked at the returned offsets

Closing Disclosure

Settlement Agent
Epsilon Title Co.
Property
address
Sale Price
$180,000
Borrower
person and person , address
Seller
person and person , address
Lender
Ficus Bank
Loan ID #
loan number
Loan Amount
$162,000
Interest Rate
3.875%

8 spans returned with exact offsets

Add your own ID types, like Medicare and claim numbers, without training

View evidence

Mortgage closing disclosure

person · address · loan number · mortgage insurance case number

Property: [ADDRESS]

Borrower: [PERSON] and [PERSON] , [ADDRESS]

Seller: [PERSON] and [PERSON] , [ADDRESS]

Loan ID #: [LOAN NUMBER]

MIC #: 000654321

person
Michael Jones · Mary Stone · Steve Cole · Amy Doe
4
address
456 Somewhere Ave, Anytown, ST 12345 · 123 Anywhere Street, Anytown, ST 12345 · 321 Somewhere Drive, Anytown, ST 12345
3
loan number
123456789
1
mortgage insurance case number
000654321
Missed
CFPB H-25(B) Closing Disclosure sample

Medicare claim notice

person · address · phone number · medicare number · claim number

Notice for [PERSON]

Medicare Number: [MEDICARE NUMBER]

[PERSON] , [PHONE NUMBER]

Looking Glass Eye Center PA, [ADDRESS]

Total for Claim # [CLAIM NUMBER] : $211.56 charged, $107.97 approved, $86.38 paid, $90.15 maximum you may be billed.

person
Jennifer Washington · Craig I. Secosan, M.D. ×2
3
phone number
(555) 555-1234
1
medicare number
1A23BC4DE56
1
claim number
02-10195-592-390
1
address
1888 Medical Park Dr, Suite C, Brevard, NC 28712-4187
Practice address, also masked
CMS sample Part B Medicare Summary Notice

German health insurance claim

person · address · iban · medical condition

Name: [PERSON]

Straße: 0 Storgatan

Behandelnder Arzt/Klinik: [PERSON] , Onkologische Praxis, [ADDRESS]

Die Patientin [PERSON] erhielt eine Chemotherapie zur Behandlung von [MEDICAL CONDITION] . Die Behandlung umfasste sechs Sitzungen im Abstand von zwei Wochen. Zusätzlich erhielt die Patientin eine Strahlentherapie, um das Wiederauftreten des Krebses zu verhindern. Die Strahlentherapie wurde über einen Zeitraum von vier Wochen durchgeführt.

Gesamtkosten: 13.000 EUR

IBAN: [IBAN]

person
Madelief de Jong-van de Berg ×2 · Dr. med. Sarah Nowak
3
iban
GB86KXOV44029657180910
1
medical condition
Brustkrebs
1
address
Musterstraße 1, 12345 Berlin
Practice address, also masked
address
0 Storgatan
Missed
Gretel synthetic PII finance dataset, Apache 2.0

Policyholder letter

person · account number · password · address · phone number

Dear [PERSON] ,

Your policy number is GPTZ91601562274667. Please keep this number confidential and secure.

For your reference, your street address is [ADDRESS] .

To access your account, please use the following password: [PASSWORD]

Should you have any questions or concerns, please don's hesitate to contact us at [PHONE NUMBER] .

person
Jordan Mathew Miller
1
password
wdpfe*Lv0%R%^xV0@(
1
address
64781 Hess Villages, Apt. 487
1
phone number
1-800-123-4567
1
account number
GPTZ91601562274667
Missed
Gretel synthetic PII finance dataset, Apache 2.0

Splitting a long chat lifts its masked spans from 2 to 8 of 11

person · address · bank identifier code · employee id

The model reads 384 words at a time, so a second request puts the tail of this 564-word support chat in front of it.

One request
2 of 11 masked
Split in two
8 of 11 masked

Personal data the second request masked, 6 of the 7 spans past word 384:

  • Paul person
  • Paul Sanders person
  • Nm-80877 employee id
  • 76273 Reginald Forks, 39502, Michellebury address
Gretel synthetic PII finance dataset, Apache 2.0

You name the ID types this document uses, Medicare and claim and loan numbers included, and get back the exact character offsets to mask. No training set, no model per type, and the surrounding text stays readable.

23 of 25 masks confirmed by the published gold spans in six benchmark documents

0 of 29 amounts on this page were masked, so the figures stay readable

26 of 45 published PII spans masked by one request per document, before any splitting

The two masks outside the gold spans cover a doctor’s practice address and a payment card’s last four digits. Neither benchmark annotates those values, so neither set can confirm or refute them. Some of what one request misses sits past the model’s 384-word window, and splitting the document recovers it: the long support chat above holds 11 published spans, 7 of them past that window, and one request masks 2 where two mask 8.

Know exactly which characters to remove before you store or send

View on GitHub
from sie_sdk import SIEClient
client = SIEClient(
api_key="sk-sie-…",
base_url="https://api.superlinked.com",
)
result = client.extract(
"modelurchade/gliner_multi_pii-v1",
{"text": "textNotice for Jennifer Washington Medicare Number: 1A23BC4DE56 Date of This Notice: September 13, 2020 Suppliers with Claims This Period: May 9, 2020, Lincare Inc. Lincare Inc., (555) 555-1234 PO BOX 996, Blue Springs, MO 64013-0996 Ordered by John K Whalen May 9, 2020: 1 portable gaseous oxygen system, rental; includes portable container, regulator, flowmeter, humidifie (E0431-RR) Rental. Item/Service Approved? Yes. Amount Supplier Charged: $117.61. Medicare-Approved Amount: $28.77. Amount Medicare Paid: $23.02. Maximum You May Be Billed: $5.75. Total for Claim #10334829489000"},
labels=[
"PII typeperson",
"PII typeaddress",
"PII typephone number",
"PII typemedicare number",
"PII typeclaim number",
],
)
for span in result["entities"]:
print(span["label"], span["text"])
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient('https://api.superlinked.com', {
  apiKey: 'sk-sie-…',
});

const result = await client.extract(
  'urchade/gliner_multi_pii-v1',
  { text: "Notice for Jennifer Washington\nMedicare Number: 1A23BC4DE56\nDate of This Notice: September 13, 2020\nSuppliers with Claims This Period: May 9, 2020, Lincare Inc.\nLincare Inc., (555) 555-1234\nPO BOX 996, Blue Springs, MO 64013-0996\nOrdered by John K Whalen\nMay 9, 2020: 1 portable gaseous oxygen system, rental; includes portable container, regulator, flowmeter, humidifie (E0431-RR) Rental. Item/Service Approved? Yes. Amount Supplier Charged: $117.61. Medicare-Approved Amount: $28.77. Amount Medicare Paid: $23.02. Maximum You May Be Billed: $5.75.\nTotal for Claim #10334829489000" },
  { labels: ["person","address","phone number","medicare number","claim number"] },
);
console.log(result.entities);
curl https://api.superlinked.com/v1/extract/urchade%2Fgliner_multi_pii-v1 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"Notice for Jennifer Washington\\nMedicare Number: 1A23BC4DE56\\nDate of This Notice: September 13, 2020\\nSuppliers with Claims This Period: May 9, 2020, Lincare Inc.\\nLincare Inc., (555) 555-1234\\nPO BOX 996, Blue Springs, MO 64013-0996\\nOrdered by John K Whalen\\nMay 9, 2020: 1 portable gaseous oxygen system, rental; includes portable container, regulator, flowmeter, humidifie (E0431-RR) Rental. Item/Service Approved? Yes. Amount Supplier Charged: \$117.61. Medicare-Approved Amount: \$28.77. Amount Medicare Paid: \$23.02. Maximum You May Be Billed: \$5.75.\\nTotal for Claim #10334829489000\"}],\"params\":{\"labels\":[\"person\",\"address\",\"phone number\",\"medicare number\",\"claim number\"]}}"
Build the "Redact (PII)" capability into my app using the Superlinked Inference Engine (SIE).

Context
- SIE is an OpenAI-style inference API. Python SDK: `from sie_sdk import SIEClient`; TypeScript: `@superlinked/sie-sdk`.
- Base URL: https://api.superlinked.com (or my regional endpoint). Auth: Bearer key from env `SIE_API_KEY` (never hard-code it).
- Model: urchade/gliner_multi_pii-v1 (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: a block of text.
- Behaviour: return the text with personal data masked, plus the list of entities found
- Call the selected SIE primitive once per request and map the response into your domain type.

Deliverables
- A typed client wrapper, an application-level function for this task, error handling for timeouts/empty input, and unit tests with a stubbed client.
- Wire it into my existing stack (ask me which framework if unclear) and add a short usage example.
Output

Notice for [PERSON] Medicare Number: [MEDICARE NUMBER] Date of This Notice: September 13, 2020 Suppliers with Claims This Period: May 9, 2020, Lincare Inc. Lincare Inc., [PHONE NUMBER] [ADDRESS] Ordered by [PERSON] May 9, 2020: 1 portable gaseous oxygen system, rental; includes portable container, regulator, flowmeter, humidifie (E0431-RR) Rental. Item/Service Approved? Yes. Amount Supplier Charged: $117.61. Medicare-Approved Amount: $28.77. Amount Medicare Paid: $23.02. Maximum You May Be Billed: $5.75. Total for Claim #[CLAIM NUMBER]

Jennifer Washingtonperson1A23BC4DE56medicare number(555) 555-1234phone numberPO BOX 996, Blue Springs, MO 64013-0996addressJohn K Whalenperson10334829489000claim number
  • Character offsets, so masking needs no regex
  • Name any type per request, no fine-tuning

Redaction quality and latency

PRICE
$ / 1M input tokens
$0.0907 SIE GLiNER PII
$0.124 SIE NuNER
$0.2 OpenAI GPT-5.4 nano
$0.3 Google Gemini 3.5 Flash-Lite
OpenAI GPT-5.4 mini $0.75
Anthropic Claude Haiku 4.5 $1
QUALITY
F1 · CoNLL-03
SIE NuNER 0.61
0.59
0.58
SIE GLiNER PII 0.54
0.52
0.51
LATENCY
p50 ms
SIE GLiNER PII 95ms
110ms
120ms
SIE NuNER 140ms
155ms
170ms

Deploy your way

Self-host with K8s

Easy & scalable deployment in your own cloud.

  • Terraform to your cloud in minutes
  • Apache-2.0, same engine as Cloud
  • Scales to zero, no bill between jobs
  • Per-tenant pools, no noisy neighbors
Agent prompt
Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deploymentDeploy SIE to our GCP project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deploymentDeploy SIE to our Azure AKS cluster via helm install. Requirements: superlinked.com/docs/deployment
Deploy guide

Run locally

Run the same models on your own machine.

  • Runs on NVIDIA GPU or Apple Silicon
  • One command, no Docker or cluster
  • All 100+ Cloud models, fully offline
  • Same SDK and IDs, no code changes
pip install "sie-server[local]" && sie-server servepip install "sie-server[local]" && sie-server serve --device cuda
Quickstart

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.