codebuddy.tech

building in public from Vancouver

Building AI Products Between Rides: A Vancouver Developer's Real Story

Two years ago, I was parked outside a downtown Vancouver office building at 11 PM, engine idling while my passenger finished a phone call, when I got the notification that changed everything. My first AI side project had just processed a meaningful number of API calls. Not exactly life-changing money, but something clicked in that moment. I wasn't just driving people around anymore — I was building something that could work while I slept.

Today, between rides and late-night coding sessions in coffee shops across the city, I've launched three AI products that collectively generate significantly more than my day job ever did. I'm not going to pretend this was some overnight success story or that I cracked some secret code. This is the messy, caffeine-fueled reality of building AI products as a Vancouver developer with more ambition than free time.

The story I'm about to share isn't about revolutionary breakthroughs or venture capital. It's about stealing moments between Uber pickups, debugging code in McDonald's parking lots, and the slow realization that the AI gold rush isn't just for Silicon Valley anymore. It's also about learning to ship fast and iterate faster — because when your office is your car and your development time is measured in passenger-free intervals, every minute counts.

The Accidental AI Developer

I didn't start building AI products because I had some grand vision about the future of technology. I started because I was tired of trading time for money, and OpenAI's API had just become accessible enough that someone like me — a self-taught developer with a decent Python background and too much time spent in Vancouver traffic — could actually build something useful.

My first project was embarrassingly simple: a content summarization tool for local news sites. I'd noticed that Vancouver's media landscape was fractured — important city council decisions buried in lengthy articles, housing policy updates scattered across multiple sources, transit changes announced in formats that made them impossible to find. I built a scraper that would pull articles from major Vancouver news sources and use GPT to create digestible summaries.

The technical implementation was basic. A Python script running on a DigitalOcean droplet, BeautifulSoup for scraping, OpenAI's API for summarization, and a simple web interface built with Flask. Total development time: maybe forty hours spread across three weeks, mostly coded during the dead periods between ride requests.

I launched it quietly, posted it on r/vancouver, and expected maybe a dozen people to try it. Instead, I woke up to hundreds of users and my first OpenAI bill that made me panic-check my bank account. That's when I realized I needed to treat this seriously — not just as a side project, but as a real business.

The learning curve was steep. I knew how to code, but I knew nothing about product management, user feedback, or how to price AI-powered services. I made every mistake possible: over-engineering features nobody asked for, underestimating API costs, building for myself instead of my users. My second month's revenue was minimal because I'd spent so much time adding features that I forgot to fix the bugs that were driving people away.

The Vancouver AI Reality

Building AI products in Vancouver comes with unique challenges. We're not Silicon Valley — we don't have unlimited VC funding or a culture that celebrates failure as learning. We're also not Toronto, with its established tech ecosystem and government support. We're somewhere in between, which means we have to be scrappier and more creative about how we build and launch products.

The cost of living here affects everything. When your rent and car payment eat up most of your income, you can't afford to spend months building the perfect product. You need something generating revenue quickly, even if it's just enough to cover your OpenAI bills and maybe a coffee that doesn't come from a gas station.

I work out of my car a lot. Not by choice — Vancouver coworking spaces cost more than my monthly phone bill, and coffee shops kick you out after a few hours. But there's something liberating about having your office be wherever you park. I've debugged machine learning models in the parking lot of Metrotown, refined prompts while waiting outside YVR for pickup requests, and pushed code to production from a Tim Hortons on Granville Street at 2 AM.

The internet situation is always interesting. Vancouver's public WiFi is spotty at best, so I've become an expert at finding the sweet spots — the corner booth at Blenz where you can see the router, the parking spot outside the library branch with the strongest signal, the McDonald's on Broadway that somehow has better upload speeds than my apartment.

What Actually Moved the Needle

The breakthrough came when I stopped trying to build the next ChatGPT and started focusing on solving specific problems for specific people. My successful products aren't revolutionary — they're just useful enough that people are willing to pay monthly for them.

Product number two was a rental listing analyzer for Vancouver's housing market. Anyone who's searched for apartments here knows the pain: misleading photos, vague descriptions, prices that make you question your life choices. I built a tool that would scrape Craigslist and Facebook Marketplace, analyze listings with GPT-4, and flag potential red flags or highlight genuine deals. The AI would score listings based on price per square foot, proximity to transit, and description quality.

The technical stack was similar to my first product, but I'd learned to keep costs manageable. Instead of processing every listing in real-time, I batched requests during off-peak hours when OpenAI's rates were lower. Instead of storing everything in a database, I used simple JSON files and regenerated the data daily. Instead of a complex user interface, I created a simple email digest that people could subscribe to.

Launch was different this time. I spent a week posting in Vancouver Facebook groups, Reddit communities, and even some Discord servers I'd found for people apartment hunting in the city. The response was immediate — within days, I had a meaningful number of subscribers. More importantly, I had validation that I'd found a real problem worth solving.

Product number three came from my own frustration with Vancouver's restaurant scene. Not the quality — the city has incredible food — but the discovery problem. Yelp reviews are mostly useless, Google reviews are inconsistent, and food blogs are either sponsored content or written by people with very different tastes than mine. I built a restaurant recommendation engine that would analyze reviews from multiple sources, identify genuine opinions from likely fake ones, and provide personalized recommendations based on your preferences.

