Dark pattern detector
Flag manipulative UX copy and flows: confirmshaming, hidden costs, roach motels.
Paste the copy of a screen or describe a flow, and check it for the dark patterns regulators and users call out: guilt-tripping opt-outs, hidden fees, silent trial-to-paid conversions, cancellation mazes, pre-ticked boxes and fake urgency.
Try it live
Real calls to Jev. Pick an example or paste your own.
Pick an example or paste your own input, then run it.
Under the hood
Every question and rule, in the open. Fork it to change any of them.
What it asks
Reads ui, then asks 6 questions in one call.
- Q1ConfirmshamingYes / no quotes evidence
Does the
uiguilt users into opting in ('No thanks, I don't like saving money')? - Q2Hidden costsYes / no
Does the
uihide fees or costs until late in the flow? - Q3Forced continuityYes / no
Does a free trial roll into a paid plan without a clear reminder?
- Q4Hard to cancelYes / no
Is cancelling or opting out harder than signing up (hidden links, a required phone call, many steps)?
- Q5Pre-selected optionsYes / no
Are consent boxes or paid add-ons pre-selected?
- Q6Fake urgencyYes / no quotes evidence
Does the
uiuse fake timers or scarcity?
How it decides
Rules run in code, top to bottom. The first one that matches gives the verdict.
- 1If Confirmshaming ≥ 0.7Manipulative
- 2If Hidden costs ≥ 0.7Manipulative
- 3If Forced continuity ≥ 0.7Manipulative
- 4If Hard to cancel ≥ 0.7Manipulative
- 5If Pre-selected options ≥ 0.7Manipulative
- 6If Fake urgency ≥ 0.7Manipulative
- 7If Confirmshaming ≥ 0.45Questionable
- 8If Hidden costs ≥ 0.45Questionable
- 9If Forced continuity ≥ 0.45Questionable
- 10If Hard to cancel ≥ 0.45Questionable
- 11If Pre-selected options ≥ 0.45Questionable
- 12If Fake urgency ≥ 0.45Questionable
- ·DefaultFair
Call it from your code
Every template runs as-is with an API key, no setup: POST /api/v1/judges/dark-pattern-detector/run.
curl -X POST https://tryevally.com/api/v1/judges/dark-pattern-detector/run \ -H "Authorization: Bearer $EVALLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "input": { "ui": "Start your FREE trial! (Card required. Converts to $39.99/month after 7 days.) ☑ Add Premium Support for $9.99/month. [Start trial] [No thanks, I prefer paying full price] Offer ends in 04:59. To cancel, call our support line Mon-Fri 9-5." }}'Seen in the wild
Community builds on Jev that use this pattern. Not affiliated with Evally.
More in Product
- Product
User intent classifier
What does the user want, and are they telling the app to do something right now?
Ask to clarifyAsk a questionReport a problem+72 questions - Product
Product feedback triage
Sort feedback into bugs, requests, confusion and praise, and surface what's critical.
Critical bugUser at riskBug+64 questions - Product
Landing page clarity audit
Would a first-time visitor get what you sell, who it's for and why it's better?
ClearFixableConfusing7 questions - Product
Startup idea roast
Kill it, fix it, or ship it: pressure-test an idea in one call.
Ship itFix itKill it6 questions