Dead by Daylight — Gauntlet Challenge
A production-grade challenge tracker built in 2 days for Dead by Daylight Twitch streamer Zerbs — and a deliberate test of how far AI-assisted development can take a solo designer from idea to live product. Replaced two disconnected manual tools with a single real-time, interactive tracker. 24,236 views on its debut VOD. Since then, evolved into a multi-tenant platform used by 5,000+ users tracking 300,000+ games.
Design Gallery
The Problem
Zerbs was running two disconnected systems to manage his challenge: a generic Streamlabs spin wheel with no memory of completed survivors, and a static OBS overlay he manually crossed out by hand, with no way to undo a cross when a run failed. Every spin, completion, and reset was manual admin, done live, with chat watching.
The content format was strong. The infrastructure around it wasn't.
My Role & Why I Built This
I designed, built, and deployed the whole thing solo, working directly with Zerbs to clarify rules and edge cases. But this project had a second purpose: I wanted to test, in a real and time-pressured context, what AI-assisted development actually makes possible for a designer who can't write production code from scratch. Two days, one real user, one real deadline; no safety net of "it's just a demo."
Discovery
There wasn't a traditional discovery phase; the timeline was two days. I watched Zerbs' streams, noted where he struggled live, and asked him directly about rules and edge cases. One moment shaped the whole design: chat kept asking how many times Zerbs had failed at a given checkpoint, and he had no way to answer without scrolling back through a spreadsheet. That single repeated question became the seed of the failure-tracking model.
Chat kept asking the same question. That single repeated request shaped the entire failure-tracking model.
Design Decisions
Visual identity native to the game's world
DBD's language is fog, darkness, and dread, with survivor portraits as the primary asset. I leaned into that: deep void backgrounds, ember particles, a blood-moon atmosphere layer, and red/orange accents pulled from the game's palette. The goal wasn't to replicate DBD's UI, but to feel native to it.
Not a replica of DBD's UI; something that feels native to it.
Checkpoint and failure as core design, not an edge case
The challenge has a checkpoint mechanic: every 10 escapes locks in progress. I designed the data model around three states (pass/fail/in progress) with timestamps and attempt counters, so a failed run automatically rolled back to the last checkpoint in one click. No manual editing, no OBS fiddling.
A failed trial rolls back automatically; no manual editing, no OBS fiddling.
The randomiser as an event
Survivor selection needed to feel like a moment, not a dropdown. I built a roulette animation that cycles through portraits before locking with a celebration beat: a shared moment between Zerbs and chat, not just an admin action.
Designed for the audience, not the admin
The primary view was the live overlay itself: large status, minimal text, high contrast, legible at a glance on stream. A leaderboard came later, limited to streamers, ranked by completion time and failure count, with VOD-linked proof of progress to keep it trustworthy.
How It Was Built
This was built with AI-assisted development (Kilo Code), but "AI-assisted" undersells what was actually required. I skipped traditional design tools entirely. I drafted skeleton wireframes by hand, then described each interface element and its purpose to the AI, directing every structural and architectural decision. When persistent state turned out to need a server-side API route (browsers can't write to the filesystem), I worked through that architecture and debugged the implementation directly. I wasn't reviewing screenshots. I was in the code, treating the AI as a collaborator I had to direct and check, not a black box I could fully trust.
I wasn't reviewing screenshots. I was in the code, treating the AI as a collaborator I had to direct and check, not a black box I could fully trust.
What Went Wrong
The first version shipped with real problems. SQL queries weren't optimised and buckled under load. Multi-tenant data isolation was weak; one user's data could bleed into another's view. There were SQL injection vectors in user input. Within days, the login endpoint took a brute-force attack.
The Reality Check: SQL queries buckled under load. Multi-tenant isolation was weak enough that one user's data could bleed into another's view. There were SQL injection vectors in user input. Within days, the login endpoint took a brute-force attack.
I patched the SQL optimisation and tightened data isolation, using multiple AI agents as a review pass on the fixes rather than relying on my own read alone. For the brute-force attack, I enabled Cloudflare bot protection and rate-limited the login route. The leaderboard and the more polished version came after the core was stable, not before.
Fixed the foundations first. The leaderboard, the killer mode, the polish, all of it came after the core was stable, not before.
This is the part of "test and learn" that matters most: moving fast with AI-assisted development means you can ship something real in two days, but it doesn't remove the need to understand what you shipped well enough to fix it under pressure.
The Launch
The tool went live on Zerbs' stream without announcement. Chat's reaction was immediate: "OH WOW," "THATS SICK," "W to whoever made that." The OBS overlay never came back.
Zerbs' reaction the moment the tracker appeared on stream: 24,236 views on this VOD.
“OH WOW”
“omg wowww”
“FIREEEEE”
“THATS SICK”
“SO ORGANIZED”
“W to whoever made that”
24,236 people watched that VOD. The OBS overlay never came back.
Where It Is Now
What started as a single-user tool running off a local file is now a multi-tenant web product with its own database backend. Over 5,000 users have tracked more than 300,000 games. It includes a public leaderboard, a second "Killer Gauntlet" mode with its own rules, cross-device access, and onboarding for new users who don't have Zerbs' context.
Public Leaderboard
Streamers ranked by completion time and failure count, with VOD-linked proof of progress.
Killer Gauntlet
A second version with entirely different rules focused on killer gameplay.
Multi-Tenant
Multiple concurrent streamers running different challenges, each with isolated progress.
What I'd Do Differently
- Write automated tests during the initial build, not after bugs appear in production
- Run security and load testing before launch, not in reaction to an active attack
- Use git properly from day one, so failing changes can be reverted without destabilising the build
- Take a more spec-driven approach so changes stay concise and isolated
- Map the longer-term feature roadmap with Zerbs upfront, so things like the leaderboard are planned rather than bolted on
Escaping the Fog
A Twitch streamer needed a better way to track a Dead by Daylight challenge. Two days later, 24,000 people watched the result live. No handoff, no sprint planning, no waiting for dev capacity. Just a problem, a user, and a designer who could close the distance between them.