Categories
AI Development

Tips for LLM-based Development With Lovable

This is a collection of tips I’ve picked up over the past few weeks while building on my baseball coaching app using Lovable.

First, start a new feature with Claude. Seriously. Lovable does great UI, but is more focused on getting something built (and usable, from a usability perspective) than making a good capital-p Product.

I start almost every new feature in Claude. I give it enough to get the gist of what I want, then I ask it to have a conversation with me to really hone in on it.

I recently built a feature to recommend a batting order. Here’s the start of the prompt:

Know what this sounds like?

(“A lazy PM?”, you say? Yes, but…)

It sounds like a conversation you’d have with someone smarter than you when you’re just kinda spit-balling an idea. I put this in a Claude project about my baseball project, and then we just “chat”.

Claude asks me questions about edge cases, UI, and usage. It uncovers things I was thinking about but never thought to write down. It also uncovers things I wasn’t thinking about and challenges my answers. Seriously underrated.

Now that you have your prompt, past it into Lovable, but click on the “Chat” option and add one line to the end of it:

Think step by step and build a plan to implement this feature.

In my experience, Lovable LOVES TO WRITE CODE. Which is great, considering that’s what we think we’re asking it to do.

But what I’ve noticed is that Lovable loves to write code before it’s really thought through it. So it is doing it’s thinking while it’s doing it’s writing, which almost always ends up with crappy, error-prone code.

Enabling chat mode and asking it to build a plan before writing code lets Lovable actually think about how to pull this off well.

It will then work for a couple of minutes, put together a real plan that you can review (and change), then give you a button to “Implement the Plan”. One click, and it starts whirring away at building your feature.

Categories
AI Development

Debugging Lovable Bugs

You are running into issues with your Lovable app and are having a hard time getting Lovable to fix it’s own bugs. I struggled with this for a while building my baseball coaching app with Lovable, but have come up with a strategy that has always solved my issue, using only about a tenth of the credits I was using.

  1. Tell it exactly what you see and what you would expect to see. When reporting a bug, talk to it like you would talk to an engineer. Attach a screenshot as proof. "When I click the tab, it's showing pitching stats. But when I click the batting tab, it should show batting stats."
  2. Ask chat to think step by step. This is something that I picked up from the early days of Lovable while watching how it interacted with itself. It tells itself to think step by step. Now, your bug fixing prompt says "When I click the tab, it's showing pitching stats. But when I click the batting tab, it should show batting stats. Think step by step to understand why this is happening."
    • Note: I’ve even started using this outside of Lovable (in Claude or ChatGPT for non-coding related questions) and am seeing a massive improvement in results. It’s like you’re giving it permission to take a beat and think instead of just getting into it.
  3. Ask chat to build a plan. Did you know that you can click on the “chat” button to interact with Lovable without having it right any code? This is helpful if you need to understand how something works. But it’s especially helpful if you want Lovable to build a plan for you to review before it starts writing code.

    When fixing a bug (or even implementing a feature), click on the “chat” button, then submit the query and ask it to build a plan for you to review. This will use a Lovable credit since it’s working, and you won’t have any code output for it, but this has significantly improved my success rate as it actually does some deeper thinking before starting to write code.

    Example: "When I click the tab, it's showing pitching stats. But when I click the batting tab, it should show batting stats. Think step by step to understand why this is happening, then build a plan to resolve the issue."
  4. Restore and try again. Lovable will let you restore to any previous point in the chat. When push comes to shove, restore back to a point before you started building the feature and simply ask again. Since chatbots are non-deterministic, you can get a completely different result by pasting in the exact same prompt.
Categories
Vibe Coding

Supabase Development Environment Setup Guide

I have been prototyping a project on Lovable, but am ready to introduce new users to it. However, I don’t want to mess up their data and their experience with my tinkering. I needed to set up a staging environment with a separate database.

I worked with Claude to figure out how to get data from my production Supabase and push it to my new staging Supabase. We went back and forth, but finally figured it out.*

Prerequisites

  • Supabase CLI installed (npm install -g supabase)
  • PostgreSQL client tools (psql)
  • Access to both production and development Supabase projects

Step-by-Step Process

1. Identify Your Projects

You’ll need:

  • Production project – Your live database with real data
  • Development project – Your testing environment (can be empty)

Get the project references from your Supabase dashboard URLs:

  • Production: supabase.com/dashboard/project/[PROD_PROJECT_REF]
  • Development: supabase.com/dashboard/project/[DEV_PROJECT_REF]

2. Get Database Connection Strings

From each project’s dashboard:

  1. Go to Settings → Database
  2. Copy the Direct connection string (not connection pooling)
  3. Note the password for each database

3. Link CLI to Production Database

