Why would a three-person company build its own AI?
Because of a promise we make to every customer: your data stays inside your environment, and nothing is sent to an external AI service.
That promise rules out the easy route. The obvious way to find personal data in a case note is to send the note to a large AI provider and read the answer. It works well. It also means your incident reports, your shift notes and your staff records leave your environment and arrive somewhere you have no control over.
So the AI in our platform has to run on hardware you or we control. That means small models, built for one job each, and good enough at that job to be useful.
Three of them are now public on Hugging Face, free to download and use under the Apache 2.0 licence.
What the three models do
| Model | What it does |
|---|---|
| Nordic PII Spans | Reads Norwegian and Swedish text and lists every piece of personal data in it — names, phone numbers, addresses, ID numbers, health details and others — and ties each one to the person it belongs to, so the text can be hidden consistently |
| Nordic PII Screen | Answers a faster question: which kinds of personal data does this text contain? Texts with none can be skipped, and anything the first model missed gets caught |
| Nordic Customer Impact | Reads one message a customer sent a business and answers eighteen questions about it at once: what they want, how they feel, whether something is broken, how urgent it is, and which risks it carries. Six languages |
Each one is small enough to run on a single machine, and far too small to do everything. That is the point. A model that does one job can be measured at that job.
Every person in the training text is invented. No real document was used, and no real person's data.
Why Nordic text is its own problem
This is where a general-purpose model, trained mostly on English, struggles.
In Norway, streets are named after people. Henrik Ibsens gate is an address rather than a playwright. Meeting rooms are named after people too: møterom Ivar Aasen is a room. A model that flags both is useless in practice, because somebody has to review every false alarm — and a tool that cries wolf gets switched off.
| Looks like personal data | Is actually |
|---|---|
| Henrik Ibsens gate | A street |
| Møterom Ivar Aasen | A meeting room |
| post@ or support@ | A mailbox, rather than a person |
| Order, case and invoice numbers | References to things, rather than people |
| Job titles, organisations, places | Context, rather than identity |

None of this appears in a general dataset. All of it is obvious to anybody who has worked in a Nordic office for a week.
There is a second gap that only shows up in real working text. Frontline notes are often two lines long: a date, and a word or two about what was done. 14.03 · Vask. An early version of our model read that lone capitalised word under a date as somebody's name, because in every polite sentence it had seen, a capitalised word in that position was a name.
Two people agreed 64% of the time
The customer impact model answers eighteen questions about a message. To check it, people had to answer the same questions by hand first.
When two trained people read the same customer messages, they agreed on the main category 64% of the time. The disagreements clustered where you would expect: is this a problem, a complaint, or a billing matter? Often it is all three.

That number rarely gets published, because it makes accuracy figures look less impressive. We would rather you had it, because it tells you something no accuracy score can.
The answer is to let the model say how sure it is.
Why a probability beats a label
Most tools of this kind hand you a label. This message is a complaint. You have no idea whether the tool was certain or guessing, so you check everything, and the automation saves nobody any time.
Our customer impact model returns a confidence level with every answer, and those levels are honest: when it says 80%, it is right about 80% of the time. That turns into a rule anybody can operate:
- Confident answer → route it automatically.
- Uncertain answer → send it to a person.
- Serious or sensitive — a safety risk, or somebody in a difficult situation — → a person, immediately, whatever the confidence.

That last rule is built into the reference code we published, rather than left for someone to remember. The same thinking runs through the whole platform: software proposes, and a person decides where it matters.
Where these models are weakest
Four limits, all published on the model cards.
They learned from invented text. Real documents are messier — abbreviations, typos, half-sentences, local shorthand. Test them on a sample of your own text before relying on any of this, and keep a person in the loop where a miss matters.
Nynorsk is the weakest variety. Exact matching reaches 0.96 for Bokmål against 0.88 for Nynorsk. Less material to learn from, lower score.
Free-text categories have fuzzy edges. Finding that a sentence mentions illness is reliable. Agreeing exactly where that mention starts and stops is harder — for a model, and for two people.
They favour caution over coverage on risk questions. Signals like churn and safety are found in 77 to 84% of the messages that contain them. Where a miss costs more than a false alarm, the threshold should be lowered — and that is a decision for your business rather than for us.
Why give them away?
A fair question for a company with three people and a lean budget.
Partly because publishing the models costs us little and gives Nordic organisations something that mostly fails to exist: open models that handle Norwegian and Swedish personal data properly, run on your own hardware, and can be checked by anybody. The training material stays ours.
Partly because it is the only honest way to make the claim. A supplier saying our private AI protects your data is asking you to take their word for it. Here are the models, the numbers, the categories and the limits. Download them and test them yourself.
What to ask any supplier whose AI reads your records
- Where does the text go? If the answer involves an external AI service, your staff records are leaving your environment. Ask which one, and what they keep.
- What was the model trained on? Real customer documents, or invented text? If real, whose, and with what permission?
- Does it work in our language? Norwegian has two written standards. Swedish, Danish and Finnish are different problems again. A model that scores well in English tells you very little.
- How often is it wrong, and in which direction? Missing something and flagging something harmless are different failures with different costs.
- Does it tell you when it is unsure? A label with no confidence attached cannot be automated safely.
- Can we test it on our own text? If the answer involves uploading your real documents to a demo environment, the first question has already been answered.
Our answers are above, and the models are public, so they can be checked rather than believed.

Bjørn Nese — Founder & Chief Engineer
Building operations software for high-compliance industries since 2011. Designs the platform architecture and the private in-house AI that runs it.
More articles by Bjørn Nese


