codebuddy.tech

building in public from Vancouver

Building AI Products Between Uber Rides: My Delusional Developer Diary

It's past midnight and I'm sitting in my Honda Civic outside a bubble tea shop on Commercial Drive, watching my laptop battery slowly die while I debug the most embarrassing API integration failure of my life. The drunk university students I dropped off five minutes ago paid cash and stumbled toward what I assume was their dorm, leaving me alone with my thoughts and a codebase that's more spaghetti than software. This is my life now: Vancouver Uber driver by night, wannabe AI entrepreneur during surge pricing lulls.

Six months ago, I had zero AI experience and a Computer Science degree I wasn't using. Now I've got three half-finished AI products, a GitHub full of abandoned repositories, and enough rejection emails from investors to wallpaper my studio apartment in Burnaby. But I'm still here, still building, still convincing myself that the next deployment will be the one that changes everything.

The Reality Check Nobody Talks About

Everyone on Twitter makes indie AI development look glamorous. Post a screenshot of your revenue dashboard, share some inspirational quote about building in public, watch the likes roll in. The reality is uglier. I'm building products in Tim Hortons parking lots at 3 AM because that's when the tourists stop requesting rides and I actually have time to code.

My current setup is pathetic: 2019 MacBook Pro with a cracked screen, phone hotspot for internet that cuts out every time a bus drives by, and a car seat that wasn't designed for humans to spend eight hours debugging Python scripts. My back is permanently twisted from hunching over my laptop in cramped spaces, and I've memorized every 24-hour coffee shop between downtown and Richmond because they're the only places with reliable WiFi and bathrooms.

The AI development ecosystem is moving so fast that any tutorial I bookmark is obsolete before I finish reading it. OpenAI releases a new model, Anthropic updates their API, Google announces something that makes everything I'm working on potentially irrelevant. I'm constantly rebuilding the same features because the underlying technology shifted while I was driving drunk people home from Granville Street.

Product One: The Language Learning Disaster

My first AI product was going to revolutionize language learning for immigrants in Vancouver. Because nothing says "understanding your market" like a guy who only speaks English building language tools for people learning English, right?

The concept seemed solid: an AI tutor that helped newcomers practice English using Vancouver-specific scenarios. Order coffee at JJ Bean, ask for directions to VCC, navigate a conversation with a landlord about BC Hydro bills. Real situations they'd actually encounter, powered by GPT-4 with custom prompts that understood local context.

I spent three weeks building this thing between rides. Parked outside YVR waiting for airport runs, coding conversation flows. Sitting in the McDonald's on Robson at 2 AM, training the AI on Vancouver slang and local references. The app could generate realistic dialogues about anything from SkyTrain delays to explaining the difference between Vancouver and North Vancouver to confused tourists.

The technical implementation was a mess. I'm talking about state management held together by prayer, a database schema that made sense at 4 AM but looked like abstract art during daylight debugging sessions. The AI responses were inconsistent — sometimes brilliant, sometimes recommending that users practice English by asking strangers about "the beautiful mountains of Regina" or suggesting they take the "Toronto subway to Stanley Park."

Launch day came. I posted on Reddit, shared in some Facebook groups for newcomers, even convinced a few passengers to try it out. The feedback was... educational. Turns out people learning English don't want to practice with an AI that occasionally forgets which city it's supposed to be helping them navigate. One user left a review that still haunts me: "App told me to practice ordering 'Vancouver-style pizza.' I asked at three places. No one knows what that means. Neither does the app."

Total users after two months: minimal adoption. Lessons learned: Maybe understand your target market before building solutions for them.

Pivoting in a Parking Lot

Product failure is different when you're building between Uber rides. There's no team meeting to discuss next steps, no whiteboard session to brainstorm pivots. Just me, sitting outside Cactus Club at 1 AM, staring at Google Analytics showing zero active users, trying to figure out what went wrong while monitoring for ride requests.

The pivot came during a particularly slow Tuesday night. I was parked outside a hotel downtown, watching my language learning app's engagement metrics flatline, when I overheard two passengers talking about how impossible it was to find good content creators for their startup's blog. They needed technical content, they needed it fast, and they were willing to pay well for quality writing.

Lightbulb moment: What if I built an AI writing assistant specifically for technical content? Not another generic AI writing tool, but something purpose-built for SaaS companies, startups, developers — people who needed content that didn't sound like it was written by a robot trying to hit SEO keyword targets.

I started building that night. New GitHub repo, new product vision, same cracked laptop screen and terrible posture. This time I was smarter about the architecture — or at least I thought I was. Cleaner API design, better database structure, more thoughtful prompt engineering. The AI could write technical blog posts, API documentation, product descriptions, even code comments that didn't sound like they were generated by a particularly verbose random number generator.

The Technical Nightmare Nobody Warns You About

Building AI products as a solo developer is like being a one-person orchestra where half the instruments are on fire and the sheet music keeps changing mid-performance. Every integration breaks differently. Every API has its own special way of failing catastrophically.

OpenAI's API would randomly start returning responses in what I think was Portuguese, but only for certain prompt types, only on Tuesdays, only when Mercury was in retrograde. Anthropic's Claude would work perfectly for weeks, then suddenly develop strong opinions about not writing marketing copy because it might be "manipulative." I spent more time managing API quirks than building actual features.

