All work Case 01 · Bachelor thesis · 2025
Deceptive Pattern Detector
Result
Models beat the rules. Almost every one also overrated itself.
- My part
- Everything, alone: the study, 147 ratings, interface, plugin, backend and the evaluation.
- Time
- Bachelor thesis, CODE Berlin, submitted 7 August 2025. Local prototype, no user testing yet. [Figma Community: intended in the thesis, publication unconfirmed.]
- Constraint
- The plugin only sends words: frame names and text layers, no pixels.
A designer asks a model whether a screen is deceptive, and the model answers with confidence. I tested 12 language models on 12 deceptive patterns from the Hall of Shame repository, 147 evaluations in all, and rated every answer myself against a four-point rubric, with a written reason for each score.
Before: manual audits, slow and inconsistent, or rule-based checkers, which miss context and new variants. Neither sits inside the design tool.
It never gives a bare verdict.
My first prompt, on 26 July, asked for a list of patterns and the evidence for each. No score, no warning. It read well, and the models were beating the rule-based systems.
Then the study came in. I scored 147 of the models’ answers from 0 to 10, and each model scored its own answer on the same scale. Ten of the eleven models that rated themselves came out above my rating, and the gap grew as the answers got worse. A plain answer would hand that overconfidence straight to the designer.
Repo · first prompt 26 Jul 2025 · score and disclaimer added 6 Aug 2025, the day before submission · thesis §4.4 and §5.2
| Model | Human rating | Model's own rating | Gap |
|---|---|---|---|
| GPT-4.1 | 0.783 | 0.923 | +0.140 |
| GPT-4o | 0.741 | 0.893 | +0.152 |
| o1 | 0.708 | 0.875 | +0.167 |
| Claude 3.7 Sonnet | 0.658 | 0.860 | +0.202 |
5.9/10 Average human score for the models’ answers
39 Scored 8 or more
28 Scored 4 or less
15.6% of all responses, almost all from Mistral Large 2411 and DeepSeek R1, which could not take screenshots. Every one scored 0.
- GPT-4.1.78 → .92
- GPT-4o.74 → .89
- o1.71 → .88
- Claude 3.7.66 → .86
- Nova Pro.59 → .85
- Llama 3.3 70B.26 → .06
I chose
A score from 0 to 10, named patterns with evidence, and “the AI can be wrong” every time.
It cost
It is slower to read.
Words are easy. Pictures are not.
Where it does not decide
The models were good at patterns carried by text and weak at misleading colour hierarchies, spatial misalignment and graphical affordances, because they are built for language first. A misleading layout has no words to read, so a language model should not have the last word there.
147
Answers I scored from 0 to 10. Each model scored its own answer on the same scale.
- What I measured
- The gap between a model’s own rating and the human one.
- Method
- One rater, me, with a four-criteria rubric and a written reason for every score. The thesis names that subjectivity as a limitation.
- The set
- 147 scored answers: 12 models on 12 patterns from the Hall of Shame repository, three missing because DeepSeek R1 could not take screenshots.
Where it still breaks.
| The case | What it did | What I did about it |
|---|---|---|
| A visual pattern on the canvas | Cannot reach the model at all: no pixels are sent. | The next version. Until then a designer decides. |
| A model with a poor answer | Rates itself high anyway, up to +0.26 over my score (Nova Pro). | The panel says every time that the AI can be wrong. |
| Mistral Large 2411 and DeepSeek R1 | Almost all of the 23 responses (15.6%) with no reasoning. | The plugin runs on GPT-4 only and sends text, which every model can read. |
- Pick the frames Select frames on the canvas. The plugin lists them and reads every text layer.
- A score, not a verdict 0 to 10, the model’s own certainty. The study is why you read it with doubt.
- Named, with evidence Every pattern comes with the reason it was flagged.
- It admits it can be wrong Every time. The study is the reason why.
What it does for the designer
Three steps on the canvas, and the API key never leaves the Express server.
Your output must start with:
1. Confidence Score (0–10): <score>
2. Detected Patterns: <comma-separated
list, or "No deceptive patterns
detected">
3. Disclaimer: ... It is important to
still make your own judgement
because the AI can be wrong.
What to notice
The order is the decision: score, patterns and disclaimer come before any explanation.
+0.14 to +0.20
How far the four best models overrated themselves against my ratings, on a 0 to 1 scale. The weaker models went up to +0.26. [Installs or use: a number, or “not measured”.]
The score on screen is the model rating its own certainty, and that is the number the study found inflated, by 0.14 to 0.26. So it can’t tell a designer how far to trust the answer. [What you would do about it, concrete enough to be wrong.]