bashsupabase link --project-ref [PROD_PROJECT_REF]
# Enter your production database password when prompted

4. Export Schema from Production

bashsupabase db dump --file production_schema.sql

5. Export Data from Production

bashsupabase db dump --file production_data.sql --data-only

6. Combine Schema and Data

bashcat production_schema.sql production_data.sql > complete_dump.sql

7. Import to Development Database

bashpsql "postgresql://postgres.[DEV_PROJECT_REF]:[DEV_PASSWORD]@aws-0-us-east-2.pooler.supabase.com:5432/postgres" < complete_dump.sql

Note: Replace the connection string with your actual development database details from step 2.

Common Issues & Solutions

DNS Resolution Errors

If you get hostname lookup errors, try using the Session pooler connection string instead of Direct connection.

Version Mismatch Errors

If pg_dump fails with version mismatch:

bash# Add --no-sync flag
pg_dump --no-sync [connection_string] > dump.sql

Empty Data Dumps

  • Ensure you’re connected to the right project with supabase status
  • Use --data-only flag specifically for data export
  • Verify data exists: psql [connection_string] -c "SELECT COUNT(*) FROM [table_name];"

Verification

After import, verify your development environment:

bash# Connect to dev database
psql "postgresql://[dev_connection_string]"

# Check row counts
SELECT 'teams', COUNT(*) FROM teams
UNION ALL
SELECT 'users', COUNT(*) FROM auth.users;

Pro Tips

  • Always use development environment for testing – never test directly in production
  • Regular syncing – Re-run this process periodically to keep dev data current
  • Separate connections – Keep production and development connection strings clearly labeled
  • Reset dev first – Consider resetting your dev database before importing: supabase db reset

Security Notes

  • Never share production database credentials
  • Use environment variables for connection strings in your applications
  • Ensure development databases have appropriate access restrictions
  • Consider anonymizing sensitive data in development environments

Need help? Check the Supabase CLI documentation or reach out to your team’s database administrator.

* I then asked Claude to generate me a one-pager, based on this experience, that I can share with people that are looking to copy their production database to another environment for safe testing and development. This is that doc.

Categories
Product Management

Trust Your Gut

It’s that time of year again.

Like clockwork, when the leaves start falling and the hoodies begin making their regular appearance, I find myself falling back into a weird pattern.

I begin believing that a decision holds no merit if it isn’t backed by bullet-proof, statistically significant data.

After all, a huge number of successful startup stories (and job postings) mention how they are a data-driven team.

So I’m writing this as a note to myself, and anyone else that stumbles onto this:

Not everything has to start as an A/B test.

And not everything has to be data-backed with statistical significance.

I’m not suggesting that you ignore the data, but there’s a spectrum between “trust your gut 100%” and “let the data decide”.

Especially when the decision is easy to revert.

Copy for the first version of a new landing page? It’s OK to trust your gut feeling if it’s easy to revert or update. You will analyze the results and can introduce new versions very easily if necessary.

User interface for a new feature? Put some early wireframes in front of a couple customers and gauge their gut reactions. You will analyze the results and can introduce a new version, with some work, if necessary.

Two drastically different business models for a new product? Lean more heavily on your research since this is probably a drastic shift in your positioning, burn rate and data model. These are much harder to iterate on since your customers, employees and investors may all be impacted.

It’s easy to fall into analysis paralysis, and take way too long analyzing all possible angles before making a decision.

But sometimes, it’s just a headline change or a really common UI pattern.

So it’s OK to trust the 20 years of experience and countless mess-ups in the past.

Categories
Design Product Management

Design Portfolio Site

When I’m sourcing for a Product Designer, I see a lot of portfolios.

Like, a lot a lot.

And today, it takes so long to judge if you are aesthetically a good fit for us.

In the last five years, there’s been a trend for product designers to tell more about their process. How they’ve been more helpful in other parts than just the aesthetic.

I understand why it’s like this.

Product Designers are becoming more and more product-focused (as opposed to design focused). Which is great. I LOVE a Product Designer who will be my partner in crime, not just my pixel buddy.

What I usually see on these portfolio sites, in order:

  1. Overview of the project
  2. Paragraphs about the research process
  3. Pictures of sticky notes, and other assets from brainstorming
  4. Early wireframes
  5. The final design

Problem is, when I’m searching for a Product Designer, I need to start at the final result.

Right now, I’m looking for someone who can extend our app and our brand. Not start it from scratch, not overhaul it.

And for that, I just need to see what your general style is.

Then I want to go deep on your process to see how you’d fit with us.

I also want you to talk about results. Talk about the impact your design had on the goals. Show me that you understand the spreadsheet side of your role, too.

What I want to see on a product designer portfolio site:

  1. Overview of the project
  2. The final design
  3. Research process
  4. Wireframes
  5. Results