The AI component was more sophisticated this time. I used embeddings to map review sentiment and cuisine preferences, built a recommendation algorithm that learned from user feedback, and even added a feature that would suggest dishes to order based on recent reviews mentioning specific menu items. I launched it just as Vancouver was reopening after COVID restrictions.

The Real Development Process

People always ask about my development process, expecting some sophisticated methodology. The reality is much more chaotic. I code in stolen moments — fifteen minutes while a passenger runs into a store, an hour during lunch break at my day job, three-hour sessions on Sunday mornings before the city wakes up.

My setup is minimal by necessity. A refurbished MacBook Pro, a car charger that's seen better days, and a mobile hotspot for when WiFi isn't available. I use VS Code with a few essential extensions, keep my environments simple, and rely heavily on cloud services because I can't guarantee where I'll be working from day to day.

Version control happens through GitHub, but my commit messages probably violate every best practice guide ever written. "Fixed the thing that was broken" and "API calls work now" are common entries in my project histories. Documentation is minimal — not because I don't believe in it, but because when you have thirty minutes to implement a feature before your next ride request, you prioritize differently.

Testing is mostly manual and mostly done in production. I know this makes seasoned developers cringe, but when you're a team of one building products that process a reasonable number of requests a day, the overhead of proper testing frameworks often isn't worth it. I do test the critical paths obsessively — anything involving payments or data that users depend on gets multiple passes — but the UI tweaks and nice-to-have features get shipped with minimal validation.

Customer support happens through a simple contact form and my personal email. I've found that being responsive and human in support interactions creates more loyalty than having a polished help center. When someone emails about a bug, they get a response from me personally, usually within a few hours. When someone suggests a feature, I tell them honestly whether I can build it and when they might expect it.

The Money Reality

Let's talk numbers, because that's what everyone really wants to know. My three products currently generate steady monthly recurring revenue. That might not sound like much compared to Silicon Valley success stories, but in Vancouver, it's the difference between financial stress and financial breathing room.

The costs are manageable but significant. OpenAI API calls are my biggest expense across all products. Server hosting is another monthly cost. Domain names, SSL certificates, email service, analytics tools — the little subscriptions add up. My biggest expense is actually time — the opportunity cost of hours spent coding instead of driving, which on busy nights can be substantial.

Revenue comes entirely from subscriptions. I tried one-time purchases and freemium models, but monthly subscriptions provide the predictable income that makes this sustainable. My prices are deliberately modest — I'd rather have more customers paying less each than fewer customers paying more. Vancouver isn't San Francisco; people here are price-conscious and willing to switch if something gets too expensive.

The seasonal patterns are interesting. My rental analyzer does best in spring and fall when people are apartment hunting. The restaurant tool peaks during summer and holiday seasons. The news summarizer is steady year-round but spikes during election periods or major city council decisions.

I reinvest most profits back into the products — better servers during peak usage, new API features when OpenAI releases them, occasional paid advertising on local Facebook groups. I keep my lifestyle inflation minimal because this income isn't guaranteed, and I remember too clearly what it felt like to choose between gas money and grocery money.

The Failure Collection

For every product that worked, I built three that didn't. There was the AI-powered event discovery app that nobody used because Facebook already solved that problem. The automated social media scheduler for local businesses that I spent two months building before realizing my target customers couldn't afford monthly subscriptions. The personal finance assistant that was too complex for people who wanted simple budgeting and too simple for people who wanted complex analysis.

The hardest failure was a tool for Vancouver freelancers that would analyze job postings and suggest optimal pricing strategies. I was convinced this would be huge — every freelancer I knew struggled with pricing, and AI seemed perfect for analyzing market rates and competition. I spent four months building it, created detailed personas, even pre-sold subscriptions to beta testers.

It flopped completely. Freelancers wanted human advice about pricing, not algorithmic suggestions. They wanted community and networking, not data analysis. I had built a solution for a problem that didn't actually exist in the way I thought it did. That failure taught me more about product-market fit than any success story ever could.

What's Next

I'm not trying to build the next unicorn or get acquired by Google. I'm trying to build sustainable, profitable products that solve real problems for people in my city. The AI wave won't last forever in its current form, but the underlying need for better tools and automation will continue.

My next product is already in development — an AI assistant for Vancouver small business owners that helps with everything from writing social media posts to analyzing customer feedback. It's based on conversations I've had with dozens of local business owners during rides, and early testing suggests I'm onto something.

The long-term goal isn't to replace my driving income entirely, though that might happen eventually. It's to create enough recurring revenue that I have flexibility and options. When you're not living paycheck to paycheck, you can take bigger risks and think longer-term.

Building AI products between Uber rides isn't glamorous, but it's taught me that innovation doesn't require perfect conditions or unlimited resources. It just requires persistence, willingness to fail fast, and the ability to find opportunity in the spaces between other obligations. Vancouver might not be Silicon Valley, but that's exactly why it's the perfect place to build products that solve real problems for real people.

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in: