Nonimo Gateway for UK teams
Nonimo Gateway pseudonymises personal data on your own servers before each AI call and puts it back in the reply. It sits in a container in front of the OpenAI API, and your services need no code changes beyond the base_url.
Summarise the case notes for Hannah Wright and email her at hannah.wright@example.com.
Summarise the case notes for [PERSON_1] and email her at [EMAIL_1].
Dear [PERSON_1], we have reviewed your case and everything is in order.
Dear Hannah Wright, we have reviewed your case and everything is in order.
Getting started
Your services’ code stays untouched: one container on your server and a new base_url.
A container in your data centre or your cloud.
It installs on your servers or in your cloud subscription, alongside your services, and you can run several instances alongside each other.
Your code carries on speaking the OpenAI API. Only the address changes.
The Gateway speaks the OpenAI API. Point your services at it and they carry on calling /v1/chat/completions or /v1/responses, with function calling. Upstream it can be OpenAI or any compatible API.
Personal data leaves as tokens and returns as the real details in the reply.
Every request is checked in full before it goes to your provider: personal data is replaced with tokens and, in the reply, each token is swapped back for its real value. Your services’ AI requests pass through it before they leave your network.
The official OpenAI SDK works without changes; simply point the client at the Gateway:
from openai import OpenAI
# Same client, same key: only base_url changes
client = OpenAI(base_url="http://your-server:8080/v1")
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Summarise the case notes for Hannah Wright."}],
) import OpenAI from "openai";
// Same client, same key: only baseURL changes
const client = new OpenAI({ baseURL: "http://your-server:8080/v1" });
const resp = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Summarise the case notes for Hannah Wright." }],
}); # Your usual request, sent to your own server
curl http://your-server:8080/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Summarise the case notes for Hannah Wright."}]
}' Restored on the way back
Your provider only ever sees tokens; your service receives the reply with the real details, each one back in its place.
Staff chatbot
Summarise the ticket Daniel Hughes[PERSON_1] raised from daniel.hughes@example.com[EMAIL_1].
The ticket from Daniel Hughes[PERSON_1] concerns a VPN log-in fault since Monday. I am emailing daniel.hughes@example.com[EMAIL_1] the steps to reconnect.
Customer service
Draft an email to Charlotte Evans[PERSON_1] (charlotte.evans@example.com[EMAIL_1]) confirming that we have received her paperwork.
Dear Charlotte Evans[PERSON_1], thank you: we can confirm we have received your paperwork. We will write to charlotte.evans@example.com[EMAIL_1] as soon as everything is ready.
Agent with tools
Check the referral status for Amelia Patel[PERSON_1], NHS number 123 456 7890[NHS_NUMBER_1].
find_referral({ "patient": "Amelia Patel[PERSON_1]", "nhs_number": "123 456 7890[NHS_NUMBER_1]" })
Your tool receives the real value; the provider only ever saw the token.
HR
Prepare the new-starter letter for George Clarke[PERSON_1], National Insurance number QQ 12 34 56 C[NINO_1].
Dear George Clarke[PERSON_1], welcome to the team. We have recorded your National Insurance number, QQ 12 34 56 C[NINO_1], for payroll.
For your DPO: this is a pseudonymisation measure within the meaning of Article 4(5) UK GDPR, and the mapping back to the real details stays in your infrastructure. What the ICO says, in the questions below.
We explain how pseudonymisation differs from anonymisation in pseudonymisation under the UK GDPR.
Detection runs within your network: your data does not leave it to be checked. It does not rewrite or summarise, it only marks what is personal data, and within a conversation each detail keeps the same token from beginning to end. In tool calls, the provider sees tokens and your tool receives the real values.
What goes out to OpenAI
Draft an email to [PERSON_1] ([EMAIL_1]) confirming that we have received her paperwork. What your service receives
Dear Charlotte Evans, thank you: we can confirm we have received your paperwork. We will write to charlotte.evans@example.com as soon as everything is ready. UK identifiers and more
Every document, in its own format. Choose a country and see what reaches the AI.
United Kingdom: also recognised
[PERSON_1][PHONE_1][BANK_ACCOUNT_GB_1][POSTCODE_1][EMAIL_1]Ireland: also recognised
[PERSON_1][PHONE_1][IBAN_1][EIRCODE_1][EMAIL_1]United States: also recognised
[PERSON_1][PHONE_1][BANK_ACCOUNT_US_1][ADDRESS_1][EMAIL_1]Australia: also recognised
[PERSON_1][PHONE_1][BSB_1][BANK_ACCOUNT_AU_1][EMAIL_1]Germany: also recognised
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]France: also recognised
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Spain: also recognised
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Italy: also recognised
[PERSON_1][PHONE_1][IBAN_1][ADDRESS_1][EMAIL_1]Portugal: also recognised
[PERSON_1][PHONE_1][IBAN_1][POSTCODE_PT_1][EMAIL_1]Brazil: also recognised
[PERSON_1][PHONE_1][ADDRESS_1][EMAIL_1]And in every country
[API_KEY_1][CARD_1][PASSPORT_1][NINO_1][NHS_NUMBER_1][UTR_1][DRIVING_LICENCE_1]Your service sends
Update the payroll record for Oliver Bennett, NI number QQ 98 76 54 A.
The AI receives
Update the payroll record for [PERSON_1], NI number [NINO_1].
[PPS_NUMBER_1]Your service sends
Forward the summary to Aoife Murphy, PPS 1234567A.
The AI receives
Forward the summary to [PERSON_1], PPS [PPS_NUMBER_1].
[SSN_1]Your service sends
Review the application from John Miller, SSN 987-65-4321.
The AI receives
Review the application from [PERSON_1], SSN [SSN_1].
[TFN_1][MEDICARE_1]Your service sends
Prepare the payslip for Jack Wilson, TFN 123 456 789.
The AI receives
Prepare the payslip for [PERSON_1], TFN [TFN_1].
[TAX_ID_DE_1][SOCIAL_SECURITY_DE_1]Your service sends
Prepare the letter to Jonas Weber, Steuer-ID 12345678901.
The AI receives
Prepare the letter to [PERSON_1], Steuer-ID [TAX_ID_DE_1].
[NIR_1][SIREN_1][SIRET_1]Your service sends
Go through the file for Camille Martin, NIR 1 85 05 78 006 084 00.
The AI receives
Go through the file for [PERSON_1], NIR [NIR_1].
[DNI_1][NIE_1][NIF_1][NUSS_1]Your service sends
Summarise the file on María López, DNI 12345678A.
The AI receives
Summarise the file on [PERSON_1], DNI [DNI_1].
[TAX_CODE_IT_1][VAT_NUMBER_IT_1][ID_CARD_IT_1][HEALTH_CARD_IT_1]Your service sends
Reply to Mario Rossi, codice fiscale RSSMRA80A01H501X.
The AI receives
Reply to [PERSON_1], codice fiscale [TAX_CODE_IT_1].
[NIF_PT_1][NISS_1]Your service sends
Check the registration of João Silva, NIF 123456780.
The AI receives
Check the registration of [PERSON_1], NIF [NIF_PT_1].
[CPF_1][CNPJ_1][DRIVING_LICENCE_BR_1]Your service sends
Write to Ana Souza about her order, CPF 123.456.789-00.
The AI receives
Write to [PERSON_1] about her order, CPF [CPF_1].
Invented details and sample numbers that are not valid.
The Gateway recognises the everyday personal data (names, email addresses, phone numbers, postal addresses, API keys) and, in addition, each country’s identifiers in their own format. For the UK that means National Insurance numbers, NHS numbers, Unique Taxpayer References and DVLA driving licence numbers. It also covers IBANs, bank cards and passports (their machine-readable zone).
| Country | Identifiers |
|---|---|
| United Kingdom | National Insurance number, NHS number, Unique Taxpayer Reference (UTR), DVLA driving licence number |
| Ireland | PPS number |
| United States | Social Security number |
| Australia | TFN, Medicare |
| Germany | Steuer-ID, Sozialversicherungsnummer |
| France | NIR (numéro de sécurité sociale), SIREN, SIRET |
| Spain | DNI, NIE, NIF, Social Security number |
| Italy | codice fiscale, partita IVA, carta d’identità elettronica (CIE), tessera sanitaria |
| Portugal | NIF, NISS |
| Brazil | CPF, CNPJ, CNH (driving licence) |
| All countries | IBAN, passports (machine-readable zone), bank cards |
Compared with Presidio
Presidio finds personal data in text. Putting it in front of the OpenAI API means building a compatible proxy, and that is down to your team. Nonimo Gateway comes with one.
| Task | Building it on Presidio | With Nonimo Gateway |
|---|---|---|
| Find personal data in text | Presidio provides it | Included |
| OpenAI-compatible proxy | You build it | Comes ready |
| Place it in front of your AI provider | You connect it | Repoint base_url |
| Restore the real details in the reply | You build it | Comes ready |
| National identifiers by country | Some built in (incl. NHS, NINO); you choose and tune the rest | Those in the table above |
| Text in languages other than English | You configure it | Comes ready |
| Keeping it up to date | Your team | We supply each new version |
| Where it runs | On your infrastructure | A container on your server |
The full comparison, row by row: Microsoft Presidio alternative →
Presidio finds personal data in text, but it does not include an OpenAI-compatible proxy: to place it in front of the API, your team has to build that proxy, connect it and look after it.
Nonimo Gateway provides that part ready-made: a container on your own server, an OpenAI-compatible API, the real details restored in the reply and the national identifiers in the table above.
Your infrastructure
You keep your AI provider, and the Gateway becomes one more component inside your perimeter.
It installs on your servers or in your cloud, alongside your services.
Only the licence and usage figures. Your content does not pass through Nonimo.
Your API key is not stored in the Gateway.
LiteLLM
If your platform already routes its calls through LiteLLM, Nonimo fits in in one of two ways. Choose the one you need.
Out Summarise the case notes for [PERSON_1]
Back The reply arrives with the tokens: [PERSON_1]
Out Summarise the case notes for [PERSON_1]
Back The reply arrives with the real details: Hannah Wright
Running LiteLLM already? Nonimo switches on as a guardrail, or as a proxy in front of your provider if you want the real details back in the reply.
Plans
There’s a 30-day trial on every plan. Should you exceed your monthly word allowance, the Gateway alerts you and your service carries on uninterrupted.
Right for you Nonimo Gateway Business, £419/month
For practices, chambers and smaller teams
Nonimo Gateway Practice £249/month Nonimo Gateway Practice or £2,490 a year
For larger organisations running several services
Nonimo Gateway Business £419/month Nonimo Gateway Business or £4,190 a year
For groups with their own requirements and terms
Custom pricing
By our estimate, the Practice plan’s 25 million words a month will serve up to roughly 200 staff. Business, at 150 million, stretches to roughly 1,000. Enterprise is uncapped and intended for organisations above 1,000 staff or spread across several sites. If your usage exceeds the allowance, we’ll tell you and nothing stops working.
Access
Tell us what your stack looks like today and we will arrange a trial on your own server, with your own security team in the loop.
Questions
What heads of IT, security leads and DPOs ask before they deploy the Gateway.
The prompt with tokens such as [PERSON_1] or [NINO_1] in place of the personal details, sent to your provider. If your policy blocks a data type, the request is stopped before it leaves and the provider receives nothing. The token map stays on your server.
No. Detection runs locally, within your network.
The OpenAI API and any API compatible with it: Chat Completions and Responses, with tool or function calling.
By our estimate, the Practice plan’s 25 million words a month will serve up to roughly 200 staff. Business, at 150 million, stretches to roughly 1,000. Enterprise is uncapped and intended for organisations above 1,000 staff or spread across several sites. If your usage exceeds the allowance, we’ll tell you and nothing stops working.
Pseudonymisation, as defined in Article 4(5) of the UK GDPR: the data can no longer be attributed to a specific individual without additional information, which is kept separately, and here that information stays in your infrastructure. It is not anonymisation, although many people search for ‘data anonymisation’ when this is what they need. It helps with data minimisation, but the ICO treats pseudonymised data as personal data, so your lawful basis, the Article 28 terms with your provider and any DPIA still apply.
Access to your AI provider, plus a connection to Nonimo for the licence and usage figures, not your content. If your network cannot reach Nonimo, the Business and Enterprise plans offer an offline mode on request.
By default, the request is not sent and your application gets a clear error.
Only for the licence and usage figures, not your content. If your network cannot reach Nonimo, the Business and Enterprise plans offer an offline mode on request. Write to us at hello@nonimo.ai and we will agree the terms.
A server or a cluster that runs containers, in your data centre or your cloud. It installs alongside your services, and you can run several instances.
With a signed licence for each server or instance, renewed automatically on connected plans and loaded by hand when running offline, on terms agreed with each customer. If you go over your plan’s usage, the Gateway warns you and your service carries on.
Your IT team decides when to apply updates. The Gateway does not update itself, and it lets you know when a new version is available.
Guides
Guides on AI gateways, privacy proxies and keeping personal data out of your LLM API calls.
Get started
Request access, put the Gateway in front of your OpenAI integrations and let your security team test it on your own estate. For the AI tools staff open in a browser, see Nonimo for organisations.
Remove personal data from a file or text before AI sees it. Or cover the details on a copy of your ID and add a watermark before you send it.