Categories
Professional Development

Summer Sabbatical

The Great Resignation has taken another victim — me. About a month ago, I left my job with nothing else lined up.

It’s a weird feeling. I haven’t been unemployed in 27 years.

Maybe the occasional 1- or 2-week vacation between jobs, but never just straight up unemployed.

So much has been written about people taking stock in their lives as the pandemic has impacted them. I’m no different.

While I didn’t get COVID symptoms, nor lose anyone particularly close to me, the anxiety and stress of wondering if you’re going to accidentally bring a life-altering virus back to your family after just going to the grocery store starts to take a toll.

You start wondering why you needed to visit a store in person, and eventually end up down the rabbit hole wondering why you spend the rest of your day doing things that seemingly don’t matter.

This resulted in some kind of (self-diagnosed) anxiety and depression.

I found myself being very snippy with my family. This was in large part to finding little enjoyment in my day to day at work. I was an executive at a health & wellness company. Literally making a positive impact on the world.

But I had the “Sunday Scaries” every night of the week, and I had never felt this before. (I’ll write more about this later.)

I’d spend all day in my office upstairs, in a brain fog, feeling like I wasn’t making any progress. Then I’d come downstairs, stressed, and be stressed, snippy and short with my family.

The ultimate catalyst to me quitting was one of my colleagues being diagnosed with a couple of very serious medical conditions. She has young kids.

Imagine the last thing you kids or friends know remember about you is you being stressed, snippy and short with them.

I didn’t want to go out like that.

Life’s too short to hate your day-to-day, so I quit my job and am taking a little break to enjoy the summer while I can afford it, my kid is young enough to want to hang out with me (but old enough to do some fun things), I’m healthy enough to enjoy the summer, and the job market is OK.

I’m spending this summer with my family. Going to the beach. Working on my Willy’s CJ3A. Training for a half-marathon. Playing lots of golf and video games (guilt-free). Making a significant amount of ice cream and BBQ (not quite guilt-free, but close). And talking to a therapist.

I’ve been “burned out” before, but I never did anything to deliberately address that. I’d take a week off here and there, but never totally shut down, so I’m not sure I ever hit burnout escape velocity and just hung out in low burnout for a long, long time.

All of that unhappiness, burnout and frustration was multiplied by being locked down for a year. My wife told me that I needed to prioritize mental health over work, and I needed to be OK with that.

But it’s not easy. Specifically, the hardest parts today are:

  • Not feeling worthless. So much of my self-identity is tied to my job, title, pay, etc… who am I if I’m not employed at some fancy company, or with a fancy title, or working on some fancy project?
  • Being OK being bored. We live near the ocean in the summer, with a little cash in our pockets. The world is our oyster, but I need to remember that this sabbatical is about recovery — not making up time for something. And it’s ok to just sit on the deck and do nothing.
  • Not rushing to find another job. See above.

So that’s what the summer is like.

I posted a thread about this on Twitter and go so many supportive, thoughtful messages that I know others are thinking about this. I’m going to continue writing about it here in case someone else needs a little extra help from the Internet.

Categories
Product Management Reading List

Product Management Books for the Junior AND Senior Product Manager

What are the best books to get started in product management? Sometimes, I’m asked: what are the best books for any product manager? This is the ultimate list.

These are my go-tos to bring anyone into product management, or to level up your existing product management skills.

Inspired – this is like The Bible for individual contributor product management. I’m sure you’ve read it by now, but if you haven’t, pick this one up! Inspired is about all the non-tactical stuff of product management, and is where the industry has been trying to move the PM role to lately. My copy is marked up, bookmarked, and highlighted – and I know lots of PMs and ScrumMasters whose copy is the same way. Can’t recommend this book more.


Escaping the Build Trap – This is kind of a companion book to Inspired. I bet you’ll nod your head alongside every page of this. Experimentation, checking assumptions, of course. But also PM management and team building. This book will make you a better product manager, but may also give you good insight into words and phrases you can use to get the attention of people looking to hire product leaders. 


Good Strategy / Bad Strategy – I just love this book. Early on in my PM career, I recognized that different people had different ideas of what “the strategy” or “a strategy” was. That’s still the case, but this book clarified (to me) what the mental model of a generic strategy was. And that enabled me to parse, analyze, and ultimately challenge the strategic ideas of others. It’s good stuff, and has helped as I’ve moved into broader roles.

Categories
Product Discovery Product Management User Research

How to See the Ads Your Competitors Are Running on the Entire Facebook Platform

Did you know that Facebook will let you search and view ads that your competitors are running on Instagram, Facebook, Messenger and the Facebook Audience Network?

Read below to see how, and skip to the bottom to see how to take advantage of it.

