Doron Segal Founder · CTO · YC W21 Book a call
TALK

Dark Patterns by an Engineer

22 slides 7 cases 18 named patterns 2020 – 2026 Download the deck (PDF)
Use ← → to move · G for the grid
  1. Title slide: a talk for founders on growing a startup without the tricks that come with a repayment schedule — the patterns regulators now have names for, the fines they cost, and the one rule you can enforce in code review. 1 Dark Patterns by an Engineer
  2. Introduction: co-founder and CTO at Per Diem in Brooklyn, running the ordering platform behind 2,000+ coffee shops and restaurants. The deck exists because that checkout sits on partner APIs whose UX decisions appear in the deceptive.design hall of shame — a few were inherited before anyone noticed. 2 Hi, I'm Doron
  3. Contents: every fine, count and example comes from the deceptive.design catalogue and its enforcement database, attributed on the last slide. Four parts — the bill, seven tricks you will be tempted by, the line test, and your move. 3 Sourced, not remembered
  4. $1.3 billion across the six enforcement actions on the next slide, where the interface itself was the offence. None of these companies were ended by the fine; a seed-stage company would be, because penalties anchor on the harm rather than on your runway. 4 $1.3B, and that's just six of them
  5. Six fines and settlements: €405M Meta/Instagram for children's data defaults, $245M Epic Games for purchase-flow dark patterns, €225M WhatsApp for transparency, $175M Prog Leasing for hidden lease terms, €150M Google for making cookie refusal harder than accept, and $62M Noom for trial auto-renew that was hard to cancel. 5 The bill: six enforcement actions
  6. Sneaking and forced action at Epic Games: Fortnite's purchase flow let a single mis-press buy an item, kept saved cards charging without consent, and locked accounts of people who disputed charges. $245M refunded, plus a separate $275M COPPA penalty. Steal this: put a confirmation on anything that moves money, and never punish a dispute. 6 Epic Games: $245M for a button
  7. Hidden subscription and hard to cancel at Noom: a cheap trial, an auto-renew into a long plan, and a cancellation path harder than signup — forced continuity, and a $62M class-action settlement. Steal this: the number of steps to cancel must not exceed the number of steps to subscribe. 7 Noom: the trial that didn't end
  8. The eighteen named patterns in the deceptive.design taxonomy — addictive design, comparison prevention, confirmshaming, currency confusion, disguised ads, fake scarcity, fake social proof, fake urgency, forced action, hard to cancel, hidden costs, hidden subscription, nagging, obstruction, preselection, sneaking, trick wording and visual interference — with the seven covered on the next slides highlighted. 8 18 named patterns, seven you'll meet this quarter
  9. Confirmshaming at DoorDash: customers who entered no tip saw a warning that untipped orders may wait longer for a driver — framed as information, read as a threat. Three separate hall-of-shame entries for one prompt. Steal this: if a behaviour really affects service, show the real median wait and let the data persuade. 9 DoorDash: “your food might get cold”
  10. Hard to cancel at DoorDash DashPass: manage-subscription buried in settings, then a 20%-off annual offer, then a reason survey where each reason triggers its own rebuttal. Nothing is illegal alone; the pattern is the stack. Steal this: one retention offer, then cancel — and put Cancel where Subscribe was. 10 DashPass: one tap in, four screens out
  11. Preselection at DoorDash: a lapsed subscriber finishing a one-off order finds a resubscribe checkbox pre-checked on the payment screen, adding a recurring charge unless they notice. The same mechanic appears for shipping insurance, marketing email and AI-training consent. Steal this: anything recurring, paid, or about their data ships unchecked. 11 DoorDash: the box that was already ticked
  12. Comparison prevention at Amazon: a Kindle edition at $12.99 shown against a crossed-out $19.99 print list price — a different product presented as a discount on this one. Amazon has 31 hall-of-shame entries, the most of any brand. Steal this: strike through only a price this exact SKU was actually sold at. 12 Amazon: a strikethrough that compares the wrong thing
  13. Preselection and obstruction at Figma: early-2025 AI features shipped with content-training consent switched on for every account by default — the ticked checkbox applied to data, the version GDPR regulators fine most often across 70 enforcement actions. Steal this: for anything a user might object to, the default is off and the toggle is where they would look. 13 Figma: opted in to AI training before anyone asked
  14. Nagging at Reddit and TikTok: repeated pushes to install the app, and repeated requests for notifications and contacts after they were declined. The pattern is the retry loop — a no that resets next session, while the metric only counts eventual yeses. Steal this: a decline is a state, not an event; store it and re-ask only when something material changed. 14 Reddit and TikTok: asking again after you said no
  15. Obstruction at Meta: EU users had until 26 June 2024 to keep their posts out of AI training, and exercising that right meant locating a form, giving a reason and waiting for a decision — one tap to say yes, a maze to say no. Steal this: the cost of saying no must equal the cost of saying yes. 15 Meta: an opt-out with a deadline and a maze
  16. The line test as a table: the same widget kept or killed depending on its truth value. A countdown against a real deadline versus a timer that resets on refresh; live inventory versus a hard-coded “only 3 left”; real reviews versus randomised “someone just bought”; a sensible default versus a pre-checked paid add-on; one retention offer versus a survey routed to rebuttals; this SKU's own prior price versus a different product's list price. 16 Same widget, different truth value
  17. The arithmetic: every tactic lifts a metric this quarter — checkout conversion, trial-to-paid, measured churn — while repayment arrives later and off the dashboard as chargebacks, card-network penalties around a 1% ratio, support headcount, reviews you cannot delete, real churn, and a regulator letter timed for Series A diligence. Steal this: track disputes, refunds and support volume as first-class growth metrics. 17 It's a loan, not a hack
  18. Jurisdiction follows the customer: EU users bring GDPR, US users bring the FTC, regardless of where the company sits. Enforcement actions per law in the deceptive.design database — 70 GDPR, 22 Spain's Information Society Services Law, 15 FTC Act, 7 ROSCA, 5 UK consumer protection and 5 ePrivacy. 18 Who is enforcing
  19. One rule you can enforce in code review: every case in part two is either a constant where a query should be, or a default nobody reviewed. Any urgency, scarcity, social-proof or price-anchor value must come from a query, never a literal; and any pre-checked control that is recurring, paid, or about the user's data fails review. A CI check turns an ethics debate into a build failure. 19 One rule you can enforce in code review
  20. The failure modes, each with its founder-sized rationalisation: “Amazon does it” when Amazon can absorb the fines and you cannot; the retention maze; testing it just to see, when the A/B test cannot see the repayment; copying the widget instead of the truth behind it; opt-out as a feature; and blaming the partner, when inherited UX is still your UX. 20 What not to copy
  21. Your first 90 days: days 1–14 walk your own funnel as a stranger and screenshot every step; days 15–30 grep for hard-coded urgency, scarcity, social proof and price anchors and ship the lint rule; days 31–60 fix the exits so cancel takes as many steps as subscribe; days 61–90 show the full price up front and track chargebacks, refunds and support volume. 21 Your first 90 days
  22. Sources: the deceptive.design types, hall of shame and laws pages, the Leiser, Santos and Doshi enforcement database, and the individual entries behind the Epic, Noom, DoorDash, Amazon, Figma, Reddit, TikTok and Meta cases — plus the caveat that this is not legal advice and that the line test and code-review rule are the author's own. 22 Sources

