Inspiration
Every app we use has become a subscription: music, movies, cloud storage, even car seat heaters. Cancelling is a maze of guilt trips and "are you sure?" screens. So we asked the dumbest possible question: what if your alarm clock had a Netflix business model?
What it does
SnoozeFlix is an alarm clock that rings until you pay. There's no dismiss button. Well, there is one, but it runs away from your cursor.
When the alarm goes off, you pick a plan:
- Basic ($0.99): the alarm stops, but first you watch an unskippable ad.
- Premium: a clean dismiss, limited to 3 uses a month.
- Snooze Pass: 20 seconds of silence. The price doubles every time you use it:
$$p_n = 0.99 \cdot 2^{n}$$
So by the sixth snooze, you're paying $31.68 to sleep for 20 more seconds.
- Family Plan: stops your alarm by ringing your roommate's.
Every charge comes with surprise fees ("Wake-Up Fee", "Timezone Fee"), and the first purchase requires accepting 40 articles of Terms & Conditions, including the infamous Clause 14.3.
Your account page shows your balance, your total spent, Sleep Points you can never redeem ("Coming soon™"), and a small grey Cancel link. Cancelling takes you through four guilt-trip screens whose buttons swap places, and then you're handed to Brenda, an AI retention agent who will never, ever let you leave. If you somehow make it through, there's a $2.99 cancellation fee.
The alarm also escapes the browser: a FREE-WiLi board on the desk flashes red LEDs and says the wake-up line in an ElevenLabs voice.
How we built it
- Next.js 15 + TypeScript + Tailwind, with every API key kept server-side in route handlers.
- Capital One Nessie API: each plan creates a real purchase against a sandbox account, so the invoice table and balance come from actual transactions. If the API is down, it switches to an in-memory demo ledger so the demo never breaks.
- ElevenLabs: the alarm's wake-up line and Brenda's voice.
- Claude (Anthropic): powers Brenda, with a persona prompt designed for maximum passive-aggressive retention.
- Web Audio API: generates the alarm sound in the browser. No audio files, just a square wave.
- FREE-WiLi (RP2040): a Python script driven by the Next.js server. It generates the voice line with ElevenLabs, converts it to an 8 kHz WAV, uploads it to the board's filesystem, and plays it alongside flashing LEDs.
Challenges we ran into
- Hardware audio: the board kept beeping instead of talking. The speaker only accepts 8000 Hz, 16-bit PCM WAV files, and the
/soundsfolder has to exist before you upload, otherwise the upload "succeeds" but nothing gets saved. - Firmware: the board came with a custom firmware that didn't respond over serial, so we reflashed the official firmware before the SDK would connect.
- Exponential pricing: the server only accepts snooze prices that fit \(0.99 \cdot 2^n\), so nobody can edit the request and buy a cheap snooze.
- Making bad UX on purpose and still usable: a dismiss button that flees your cursor, but keeps the price readable until you try to click it.
What we learned
- Dark patterns are disturbingly easy to build, and that's exactly the point of the satire.
- How to design graceful fallbacks so a live demo survives flaky Wi-Fi and missing API keys.
- Talking to microcontrollers over serial: file transfer, audio formats, and firmware flashing.
What's next for SnoozeFlix
- Haptic feedback: a vibration motor on the board's GPIO for when sound isn't enough.
- SnoozeFlix Enterprise: your boss pays to wake you up.
- Annual billing: you're charged for 365 snoozes up front.
Built With
- chatgpt
- cursor
- grok
Log in or sign up for Devpost to join the conversation.