You can use this information to tweak your messaging, positioning or even your ads. Here’s how to do better competitive research, in real-time, using your own competitions paid advertising on one of today’s largest advertising platforms.

First, go to the Facebook Ad Library. You don’t need to be logged into Facebook to access this page.

Next, type your competitor’s name into the search box. Check to make sure that the “All” tab is checked, so you can see all the ads.

If they have run ads on Facebook you should see them presented on the next page. You can see here that UserInterviews is running a few ads on Facebook right now:

Each item on the page is a different ad they’ve run. Here’s one from Loop11:

For each ad, you can see when they started running it…

and icons for which platform where the ad ran. Here, this ad ran on Facebook, Instagram, Messenger and Facebook’s Audience Network:

You can also see the exact advertising headline and image they used to get attention.

Clicking “See Ad Details” button brings you to a details page about this ad, and the page it ran on.

In this case, you can see that Loop11 only has one ad running, but ran multiple versions of it:

So what can you do with this information?

  • Click the ad! Check out the funnel your competitors are sending their customers through. Should you change yours?
  • Take a look at the types of ads they’re running to analyze their positioning. How is this different than yours? Are they speaking the same way to the same audience you are?
  • You can assume that if the ad has been running for a month or more that it’s converting well. Assuming that long-running ads are working well for them, what combinations of headline and imagery has been working for them over the long term? How should you react to this?

BUT, hold on. Don’t spend too much time worrying about what your competitors are doing and copying it.

Instead of reading between the lines of everything your competition is doing, you’d be better of spending that time with your customers instead.

A more direct, and proven, way of understanding your customers is to talk to them directly. ListenKit makes it easy to coordinate and schedule conversations with your customers, so you can make better informed decisions before your competition.

See if ListenKit can work for you.

Categories
ListenKit Product Management User Research

How to Recruit for Your User Research Project In Less Than Three Minutes (total)

The video above proves that you don’t have to spend hours doing unnecessary setup and coordination to recruit for your user research project.

The video is 3 minutes long, so you should watch it (if not even just for the stumble halfway through).

But if you’re more of a reader, the transcript is below.

Click here to sign up for the alpha program, and see how much easier ListenKit makes recruiting for your user research.


Today, I’m going to show you how you can have real people, real users, real customers,  signing up to talk to you in less than 3 minutes of effort by using ListenKit.

Our goal today is to get interviews on the books with as little effort as possible. 

This is where we want to drive people. This is a signup page on listenkit.com with a list of dates and times that you’ve said your users can book with you. 

They simply click the date/time they are willing to talk to you, and they’re done. You both get appointments added to your calendar at the right time, with a meeting link.

So how do they get there? Two ways.

Let’s say you already have an existing list of users. My friend Eric used ListenKit last week to schedule interviews with trial users of his app. He had a list of 180 users, and wanted to have 10-15 interviews to gather feedback on the trial experience. 

He logged into ListenKit and uploaded a list of customers from his internal tool. 

Just like that, he emailed a customized link to each of them. (Wait for the email)

They click the link in the email, schedule a time, and boom. All he had to do was upload a CSV into ListenKit. As his users sign up, he AND they got meeting invites on their calendar, with the Zoom link, so everyone knows exactly when and exactly where to show up.

OK. But maybe you don’t have an existing user list yet. Maybe you’re doing discovery work on a new user research recruiting tool. [look] 

but you DO know where to find the people you want to talk to. This is what i’ve been doing a lot lately. I’m using Listenkit to do research about ListenKit, so I have been asking PMs, designers, founders and researchers to talk to me for 30 minutes on Zoom. (In fact, if you are one of these people, click the link in the description below and let’s talk.) I share my signup link in communities where I know the people I want to talk to are spending time.. like LinkedIn, Twitter, Reddit, IndieHackers, wherever…. 

When someone there clicks the link, they are taken to my signup page, they enter their info, and they can select a time. Boom, done. 

Then, all I have to do then is show up in the right Zoom link at the right time and you’re talking to your user. You share a link, ListenKit handles everything.

And thats (CLOCK)

This isn’t smoke and mirrors. This is all functional on listenkit.com today. And it works. 

If you have a research project coming up in the next couple of weeks, or are willing to start one, you can use ListenKit for free in exchange for your brutal feedback.

Click here to sign up for the alpha program, and see how much easier ListenKit makes recruiting for your user research.

Categories
ListenKit

Starting a New Company In the Middle of a Global Pandemic

After five great years of working on software (and hardware!) to help teams win, I’ve left my stable job at Hudl to start something new.

There’s been an idea kicking around in my head for a little while now, and I want to bring it to life.

So, as of yesterday, I’m self-employed again and starting a new business.

That something new is listenkit.com.