Most AI tasks no longer need a frontier model Read launch post

Leave 32% less personal data exposed than AWS Comprehend, 79% cheaper

Hide names, account numbers, addresses and customer IDs in chats, tickets and emails before the text reaches an LLM, a log or a vendor. SIE, an open-source inference engine, runs two open models, GLiNER PII and NuNER Zero, behind one API call.

SIE GLiNER PII and NuNER Zero

All personal data masked
Payment confirmation
Transaction ID: ID
Date: 08/12/2022
Time: 14:36:51 GMT

Payer:
Name: name
Customer ID: customer ID

Payee:
Name: name
Address: address

Transaction Amount: £150.99

Personal-data detectors leave IDs and names readable

AWS Comprehend

Leaves the employee ID and a name readable
Support chat log
| date time date time | Employee ID: O4878342 | Sure, Maya. I can see you're our valued customer with the employee ID O4878342. Now, to track your order, I just need your order number. |

OpenAI Privacy Filter

Leaves the customer's name readable
Email
Subject: Exclusive Offers Just For You, Hugh!

Dear Hugh,

We hope this email finds you well. We're excited to bring you some exclusive offers tailored just for you!

Masks more than AWS Comprehend, 22x faster than GPT-6 Luna

Personal data masked
660 documents ↑
GPT-6.1 Sol
GPT-6.1 Sol 95.7%
GPT-6 Luna (high reasoning)
GPT-6 Luna (high reasoning) 94.7%
Claude Haiku 5.5
Claude Haiku 5.5 94.4%
SIE GLiNER PII and NuNER Zero
SIE GLiNER PII and NuNER Zero 90.9%
AWS Comprehend
AWS Comprehend 84.2%
OpenAI Privacy Filter
OpenAI Privacy Filter 69.7%
Time per document
median ↓
SIE GLiNER PII and NuNER Zero
61 ms SIE GLiNER PII and NuNER Zero
GPT-6 Luna (no reasoning)
GPT-6 Luna (no reasoning) 1.39 s
Cost per 1M documents
USD ↓
OpenAI Privacy Filter
$23 OpenAI Privacy Filter
SIE GLiNER PII and NuNER Zero
$73 SIE GLiNER PII and NuNER Zero
Claude Haiku 5.5
$188 Claude Haiku 5.5
AWS Comprehend
$351 AWS Comprehend
GPT-6 Luna (high reasoning)
$352 GPT-6 Luna (high reasoning)
GPT-6.1 Sol
GPT-6.1 Sol $2,487
Tested
660 synthetic financial documents, 1,792 pieces of personal data
Scored
A piece counts when every letter and digit is hidden; punctuation may stay readable
Prices
LLM, AWS and Privacy Filter GPU list prices; SIE's Serverless rate
Timing
SIE timed on a GPU server with the client alongside; providers over their public APIs

Send text, get every span to mask

from sie_sdk import SIEClient
​
client = SIEClient(api_key="sk-sie-…")
​
result = client.extract(
"modelsuperlinked/pii-redact",
{"text": "text{"date_time": "1978-03-29 17:28:13", "name": "Emma A. Platini", "street_address": "19325 John Motorway, Apt. 488"} {"date_time": "2022-01-02 14:35:18", "name": "John D. Smith", "street_address": "456 Oakwood Avenue, Unit 3C"} {"date_time": "2021-12-15 09:19:21", "name": "Alex N. Thompson", "street_address": "334 King's Cross, Flat 15B"}"},
)
for span in result["entities"]:
print(span["label"], span["text"])
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const result = await client.extract(
  'superlinked/pii-redact',
  { text: "{\"date_time\": \"1978-03-29 17:28:13\", \"name\": \"Emma A. Platini\", \"street_address\": \"19325 John Motorway, Apt. 488\"}\n{\"date_time\": \"2022-01-02 14:35:18\", \"name\": \"John D. Smith\", \"street_address\": \"456 Oakwood Avenue, Unit 3C\"}\n{\"date_time\": \"2021-12-15 09:19:21\", \"name\": \"Alex N. Thompson\", \"street_address\": \"334 King's Cross, Flat 15B\"}" },
  { labels: [] }, // the model's default types
);
console.log(result.entities);
curl https://api.superlinked.com/v1/extract/superlinked%2Fpii-redact \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"items\":[{\"text\":\"{\\\"date_time\\\": \\\"1978-03-29 17:28:13\\\", \\\"name\\\": \\\"Emma A. Platini\\\", \\\"street_address\\\": \\\"19325 John Motorway, Apt. 488\\\"}\\n{\\\"date_time\\\": \\\"2022-01-02 14:35:18\\\", \\\"name\\\": \\\"John D. Smith\\\", \\\"street_address\\\": \\\"456 Oakwood Avenue, Unit 3C\\\"}\\n{\\\"date_time\\\": \\\"2021-12-15 09:19:21\\\", \\\"name\\\": \\\"Alex N. Thompson\\\", \\\"street_address\\\": \\\"334 King's Cross, Flat 15B\\\"}\"}]}"
Build the "Find personal data to mask" 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: superlinked/pii-redact (SIE primitive: /extract). Keep the model id configurable.

Task
- Input: a block of text.
- Behaviour: return the spans of personal data found, each with its type and character offsets; my code masks them.
- 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

entities · 6start–end

  • person Emma A. Platini 46–61
  • street address 19325 John Motorway, Apt. 488 83–112
  • person John D. Smith 161–174
  • street address 456 Oakwood Avenue, Unit 3C 196–223
  • person Alex N. Thompson 272–288
  • street address 334 King's Cross, Flat 15B 310–336

masked · 6

{"date_time": "1978-03-29 17:28:13", "name": "name", "street_address": "address"}
{"date_time": "2022-01-02 14:35:18", "name": "name", "street_address": "address"}
{"date_time": "2021-12-15 09:19:21", "name": "name", "street_address": "address"}

Mask personal data 79% cheaper than AWS Comprehend

Self-hosted (Kubernetes)

Your data stays in your cloud, backed by our engineers.

  • Terraform modules for your cloud
  • Apache-2.0, same engine as Serverless
  • GPU workers scale to zero between jobs
  • Separate worker pools for each tenant
Agent prompt Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Google Cloud project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Azure subscription with the superlinked/sie/azure Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Alibaba Cloud account with the superlinked/sie/alicloud Terraform module. Docs: superlinked.com/docs/deployment.

Run locally

The open-source server on your own machine.

  • Runs on your NVIDIA GPU
  • One container, no cluster
  • Process your data fully offline
  • Same SDK and model IDs as Serverless
docker run --gpus all -p 8080:8080 ghcr.io/superlinked/sie-server:latest-cuda12-default

Switch to SIE in 5 minutes

import boto3

comprehend = boto3.client("comprehend")


def find(text):
    found = comprehend.detect_pii_entities(
        Text=text, LanguageCode="en"
    )
    return [
        (e["BeginOffset"], e["EndOffset"])
        for e in found["Entities"]
    ]
from presidio_analyzer import AnalyzerEngine

analyzer = AnalyzerEngine()


def find(text):
    found = analyzer.analyze(text=text, language="en")
    return [(e.start, e.end) for e in found]
SIE
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")


def find(text):
    found = client.extract(
        "superlinked/⁠pii‑redact",
        {"text": text},
    )
    return [(e["start"], e["end"]) for e in found["entities"]]
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")


def find(text):
    found = client.extract(
        "superlinked/⁠pii‑redact",
        {"text": text},
    )
    return [(e["start"], e["end"]) for e in found["entities"]]

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.