Vector databases are the special hell reserved for indie developers who thought storing embeddings would be straightforward. Pinecone worked great until it didn't. Weaviate had beautiful documentation that bore no resemblance to how anything actually functioned. I tried building my own vector storage solution and learned why that's a bad idea around the same time my laptop started making concerning noises during indexing operations.

The infrastructure costs were eating me alive. Every experiment, every test, every time I forgot to add proper rate limiting — money flying out of my AWS account faster than I could earn it driving around Vancouver's late-night crowd. I optimized everything I could think of: smaller models for simple tasks, response caching, aggressive prompt engineering to reduce token usage. Still burning through money on compute costs while my actual revenue remained stubbornly at zero.

Finding Users in Unexpected Places

Marketing an AI product from your car is surreal. I'm posting screenshots to Twitter while waiting at red lights, responding to Hacker News comments between passenger pickups, trying to build an audience of potential customers while my primary job involves driving people around who have no idea I'm moonlighting as a tech entrepreneur.

The breakthrough came from an unexpected source: my Uber passengers. I started mentioning my AI writing tool to anyone who looked like they worked in tech. Vancouver's startup scene is surprisingly small, and apparently everyone knows everyone else. A data scientist I drove from a downtown coworking space to YVR tried my tool and loved it. She introduced me to her startup's marketing team. They became my first paying customers.

Word spread organically through Vancouver's tech community. Coffee shop conversations, networking events I couldn't attend because I was driving, Slack groups where my early users shared my tool with their colleagues. I wasn't scaling through traditional marketing channels — I was growing through the weird intersection of ride-sharing and tech networking that only exists in cities like Vancouver where everyone's connected by about two degrees of separation.

Revenue started trickling in: modest amounts the first month, growing consistently in subsequent months. Not life-changing money, but enough to cover my AWS bills and buy better coffee for those 3 AM debugging sessions. More importantly, people were actually using what I'd built. The AI was generating content that real companies were publishing, content that didn't sound like it came from a content mill or keyword-stuffing factory.

The Validation Trap

Success is dangerous when you're building solo. That first taste of revenue, those initial positive user reviews, the satisfaction of seeing your code actually solve real problems — it's intoxicating. I started thinking I'd figured it out, that I'd cracked the code on AI product development while sitting in my Honda Civic.

I got cocky. Started planning Product Three before I'd properly scaled Product Two. Began sketching out some ambitious AI-powered content management system that would revolutionize how small businesses handled their entire content pipeline. The scope creep was real and it was spectacular.

Meanwhile, my existing users were asking for basic features I hadn't built: better content organization, collaboration tools, integrations with platforms they actually used. Instead of listening, I was chasing the next shiny AI capability, trying to build something technically impressive rather than something genuinely useful.

The wake-up call came during a particularly honest conversation with my biggest customer, a startup that was paying me meaningfully for their content generation. They loved the AI's output quality, but the tool itself was clunky and missing obvious features. They were copying content into Google Docs to share with their team, manually tracking what they'd generated, keeping spreadsheets of content ideas because my product didn't handle any of that workflow.

Building What People Actually Want

That feedback session changed everything. I stopped working on the grand vision and started fixing the boring problems my actual users were dealing with every day. Better file organization, team collaboration, content calendars, usage analytics that made sense. Not sexy features, not AI breakthroughs, just solid product development that made people's lives marginally easier.

The technical work was less interesting but more important. Building proper user authentication, implementing file sharing, creating dashboard views that loaded in under three seconds. I spent more time optimizing database queries than training AI models, more time on UX improvements than prompt engineering breakthroughs.

Revenue grew consistently month over month. Still not enough to quit Uber, but enough to start thinking about what that transition might look like. My users were sticking around, upgrading to higher tiers, referring colleagues. The product was becoming genuinely useful rather than just technically clever.

The Long Road Ahead

I'm still driving Uber, still building AI products between rides, still debugging deployment issues in parking lots across Vancouver. But something has changed. This isn't just a side hustle anymore — it's becoming a real business, slowly and messily and in ways I never expected.

The AI ecosystem is still moving faster than I can keep up with. New models, new capabilities, new competitors launching every week. But I'm starting to understand that success isn't about having the most advanced AI or the most innovative features. It's about solving real problems for real people, consistently and reliably, even if your development environment is the front seat of a 2018 Honda Civic.

There's still a long way to go. Revenue needs to grow substantially before I can stop driving nights. The product roadmap is full of features that seem obvious in retrospect but require weeks of development time I'm stealing from sleep and social life. Competition is increasing, and VC-funded startups are building similar tools with teams of experienced developers and marketing budgets that dwarf my annual income.

But I'm still here, still building, still convinced that bootstrapping an AI company from your car is somehow a viable career path. Maybe I'm delusional. Maybe this whole experiment will flame out spectacularly and I'll be driving Uber for the next five years. Or maybe, just maybe, I'll figure out how to turn late-night coding sessions and customer conversations into something that resembles a real business. Either way, I'll be documenting every mistake, every small victory, every moment of questioning whether any of this makes sense. Because if there's one thing I've learned building AI products between Uber rides, it's that the journey is stranger and more educational than any outcome I could have planned.

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in:

This blog is hosted on Hostinger — fast, affordable hosting I use for all my domains. If you're building something, it's worth a look.