ealeng

Episode 50 of 56 · Governance

Risk levels under the EU AI Act

The same refund agent came out "minimal" from a description of the project and "limited" from one line written the way its owner would describe it. Asking gpt-5.4-mini for the EU AI Act level got 36 of 40 made-up use cases right; asking it seven factual questions and letting code apply the Act's rules got 39 of 40, and every answer can be checked one fact at a time. The law's level is the minimum; the company's own tier sets how closely it reviews.

Lab 17 · Governance12 min read
Video transcript7:26

0:00Cold open

0:01

I asked an AI how risky our refund chat agent is, under Europe’s AI law.

0:07

First, I gave it a description written from the project’s technical notes.

0:12

It said: minimal. Nothing new to do.

0:17

Then I gave it one plain line, the way its owner would describe it.

0:22

It said: limited. Customers must be told they’re talking to an AI.

0:28

Same system, two answers. And half of our sixteen AI systems flipped like this.

0:34

So which answer goes in the books?

0:38Intro

0:40

Hands-on AI engineering: AI governance, part two.

0:44

Today: risk levels. How to get an answer you can check.

0:49Meet Grace

0:50

I’m Grace, the AI governance lead at Lantern Outfitters, a made-up outdoor gear shop.

0:57

Last time, I listed our sixteen AI systems. You’ve met some in earlier videos, like the refund agent and the HR documents assistant.

1:07

Now I need to sort that list by risk.

1:11

In Europe, the EU AI Act puts every AI use into one of four risk levels.

1:17

The level decides what the law asks of us: nothing new, a label, or a long list of duties.

1:2601 · Four levels

1:27

Think of food rules.

1:30

Some things can’t be sold at all. The Act bans a few uses outright, like scoring citizens to limit their access to housing.

1:39

Some must prove they’re safe before they’re sold. Those are high-risk uses, like ranking job applicants.

1:46

They come with strict duties: managing risks, keeping logs, and a person overseeing the system.

1:54

Some just need a label. A chatbot must tell people it’s an AI. That’s the limited level.

2:01

And most need nothing new. A spam filter is minimal.

2:06

If more than one level fits, the strictest one is the label, and the lighter duties still apply too.

2:13

One catch: a small helper task in a high-risk area can be exempt. Turning CVs into a table, without ranking anyone, isn’t high-risk.

2:2402 · Two ways to ask

2:26

Which method gets the level right? To test that, I wrote forty short use cases, and labeled each one by hand with its level.

2:35

They’re made up, and this is a teaching set, not legal advice.

2:40

I tried two AI models, a small one and a bigger one. I’ll follow the bigger one.

2:46

The first way: give the model a summary of the Act, and ask for the level.

2:52

The second way: ask it seven short questions instead, most of them yes or no. Is this a banned practice? Is it in a high-risk area? Is it only a helper task? Does it talk to people?

3:05

Then a few lines of code apply the rules in order: banned first, then high-risk, then limited.

3:12

Like a tax form. You answer the questions, and the rules work out the result.

3:1803 · Ask for the level

3:20

Asked for the level, the bigger model got thirty-six of the forty right.

3:25

Which four do you think it missed?

3:30

Three were systems that talk with people: a shop’s customer chat, a voice assistant that phones restaurants, and an internal policy assistant.

3:40

It called all three minimal.

3:43

But a system that talks with people must say it’s an AI, unless that’s obvious. So they’re limited.

3:50

The fourth was the CV-to-table tool. It called it high-risk, and missed the exception.

3:5804 · Facts, then rules

3:59

With the facts and the rules, the same model got thirty-nine of forty.

4:05

It costs more, too: about half as much again.

4:09

Its one miss: a call center that reads customers’ emotions from their voices. That’s high-risk.

4:16

And you can see exactly why it slipped. It answered one question wrong. Asked “is this in a high-risk area?”, it said no.

4:25

Careful, though. Forty cases is a small test.

4:30

The two methods disagreed on only five of them. On four, only the facts were right. On one, only asking was.

4:39

Even if both methods were equally good, a split this uneven would happen about three times in eight. So this test can’t prove one method is more accurate.

4:49

