Fishbot.org: From Side Project to Automated Fishing Bot
The journey of building an AI-powered World of Warcraft fishing bot using YOLO computer vision, and launching it as a commercial product with free and paid tiers.
The Origin Story
Fishing in World of Warcraft is notorious for being one of the most tedious activities in the game. You cast your line, watch a bobber float in the water, wait for a splash, and click at precisely the right moment. Repeat hundreds or thousands of times. It's repetitive, mind-numbing, but necessary for certain achievements, items, and in-game gold.
I started this project as a personal tool—something to save my own sanity while farming fishing achievements. But as I built it, I realized this could be genuinely useful to a large community of WoW players who also found fishing tedious. That's when it evolved from a personal script into a proper product.
Technical Implementation
The core challenge was reliably detecting when the fishing bobber splashes, which signals that you've caught something and need to click. This needed to work across different graphics settings, lighting conditions, weather effects, and screen resolutions.
I chose YOLO (You Only Look Once) for object detection, starting with YOLOv5 and eventually upgrading to YOLOv8 for improved accuracy and speed. The model was trained to detect both the fishing bobber and the splash animation that indicates a catch. Converting models to ONNX format significantly improved inference speed, making the bot responsive enough for real-time use.
The bot was built as a Python desktop application using FastAPI for the backend. This architecture allowed the computer vision processing to run efficiently while providing a clean web-based UI that users could access through their browser. Docker containerization made distribution and updates simpler.
Building the Product
Turning a working prototype into a product required thinking beyond just the core functionality. Users needed installation instructions, documentation, troubleshooting guides, and customer support. The product needed to handle edge cases gracefully and provide useful error messages.
I built a website using React that explained the bot's features, included video demonstrations, and provided detailed setup guides. Supabase handled user authentication and license management. Stripe integration enabled paid subscriptions for the premium tier, while the free tier gave users basic functionality to try before committing.
Monetization Strategy
I opted for a freemium model: a free tier with basic fishing automation, and a paid tier with advanced features like multi-account support, customizable automation scripts, and priority support. This let users experience the bot's value before deciding whether to upgrade.
The free tier served multiple purposes—it lowered the barrier to entry, provided valuable feedback and bug reports from a larger user base, and acted as a marketing funnel for the paid tier. Users who found the bot useful and wanted more features naturally converted to paid subscriptions.
Challenges and Solutions
One major challenge was handling the variety of user setups. Different screen resolutions, graphics settings, and even gaming peripherals (like ultrawide monitors) required the bot to be flexible and configurable. I added calibration tools that let users adjust detection thresholds and regions to match their specific setup.
Game updates were another concern. When Blizzard released patches that changed UI elements or fishing mechanics, the bot sometimes needed adjustments. Building a robust update system that could push fixes quickly without requiring users to manually download new versions was crucial for maintaining a good user experience.
Reception and Impact
Fishbot.org found its audience among WoW players who valued their time and wanted to automate the most tedious aspects of the game. The free tier attracted a wide user base, while dedicated players who fished extensively converted to paid subscriptions for the advanced features.
User feedback was invaluable for improvement. Players suggested features I hadn't considered, reported edge cases I'd never encountered, and helped identify bugs in specific scenarios. This community-driven development made the product significantly better than what I could have built alone.
Key Takeaways
This project taught me that the gap between a working prototype and a real product is larger than many developers realize. The technical implementation might be 50% of the work—the rest is user experience, documentation, support, updates, and all the polish that makes something genuinely usable by regular people.
I also learned that monetization doesn't have to be all-or-nothing. The freemium model worked well because it aligned incentives—users could verify the bot's value before paying, and I benefited from the larger user base for testing and feedback while generating revenue from serious users.
Finally, building something that saves people time has real value. Users weren't just paying for the technical capability—they were paying to avoid hours of tedious clicking so they could enjoy the parts of the game they actually found fun.