From one phone
to a worker fleet.
A subscription service built around a difficult engineering problem: turning an unpredictable mobile workflow into a remotely operated service for real customers.
- Django owned requests, payments, assignment and execution history.
- Python workers controlled Android devices and emulators through an authenticated REST API.
- State recognition, computer vision, OCR and recovery handled unreliable execution.
ARCHITECTURE AT A GLANCE
Control and execution could evolve independently.
Engineering decisions & lessons
What worked
Separating business state from device execution made it possible to add emulators without a major backend redesign. Workers could restart and reconnect while Django retained request state.
What I would change
The original coordination used polling. A redesign would introduce a queue with explicit ownership, leases and heartbeats, alongside stronger completion semantics and latency measurements.