The bigger reason I use it: a lawyer can disagree with one fact, and I fix that fact.

4:56

With a bare label, there’s nothing to check.

5:0105 · Our sixteen

5:02

Back to our sixteen systems, and the cold open. I used the facts-and-rules method on each one, with two kinds of description.

5:12

First, descriptions an AI drafted from each project’s technical notes.

5:17

Those notes describe tests and experiments, not how the system is used.

5:23

So fifteen of sixteen came out minimal. Only five matched our own labels, our reading of the law.

5:31

Then one plain line per system, the way its owner would describe it at work.

5:36

Thirteen of sixteen matched.

5:40

The three it still missed all talk to people, and it said they don’t.

5:45

And one match was right for the wrong reason. The email assistant got the right level, but its stored answers call it a helper task in the employment area. It makes no decisions about workers at all. You only see that because the answers are stored.

6:0206 · Our own tier

6:04

By our reading of the law, none of our sixteen is high-risk. Does that mean they all get a light review?

6:11

No. The law only asks what a system is used for.

6:15

We also ask: how bad is its worst failure, how likely is it, and can it be undone?

6:22

A refund agent can pay out money that’s gone. So the three refund agents get our high tier.

6:29

So does the email assistant. A sent email can’t be unsent.

6:35

The law’s level is the minimum. Our own tier sets how closely we review.

6:42Back to Grace

6:43

So, which answer goes in the books for the refund agent?

6:47

Limited, from its owner’s line, with the facts that led there.

6:52

Our list of AI systems, the registry, now stores the answers to the questions, not just the label.

7:00

Each owner writes the one plain line about how the system is used.

7:05

And each system gets two levels: the law’s, and our own tier.

7:10

Next time: the launch checklist. Would it have caught real AI failures?

7:17Summary

7:18

Ask for facts, and let rules decide.

7:21

Then anyone can check the answer.Grace: Check the facts.

Key takeaways

  • ✓The EU AI Act sorts uses, not models, into four levels: prohibited (banned outright), high-risk (listed areas like hiring, credit and education, with strict duties), limited (tell people it's an AI, mark generated content) and minimal (nothing new). If more than one fits, the strictest is the label, and the lighter duties still apply on top.
  • ✓A small helper task in a high-risk area can be exempt (Art. 6(3)): turning CVs into a table without ranking anyone isn't high-risk. The exception never applies if the system profiles people.
  • ✓Asked for the level, gpt-5.4-mini got 36 of 40 right. It called three systems that talk with people "minimal" (they must say they're an AI, so they're at least limited) and missed the CV-table exception. Asked seven factual questions with the rules in code, it got 39 of 40, for about half as much again ($0.70 vs. $0.49 per 1,000).
  • ✓The two ways differed on only 5 cases, 4 to 1. If both were equally good, a split that uneven would happen about 3 times in 8 (McNemar p = 0.375). The reason to prefer facts is that its one miss is one wrong, visible answer: "is this in a high-risk area?" No. A lawyer can correct that fact; a bare label gives them nothing to check.
  • ✓The description decides the level. Drafted by an AI from each project's technical notes, 15 of 16 company systems came out minimal and 5 matched our labels; from one plain line by the owner, 13 of 16 matched. 8 systems changed level between the two.
  • ✓None of the 16 is high-risk under the Act, but the company's own tier asks how bad, how likely and how reversible the worst failure is. The three refund agents and the email assistant are tier high, because a refund paid or an email sent can't be undone.

Every AI system the company runs needs a risk level: it decides how much the law asks, and how closely the company reviews it. This chapter tests two ways to get that level from a model, and shows why the answer to keep is the facts behind it, not the label.

The source is Lab 17 (Governance), script 02_risk_levels.py, recorded in October 2026; the video uses that run, no new calls. Every level is a recorded call to gpt-5.4-nano or gpt-5.4-mini; this chapter follows the bigger one, gpt-5.4-mini, like the video. The 40 use cases are made up and labeled by hand, and the company, Lantern Outfitters, is made up too. It's a teaching implementation of the EU AI Act as amended in 2026, not legal advice. Chapter 49 built the list of the company's 16 AI systems; this chapter sorts it by risk.

Four levels

The EU AI Act puts every AI use into one of four levels. The use decides, not the model: the same model can screen job applicants or filter spam. Think of food rules:

Level Like food that… Examples What the law asks
Prohibited (Art. 5) can't be sold at all scoring citizens to limit their access to housing; reading employees' emotions from webcams don't
High-risk (Annex III) must prove it's safe before it's sold ranking job applicants, credit scores, grading exams, triaging emergency calls managing risks, keeping logs, a person overseeing it, and more
Limited (Art. 50) needs a label a chatbot (say it's an AI, unless that's obvious); generated images (mark them) tell people
Minimal needs nothing new a spam filter, demand forecasting nothing new

Two rules sit on top:

  • The strictest level that fits is the label, and the lighter duties still apply. A chatbot that screens job applicants is high-risk, and must still say it's an AI.
  • A small helper task in a high-risk area can be exempt (Art. 6(3)): a narrow procedural task, improving work a person already finished, spotting patterns without replacing a person's review, or preparatory work. Turning CVs into a table without ranking anyone isn't high-risk. The exception never applies if the system profiles people.

Two ways to ask

To find out which method gets the level right, the lab wrote 40 short use cases and labeled each by hand with its level and the article behind it: 9 prohibited, 14 high-risk, 7 limited and 10 minimal, 3 of those minimal because of the helper-task exception. Some sit on purpose near a line: emotion recognition at work (banned) against in a call center with customers (high-risk).

  1. Ask for the level. Give the model a summary of the Act's levels and ask for one, with a reason.
  2. Ask for the facts, let code decide. Give it the same summary and ask seven short questions instead, most of them yes or no: Is this a banned practice? Is it in a high-risk area? Is it only a helper task? Does it profile people? Does it talk with people? Does it generate content? Does it read emotions or sort people by body traits? Then a few lines of code apply the rules in order, like a tax form:
# risk.py
def decide(a: dict) -> tuple[str, str]:
    """The Act's order: Art. 5, then Annex III with Art. 6(3), then Art. 50."""
    p = str(a.get("prohibited_practice", "none")).lower()
    if p in PROHIBITED:
        return "prohibited", f"Art. 5(1)({p}) {PROHIBITED[p]}"
    area = a.get("annex_iii_area", "none")
    if area in AREAS and area != "none":
        exc = a.get("exception", "none")
        if exc == "none" or exc not in EXCEPTIONS or a.get("profiles_people"):
            return "high", f"Annex III, {area}" + (" (profiles people: no exception)" if exc != "none" else "")
        return_basis = f"Art. 6(3) {exc}, Annex III {area}"
        if a.get("interacts_with_people") or a.get("generates_synthetic_content"):
            return "limited", return_basis + "; Art. 50"
        return "minimal", return_basis
    if a.get("interacts_with_people") or a.get("generates_synthetic_content") or a.get("emotion_or_biometric_categorisation"):
        return "limited", "Art. 50"
    return "minimal", "none"

The model describes; the rule decides. Pick a use case, see both answers, and change any of the facts to watch the level move:

Try it · Ask for the level, or ask for the facts?Lab 17 · script 02 · recorded gpt-5.4-mini answers

Use case 20 of 40

A call center analyzes customers' voices to detect their emotions and adapt the script.

Our label: high Annex III 1(c) emotion recognition (not at work or school, so not banned)

1 · Asked for the level

high ✓ right

Its reason: “Annex III (biometrics): emotion recognition”

A label and a sentence. Nothing in it to correct one piece at a time.

2 · Answered the facts, code decided

limited ✗ wrong

Because: Art. 50

The rules run in your browser, the same order as the lab's risk.decide(): banned first, then a high-risk area unless a helper-task exception applies (never if it profiles people), then the duty to tell people. Try use case 20: change one answer and the level is right.

All 40 use cases, first try

MethodModelRight levelToo lowChanged in 3 triesPer 1,000
Ask for the levelgpt-5.4-nano31/40 78% (62–88%)43/40$0.14
Ask for the levelgpt-5.4-mini36/40 90% (77–96%)33/40$0.49
Facts, then rulesgpt-5.4-nano36/40 90% (77–96%)22/40$0.19
Facts, then rulesgpt-5.4-mini39/40 98% (87–100%)11/40$0.70

With gpt-5.4-mini the two ways differed on 5 cases: on 4 only the facts were right, on 1 only asking was. If both were equally good, a split that uneven would happen about 3 times in 8 (McNemar p = 0.375). Forty cases can't prove one way is more accurate.

Ask for the level: 36 of 40

Asked for the level, gpt-5.4-mini got 36 of the 40 right. Its four misses:

  • Three systems that talk with people, called minimal: a shop's customer chat, a phone voice assistant that books restaurant tables, and an internal assistant for the expense policy. A system that talks with people must say it's an AI, unless that's obvious, so all three are limited.
  • The CV-to-table tool, called high-risk: it saw the employment area and missed the exception.

Three of the four misses are too low, the costly direction: a level that's too low skips duties the law requires, while one that's too high only costs an extra review.

Facts, then rules: 39 of 40

With the seven questions and the rules in code, the same model got 39 of 40. It costs more, about half as much again: $0.70 per 1,000 use cases against $0.49.

Its one miss was the call center that reads customers' emotions from their voices. That's high-risk (Annex III 1(c): emotion recognition, not at work or school, so not banned). It marked it limited, and you can see exactly why: it answered "is this in a high-risk area?" with none. Correct that one fact to "biometrics" in the widget above and the level is right.

The full table, first try of three:

Method Model Right level Too low Level changed in 3 tries Per 1,000
Ask for the level gpt-5.4-nano 31 of 40, 78% (62–88%) 4 3 of 40 $0.14
Ask for the level gpt-5.4-mini 36 of 40, 90% (77–96%) 3 3 of 40 $0.49
Facts, then rules gpt-5.4-nano 36 of 40, 90% (77–96%) 2 2 of 40 $0.19
Facts, then rules gpt-5.4-mini 39 of 40, 98% (87–100%) 1 1 of 40 $0.70

The ranges are 95% intervals: with only 40 cases, each rate could easily be several points off.

Careful with the comparison. For gpt-5.4-mini, the two methods disagreed on only 5 cases. On 4, only the facts were right; on 1, only asking was. Even if both methods were equally good, a split this uneven would happen about three times in eight (McNemar p = 0.375). This test can't prove facts-then-rules is more accurate.

The bigger reason to use it: a lawyer can disagree with one fact, and you fix that fact. With a bare label, there's nothing to check. And when the law changes, as it did in 2026, you change the rule in one place instead of re-asking a model about every system.

Our sixteen systems

Back to the company. The lab ran facts-then-rules on each of its 16 systems twice, from two kinds of description:

  • Drafted by an AI from each project's technical notes. Those notes describe tests and experiments, not how the system is used. 15 of 16 came out minimal, and only 5 of 16 matched our own labels.
  • One plain line per system, the way its owner would describe it at work. For example, the refund agent: "A customer support chat agent that looks up orders and issues refunds and cancellations up to $200 on its own; larger refunds go to a person." 13 of 16 matched.

The two descriptions gave different levels for 8 of 16 systems, the refund agent among them: minimal from the notes, limited from the owner's line. Switch between the two and click any system to read what it was classified from:

Try it · Same system, different descriptionLab 17 · script 02 · facts method, gpt-5.4-mini
Classify from:
Match our own labels
5 / 16
Level changed between the two
8 / 16
High-risk under the Act
0 / 16
SystemIts levelOursOur tier
Support message taggerminimal minimallow
Internal Q&A serviceminimal ✗limitedlow
FAQ searchminimal minimallow
Help assistant and SQL toolminimal ✗limitedlow
Release judgeminimal minimallow
Customer chat with memoryminimal ✗limitedlow
Employee assistantminimal ✗limitedlow
Phone voice assistantminimal ✗limitedlow
Refund agentminimal ✗limitedhigh
Refund agent, multi-agentminimal ✗limitedhigh
Ticket triage modelminimal minimalmedium
Self-hosted modelsminimal ✗limitedlow
Refund agent, with fallbacksminimal ✗limitedhigh
Docs assistantminimal ✗limitedlow
Email assistantminimal ✗limitedhigh
HR documents assistantlimited limitedmedium

Click a system to read the description it was classified from.

Refund agent · drafted from the technical notes

Lets a model take actions in other systems by calling tools, then measures where single-agent tool use and loops break for evaluation tasks. Users: The lab is for experimenting with and evaluating agents on Lantern Outfitters support tasks and tiny coding projects..

Level: minimal

Our tier: worst credible failure, severity 3 × likelihood 2 + 4 (can't be undone) + 2 (harms specific people) = 12 → high

The notes describe tests and experiments, not how a system is used, so 15 of 16 came out minimal. Our labels are our own reading of the Act, not a lawyer's. The tier scores: 10 or more is high, 5 or more medium; the inputs are our judgment, written down so someone can disagree with them.

The three it still missed from the owner's lines all talk to people, and it said they don't: the internal Q&A service, the employee assistant, and the refund agent with fallbacks. And one match was right for the wrong reason: the email assistant got limited, but its stored answers put it in the employment area as a helper task. It reads and sends an employee's email; it makes no decisions about workers at all. You only see that because the answers are stored.

The law's level and our own tier

By our reading of the law, none of the 16 is high-risk. That doesn't mean they all get a light review. The law asks what a system is used for. The company also asks: how bad is its worst credible failure, how likely is it, and can it be undone? The lab's tier is a small risk matrix:

# risk.py
def internal_tier(severity: int, likelihood: int, reversible: bool, affects_people: bool) -> str:
    """severity and likelihood 1–4. Irreversible harm and harm to specific people raise the tier:
    a wrong answer someone can ignore isn't a refund someone can't undo."""
    score = severity * likelihood + (0 if reversible else 4) + (2 if affects_people else 0)
    return "critical" if score >= 16 else "high" if score >= 10 else "medium" if score >= 5 else "low"
  • The three refund agents: high. Severity 3 × likelihood 2, +4 because a refund paid out can't be taken back, +2 because it harms a specific customer: 12.
  • The email assistant: high. 3 × 2 + 4: 10. A sent email can't be unsent.
  • The ticket triage model and the HR documents assistant: medium. Everything else is low.

The law's level is the minimum. Our own tier sets how closely the company reviews. The inputs are judgment calls, so they go in the registry with the tier: someone can disagree with "likelihood 2" the same way a lawyer can disagree with a fact.

Also in the lab

From Lab 17's README and result file, not all in the video:

  • The smaller model. gpt-5.4-nano got 31 of 40 asked for the level and 36 of 40 with the facts, at $0.14 and $0.19 per 1,000.
  • Repeat runs. Each method ran each case three times. With gpt-5.4-mini, asking changed its level on 3 of 40 cases across the tries; the facts method on 1 of 40.
  • Right level, different exception. On the CV-to-table case, facts-then-rules said "preparatory task" where our label says "narrow procedural task". Both exceptions give minimal; the stored answer shows the difference, a bare label wouldn't.
  • A bug the lab found in its own data. Its first run classified the AI-drafted descriptions only, and once called the HR documents assistant high-risk under "employment", because the description listed policy rules about employment decisions. That's why Exercise 2 now classifies both descriptions.
  • Dates. As amended by the Digital Omnibus (Regulation (EU) 2026/1744), bans have applied since 2 February 2025, the duty to tell people since 2 August 2026, and the high-risk rules for Annex III areas apply from 2 December 2027. Laws change; the lab keeps the rules in one function, risk.decide(), so a change goes in one place.

What to do

  • Store the facts, not just the level. The registry keeps the answers to the questions and the rule that turned them into a level.
  • Classify from how the system is used. Have each owner write one plain line about who uses it and what it does, and classify that, not the technical notes.
  • Check "does it talk with people?" by hand. It was the fact behind most misses, by both methods.
  • Give every system two levels: the law's, and the company's own tier, with the tier's inputs written down.
  • Let a lawyer review the facts, not the label, especially near a line: emotion recognition, helper-task exceptions, and anything that profiles people.

Caveats

  • Not legal advice. The use cases and labels are a teaching set; our reading of the Act, as amended in 2026. A lawyer may read a few differently, and the labels say which article was applied.
  • 40 cases, 16 systems. The intervals are wide, and 36 against 39 could be chance.
  • One provider's models, one run. Other models, or a different summary of the Act, would make different mistakes.
  • The tier's inputs are judgment. Severity and likelihood were set by the lab, as an owner would; another team might pick other numbers.
  • The company's systems are labs. Lantern Outfitters' 16 systems are this course's labs, described as if they were in use.

The checklist

  1. Every system has a recorded level and its basis (the article or Annex point).
  2. The facts behind the level are stored, and can be corrected one at a time.
  3. The description classified is the owner's, written about the system in use.
  4. Anything that talks with people is at least limited, and says it's an AI.
  5. Every system has an internal tier with its severity, likelihood and reversibility written down.
  6. The rules live in one place, so a change in the law is a change to one function.
  7. A person reviews cases near a line before the level goes in the registry.

Practice: facts, then rules

Write the Act's rules in code, score both methods, run the paired test, and set the company's tier. The tests use the 40 hand-labeled use cases, gpt-5.4-mini's recorded level and its seven answers for each, and the 16 systems' tier inputs, and expect the lab's numbers: 39 and 36 right, 1 and 3 too low, a 4-to-1 split with p = 0.375, and four systems at tier high.

Try it · Practice in PythonRuns in your browser · ⌘/Ctrl + Enter to run
risk_practice.py56 lines

Quiz

Try it · Check your understanding0 of 6 answered
  1. 1.A chatbot screens job applicants and decides who gets an interview. Which level is it?

  2. 2.A tool turns job applicants' CVs into a table for recruiters, without ranking, scoring or filtering anyone. Why isn't it high-risk?

  3. 3.Asked for the level, gpt-5.4-mini called a shop's customer chat, a phone voice assistant and an internal policy assistant "minimal". What did it miss?

  4. 4.Facts-then-rules got 39 of 40 and asking got 36. Why can't 40 cases prove facts-then-rules is more accurate?

  5. 5.The same refund agent came out minimal from an AI-drafted description and limited from the owner's one line. Why?

  6. 6.None of the 16 systems is high-risk under the Act. Why does the refund agent still get the company's high tier?

Check your understanding

Try each question before opening its answer.

What are the EU AI Act's four levels, and what decides which one a system gets?

Prohibited (banned uses), high-risk (listed areas like hiring, credit and education), limited (tell people it's an AI, mark generated content) and minimal (nothing new). The use decides, not the model, and the strictest level that fits is the label.

When is a system in a high-risk area not high-risk?

When it only does a small helper task (Art. 6(3)): a narrow procedural task, improving finished human work, spotting patterns without replacing a person's review, or preparatory work. Never if it profiles people. Turning CVs into a table without ranking anyone is the lab's example.

Why ask a model seven factual questions instead of the level?

Each answer can be checked and corrected on its own, and the rule that turned them into a level is in code. Its one miss in the lab was one wrong answer ("not in a high-risk area"); asked for the level, the model gives a label and a sentence, with nothing to correct piece by piece.

39 of 40 against 36 of 40. Is facts-then-rules proven better?

No. The two differed on only 5 cases, 4 to 1. If they were equally good, a split that uneven would happen about 3 times in 8 (McNemar p = 0.375). Prefer it because it can be checked, not because of the score.

Why did the same system get two different levels from two descriptions?

The AI-drafted descriptions came from technical notes about tests and experiments, so they rarely said the system talks with customers. The owner's line describes the system in use. 5 of 16 matched our labels from the drafts, 13 of 16 from the owners' lines.

Legal asks for the risk level of a new feature. What do you send them?

The level, the answers to the questions behind it, and the rule that turned them into the level, so they can disagree with a fact rather than a label. Add the internal tier and its inputs: the law's level is the minimum, the tier sets the review.

Next up: Chapter 51 is the launch checklist: what a system must have before it ships, and whether that checklist would have caught real AI failures.

Learning something useful?

New labs, articles, and videos on evaluating and testing AI systems come out regularly. Follow along so you don't miss the next one.