Case Study

When the technician doesn't show up,
the machine still needs to check in.

Bad Dog Games had a data collection process so broken that machines were going dark for 30 days at a time, operators were turning off equipment to save electricity, and the company's reputation was shrinking before a single machine was ever placed. I redesigned the collection point entirely.

Client Bad Dog Games
Role Sole UX Designer
Type Systems Design / Field UX / Behavioral Design
Users Casino Players / Machine Operators
0 apps
Download required
Any phone
iPhone or Android
2 langs
English & Spanish
30 days
Max revenue lost per lockout

The Problem

A broken process with a very long damage chain

Bad Dog Games had no reliable way to know where their machines were, whether they were active, or how they were performing. But the deeper problem was how that data was collected in the first place, and what happened when it wasn't.

The existing process required technicians with specific Samsung devices, special logins, and a proprietary app to scan machines on scheduled routes. Every single link in that chain was a failure point.

Three machines in a venue: one showing locked screen, one dark, one working
The before state, in the field. Left machine: locked, displaying the Bad Dog blocked screen in Spanish. Center machine: powered off by the venue owner to avoid running up the electric bill while waiting for a technician. Right machine: the only one earning revenue.
Bad Dog locked screen showing EQUIPO BLOQUEADO message in Spanish
The lockout screen. "EQUIPO BLOQUEADO" (Equipment Locked). Operators received this message and a phone number. Some called. Many just turned the machine off and waited.

The Full Damage Chain

📅
Machine hits Day 7 without a technician scan
The RMS system requires a data collection scan every 7 days. When technicians missed their route, the machine locked itself. Routes could span hours of driving. One technician. Multiple locations. One broken app.
🔒
Machine locks. Venue owner can't resolve it.
The lockout screen displays a support number. Many owners didn't call. They just turned the machine off to stop paying electricity on a device earning nothing.
Machine sits dark until the next collection visit
If it locks on day 7 and the next scheduled visit is 30 days out, that machine earns zero revenue for 30 days. No alert. No escalation. No one knows.
📢
Word spreads between venue owners
Bar and gaming venue owners talk. "The Bad Dog machines lock themselves and it takes forever to get someone out." Bad Dog was losing new placement deals before machines were ever installed, because of reputation damage from a data collection process.
📉
Growth stalls
Not because of the product. Not because of the games. Because the infrastructure behind the machines had never been properly designed.
How bad it actually got
The WhatsApp workaround
When the proprietary technician app failed to scan the QR codes (which it did regularly), operators would photograph the machine screen and send the images to me via WhatsApp. I would then attempt to decode the QR codes from a phone photo, often taken at an angle, under venue lighting, with glare across the screen. A single point of glare covering any part of the code's dense matrix of pixels made the entire code unscannable. One affected section and the whole read failed. Sometimes this process took 15 to 30 minutes per machine. Sometimes it wasn't possible at all. Technicians had long routes to complete and sometimes drove four hours for a single location. Multiple technicians were occasionally dispatched to one venue for one machine.

The Old System

Six codes. One broken app. Zero margin for error.

The old technician QR screen shows "QR Code 1 of 6." Because technician visits were infrequent, so much data accumulated between collections that it couldn't fit in a single code. The system split it across up to six separate QR codes that had to be scanned in sequence.

Each code was packed with an extremely dense matrix of pixels to hold all that data. That density made them highly sensitive to anything less than perfect conditions. A glare from overhead lighting. A slight angle. A reflection off the screen glass. Any interference with even one section of the code and the entire scan failed. Not just that code. The whole sequence had to restart.

Before
Technician QR / Up to 6 codes per machine
Old technician QR code screen showing QR Code 1 of 6
Up to 6 codes per collection, scanned in sequence
Extremely dense pixel matrix, highly sensitive to glare and reflection
Required proprietary app that failed regularly
One failed scan broke the entire sequence
Samsung device + special login required
After
Player QR / One code, any phone
New player QR code screen with large scannable code and Enter Code button
One code per scan, displayed large for reliable reads
Large size compensates for data density, resists glare
Native phone camera, no app needed
Works on any iPhone or Android
"I would like free credits" incentive built into the screen

The Insight

