Unified AnalyticsUnified Analytics

Henrik Ibsens gate is not a person

We have published three open AI models that read Norwegian and Swedish business text, free for anyone to download and test. Here is why a general-purpose model gets Nordic text wrong, and what to ask any supplier whose AI reads records about your staff.

Bjørn NeseFounder & Chief EngineerPublished 13 November 20267 min read
AI in operations: Henrik Ibsens gate is a street name. Your AI flags it as a person?
A street named after a playwright is still a street.
On this page
  1. Why would a three-person company build its own AI?
  2. What the three models do
  3. Why Nordic text is its own problem
  4. Two people agreed 64% of the time
  5. Why a probability beats a label
  6. Where these models are weakest
  7. Why give them away?
  8. What to ask any supplier whose AI reads your records

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

ModelWhat it does
Nordic PII SpansReads 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 ScreenAnswers 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 ImpactReads 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 dataIs actually
Henrik Ibsens gateA street
Møterom Ivar AasenA meeting room
post@ or support@A mailbox, rather than a person
Order, case and invoice numbersReferences to things, rather than people
Job titles, organisations, placesContext, rather than identity
What it marks, and what it leaves alone. The Norwegian sentence "Møterom Ivar Aasen kl. 14 — Marte Nilsen tar saken." Ivar Aasen: a room, left alone. Marte Nilsen: a person, marked. In English: "Meeting room Ivar Aasen at 14:00 — Marte Nilsen is taking the case." A general model marks both. Somebody then has to review every false alarm. A tool that cries wolf gets switched off.
The model marks the person and leaves the room alone.

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.

Two people. The same messages. 64% agreed on the main category. A grid of 100 dots with 64 filled: 100 messages, read by two people. Where two trained people disagree a third of the time, no model is right every time.
Two trained people, the same messages, the same main category.

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.
What happens to each answer. Confident: routed automatically. Unsure: goes to a person. Serious or sensitive: a person, straight away. Software proposes. A person decides where it matters.
Every answer carries a confidence level, and the level decides the route.

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

  1. 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.
  2. What was the model trained on? Real customer documents, or invented text? If real, whose, and with what permission?
  3. 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.
  4. How often is it wrong, and in which direction? Missing something and flagging something harmless are different failures with different costs.
  5. Does it tell you when it is unsure? A label with no confidence attached cannot be automated safely.
  6. 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.

Share article
LinkedInEmail

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

Want to see this running on your own text?

We will walk you through it on a live workspace, inside your own environment.

Contact our team