The short version

  • The interface itself is now the offence. Six actions on one slide come to about $1.3B — Meta, Epic, WhatsApp, Prog Leasing, Google, Noom — and in Epic's case the FTC named dark patterns in the order. None of those companies were ended by the fine. A seed-stage company would be, because penalties anchor on the harm rather than on your runway.
  • Nothing in the stack is illegal on its own. DashPass buries cancel in settings, then offers 20% off, then runs a reason survey where each answer triggers its own rebuttal. Every step is an ordinary growth decision. The pattern is the stack.
  • A default is a decision. A pre-checked resubscribe box on DoorDash's payment screen and Figma's AI-training consent switched on for every account are the same mechanic — one takes money, one takes data. Anything recurring, paid, or about the user's data ships unchecked.
  • The line test: would the user make the same choice if they saw everything clearly? A countdown against a real deadline is marketing; a timer that resets on refresh is the pattern. Live inventory is marketing; a hard-coded “only 3 left” is the pattern.
  • Inherited UX is still your UX. Audit what your payment, delivery and loyalty vendors put in your flow — that is how most teams ship their first one, mine included.

The reason it works this quarter is the same reason it costs later: every one of these tactics lifts conversion, trial-to-paid, or measured churn, and hard-to-cancel makes your own churn number lie to you. The repayment lands off the dashboard — chargebacks and the card-network penalties that follow around a 1% ratio, support headcount, reviews you can't delete, real churn once the cohort matures, and a regulator letter timed for Series A diligence.

So the fix isn't a values doc. It's two rules a reviewer can enforce: any urgency, scarcity, social-proof or price-anchor value comes from a query, never a literal, and any pre-checked control that is recurring, paid, or about the user's data fails review. Nobody argues with a lint rule at 6pm on a Friday.

Want this delivered to your team, or a second pair of eyes on your checkout and cancel flows? Book a call.