The technician was never the right person for this job

Every machine already had a QR code on it. Every player already had a phone. The question wasn't how to make technicians more reliable. It was why a player couldn't close the loop instead.

The redesign didn't add new hardware or require a software install. It redirected an action that was already happening. Players were already standing next to these machines with phones in their hands. That existing behavior just needed a purpose.

Row of working La Criollita machines in a venue
Machines in operation. The after state. Active, earning, no lockouts pending.
Player actively using a machine, Super Win screen showing $38
The actual user. Older player, engaged, phone likely in her pocket. The flow had to work for her without friction or instruction.
Old technician collection screen showing Next collection date and Collect buttons
The old collection screen. Technician-facing. Specialized. Required a Samsung device and a working proprietary app. Neither was reliable.

How the System Works

A five-step loop. No app. No technician.

The machine has no internet connection. The player's phone is the bridge. That's the entire architecture.

🎰
1
EGM Machine
QR displayed
No internet
📱
2
Player's Phone
Any phone
No app
🗄️
3
Bad Dog Server
Machine ID, GPS,
timestamp logged
🔢
4
Code Generated
Returned to
player's phone
5
Machine Validates
Feedback on machine,
not on phone
Player-initiated action
Server response
Phone acts as bridge. Machine never touches the internet directly.
1
QR code appears automatically on the machine
No scheduling, no dispatch, no specialized device. The code is there whenever a player is there.
zero staffing cost
2
Any player scans it with any phone
iPhone or Android. No app download required. The native camera app is all they need.
universal access
3
Phone opens the Bad Dog mobile site and transmits data
The machine itself has no internet connection. The player's phone is the connection point. The mobile site collects machine ID, GPS location for compliance tracking, and timestamp. Then sends it to Bad Dog's server.
compliance-ready location data
4
The site generates a code and displays it on the phone
This is all the mobile site does. Scan. Send data. Return code. The phone's job is done in seconds.
intentionally minimal
5
Player enters the code on the machine
Validation and all success/failure feedback happen on the machine. Once the code is entered, the player is done with their phone entirely.
feedback on machine, not phone
iOS location permission prompt from rms.baddoggames.com
Screen 1 of 3
Location permission request
The site requests GPS access for compliance tracking. One tap. The player doesn't need to understand why. The data is collected and sent before they see the code.
Mobile site success screen in English showing activation code 20VK74
Screen 2 of 3
Success screen, English
Activation code, large and unambiguous. "Now, on the slot machine you scanned, enter this code." The phone's job is done. Player's attention goes back to the machine.
Mobile site success screen in Spanish showing activation code 20VK74
Screen 3 of 3
Success screen, Spanish
Same screen, player's language. The flag in the corner toggles between English and Spanish. One tap, no menu, no settings. Designed for a user population that is predominantly Spanish-speaking.

What Changed

Same outcome. Completely different actor.

The goal of machine data collection didn't change. Who was responsible for it did.

Before
Technician-dependent route scans
🛻
Technician dispatched on routeScheduled visits, sometimes 4+ hours of driving for one locationscheduling dependency
📱
Samsung device + special login requiredProprietary app that regularly failed to scanhardware dependency
6️⃣
Up to 6 QR codes per machineDense pixel matrix, highly sensitive to glare. One bad section and the entire read failed.scan failure risk
Missed scan = machine lockoutVenue owners powered machines off. Up to 30 days of lost revenue per incident.direct revenue loss
📢
Reputation damage spreadingVenue owners warned each other. Bad Dog was losing placements before machines arrived.business growth impact
After
Player-initiated, continuous collection
🎰
QR appears automatically on machineNo scheduling, no dispatch, no routezero staffing cost
📱
Any player, any phoneNative camera app, no download, no loginuniversal access
1️⃣
One code, displayed largeSize compensates for data density. Reliable scan even under venue lighting.scan reliability
🗄️
Phone transmits data continuouslyEvery player scan is a data event. No gaps between visits.compliance-ready
📈
Lockout risk eliminated by designNo technician dependency means no single point of failurescalable

Design Decisions

The choices that made this work in the field

