I’ve prototyped in Lovable before, but that was without a PRD. I know PMs at companies like Google and Anthropic increasingly skip writing PRDs and jump straight into prototyping. I’ve learned the hard way that skipping clear milestones means spending far more time debugging and tweaking.
The Idea
I recently took an idea for a personal CRM and used Lovable to turn it into a working product for tracking personal contacts. You can find my PRD here and I’ll share my main learnings from the build.
Image Credit: screenshot Image Credit: screenshot
The ‘Vibe Coding’ part
The screenshots above show what the AI gener…
I’ve prototyped in Lovable before, but that was without a PRD. I know PMs at companies like Google and Anthropic increasingly skip writing PRDs and jump straight into prototyping. I’ve learned the hard way that skipping clear milestones means spending far more time debugging and tweaking.
The Idea
I recently took an idea for a personal CRM and used Lovable to turn it into a working product for tracking personal contacts. You can find my PRD here and I’ll share my main learnings from the build.
Image Credit: screenshot Image Credit: screenshot
The ‘Vibe Coding’ part
The screenshots above show what the AI generated after I’d included my PRD in the project instructions.
Image Credit: screenshot
In your Lovable project settings, there’s a Custom Knowledge section where you can add project-specific context (like your PRD) and guidelines for the AI.
Using Lovable Chat
Even with a detailed PRD, I still needed to ensure the product design made sense for users. The onboarding flow – where users upload their contacts – needed to feel intuitive. I used Lovable’s chat mode to refine the interface:
Image Credit: screenshot Image Credit: screenshot
Unlike Lovable’s Agent mode, Chat mode is conversational and can’t modify your code directly. It’s ideal for asking questions, planning your project, and debugging.
**Bug Fixing **
I quickly discovered that Lovable Cloud is still catching up with Supabase, particularly around third-party API integration. Authenticating users through Gmail in Cloud felt less intuitive than Supabase. For instance, Cloud provided incorrect information about finding my OAuth publishing status.
Image Credit: screenshot
I asked the AI to analyse the Google SSO error and present a plan to solve it before writing any code:
Analysis
The Google SSO error is caused by an RLS policy conflict. Here’s what’s happening:
- The Issue: When a user signs up with Google OAuth, the
handle_new_user()trigger tries to create a profile record - The Problem: The INSERT policy requires
auth.uid() = id, but during the OAuth flow, the auth context may not be fully established when the trigger fires
Resolution Plan
I’ll fix this by modifying the RLS INSERT policy to allow the trigger function to insert profiles. The solution is to check if the inserter is the authenticated user OR if it’s being done by the system (via trigger).
Changes needed:
- Update the profiles INSERT policy to allow system-level inserts during user creation
- This will permit the trigger to create profiles for OAuth signups while maintaining security for regular inserts
Would you like me to proceed with this fix?
After a bit of back and forth 🙂 the issue was fixed so that users could log into their personal CRM account through their Gmail account.
Creating a Database
Lovable released Cloud last month as its built-in backend infrastructure, positioning it as an alternative to Supabase (which I’d used previously to create a Postgres database). It handled the security requirements well for storing sensitive personal information. I prompted the Lovable AI to create a database, but only after asking Claude and ChatGPT about which tables I should include.
Image credit: screenshot Image credit: screenshot Image Credit: screenshot
I found the process of creating, configuring and populating a database much more intuitive than expected.
**Image Credit: **screenshot
Integrating with LinkedIn
I wanted users to automatically track their interactions with contacts on LinkedIn. This taught me valuable lessons. LinkedIn’s API integration options are limited, and since this was central to my product vision, I should have researched this immediately after the PRD stage – before building anything.
I did discover Lix and similar contact intelligence tools (thanks Drew Falkman!) and successfully integrated the Lix LinkedIn Account API:
Image Credit: screenshot Image Credit: screenshot
Remix My Project in Lovable
Finally, I remixed my project – Lovable created a copy where I could clean up code and make adjustments without losing the original version. Just note that you can’t remix projects when Supabase is connected.
Main learning point: I deployed my personal CRM product here, enabling people to add key contacts and track their interactions. My biggest learning? Check API integration options before you start building. For my project, LinkedIn integration was a key dependency. Spending time upfront understanding their authentication and interaction tracking methods would have helped me assess the feasibility of my requirements and viability of my solution much earlier.