This wasn't a typical mobile design project. The users were casino players, ranging from tech-comfortable to tech-averse, on a loud floor, often older. Every decision had to account for that context.

1
The mobile site was intentionally minimal
The phone does four things: open a page, collect data, send it, display a code. That's it. No account creation, no profile, no onboarding. Anything that added steps on the phone was a step that could cause a player to abandon the flow. Everything else (validation, feedback, the gameplay continuation) happens on the machine where the player's attention already is.
Lower Abandonment Risk Works for Low-Tech Users Less Branded Experience
2
The QR code is large because it has to be
QR codes encode data through pixel density. The more data a code carries, the more tightly packed that matrix becomes, and the larger the code needs to be to remain reliably scannable. The machine owner required that the scan capture a significant volume of machine data in a single read. A smaller code physically could not hold it. Size was the only way to keep the matrix scannable under real-world venue conditions: overhead lighting, screen glare, varied scan distances. This wasn't an aesthetic choice. It was physics.
Reliable Under Venue Lighting Works at Varied Distances Requires Screen Real Estate
3
Bilingual throughout, large text by default
The user base skews older and includes a significant Spanish-speaking population. Both the mobile site and machine UI were designed bilingual from the start, not as an afterthought. Large text wasn't a nice-to-have. It was the default. A player who can't read the prompt at a glance while holding their phone in one hand and a drink in the other will not complete the flow.
Accessible for Older Users Reaches Spanish-Speaking Players More Content to Maintain
4
Feedback lives on the machine, not the phone
Once a player enters the code, the machine handles everything. The phone doesn't need to confirm success, show a result, or stay open. This keeps the interaction model clean: the phone is a bridge you use and put away, not an ongoing interface. It also means the flow works even if a player locks their screen or switches apps after getting the code.
Works If Phone Locks Keeps Player Attention on Machine No Phone-Side Confirmation

Behavioral Design

Getting players to scan voluntarily

A QR code on a machine doesn't scan itself. Getting players to engage required more than availability. It required a reason. The solution used a two-stage behavioral approach: make it appealing before making it required.

Day 5
Soft Prompt
A prompt appears offering free credits as an incentive to scan. Low pressure. The player can decline and continue playing. The goal is introduction and habit formation before the requirement kicks in.
Day 7
Required Scan
The machine requires a scan to continue. By Day 7, most players have already encountered the flow voluntarily. The gate doesn't feel like an ambush. It feels like a familiar step with a known reward on the other side.
Why this sequencing matters
Introducing a required behavior without prior exposure creates friction and frustration. Introducing it voluntarily first, with a reward, means the Day 7 gate is encountered as a known action rather than an unfamiliar obstacle. The behavioral design reduces resistance by the time compliance becomes mandatory.

Outcomes & Reflection

What this project actually delivered

This project isn't about a mobile UI. It's about identifying the wrong assumption at the root of a business problem and redesigning around it. The technician was the bottleneck. The player was the solution. The phone was already in their pocket.

🔓
Lockout Risk Eliminated by Design
By removing the technician as the sole collection mechanism, machines were no longer dependent on a person showing up on schedule. The failure point was eliminated, not managed.
💰
30-Day Revenue Gaps Closed
Machines that previously sat dark for weeks at a time while waiting for a technician visit now stay active through player-initiated scans that happen continuously.
📍
Reliable Location and Compliance Data
Bad Dog went from technician-dependent location snapshots to continuous, GPS-approximate data collected with every player scan. Compliance tracking became viable for the first time.
📣
Reputation Risk Addressed at the Source
The word-of-mouth problem between venue owners was downstream of the lockout problem. Fix the lockouts and the reputation narrative changes. The design addressed the root cause, not the symptom.
📊
Operational Visibility for the First Time
With continuous scan data, Bad Dog gained access to machine-level performance metrics (uptime, popularity, plays) that had been impossible to track reliably before.
📐
Scalable Without Adding Headcount
The system grows with the machine footprint. Adding machines doesn't require adding technicians. The players in the room are the infrastructure.

"The best systems design I've done has been about finding the person who was already in the room. Players were already standing next to these machines with phones in their hands. The technician model put the right action in the wrong person's hands. Shifting that wasn't a UX insight. It was a business one."