Lovable Prompt Creator - AI Prompt Generator

Generate Optimized Prompts for AI Development Platforms

Transform your web or app idea into comprehensive, optimized prompts for Lovable, Bolt, Replit, V0, and Cursor. Our AI-powered tool helps you create production-ready prompts with features, styling, and technical specifications.

Key Features

Pricing

Free plan: 2 prompts to try the tool

Pro plan: $4.99/month - 20 prompts per month, all platforms

100 Prompts pack: $24.99 - One-time purchase, no expiration

Trusted by 10,000+ Users

Join thousands of developers creating amazing apps with AI-powered prompts.

    Lovable Prompts Logo
    LovablePrompts.app

    Try LovablePrompts.app

    Generate optimized prompts for Lovable, Cursor, Bolt, and more. Free to start.

    Try it free
    Lovable PRD Generator: Turn Product Requirements Into Working Apps With Structured Prompts
    DMDavid Martín
    blog
    24 min read

    Lovable PRD Generator: Turn Product Requirements Into Working Apps With Structured Prompts

    TL;DR


    • A PRD is a blueprint for your app: who uses it, what it does, and what data it needs
    • Lovable-ready PRDs are PRDs written in a structure Claude understands: purpose, users, requirements, database schema, API contract
    • Traditional PRDs are wordy and marketing-focused; Lovable PRDs are technical and structured
    • Benefits: You write once, Lovable generates correctly. Fewer iterations. Better apps.
    • Structure: Purpose → Users & personas → Requirements (features) → Database schema → API endpoints → UI/UX → Success metrics
    • Common mistake #1: Writing a marketing PRD instead of a technical PRD. Focus on what not why you'll sell it.
    • Common mistake #2: Omitting the database schema. Lovable needs to know what data to store.
    • Result: One clear PRD leads to one great generated app, rarely needing iteration

    Table of Contents


    1. What Is a PRD and Why Lovable Needs a Different One
    2. The Seven-Part Lovable PRD Structure
    3. Step-by-Step: Write Your Lovable PRD
    4. Real PRDs at Three Levels
    5. PRD Examples You Can Copy and Adapt
    6. Common Mistakes and How to Avoid Them
    7. FAQ

    What You Need


    Key terms: A PRD (Product Requirements Document) is a specification that describes what you're building. A persona is a fictional character representing a user type (e.g., "Sarah, a freelancer who needs to track invoices"). Schema refers to the structure of your database (tables, columns, relationships).


    Before you start:

    • Clarity on your app idea (what problem does it solve?)
    • 30 minutes to write the PRD (worth it for the time saved later)
    • Access to Lovable.dev
    • Optional: experience with traditional PRDs (but not required)

    What Is a PRD and Why Lovable Needs a Different One


    Traditional PRD vs. Lovable PRD


    A traditional PRD is written for project managers and engineers. It's marketing-oriented, full of business justification, user research, and design specs. It answers: "Why are we building this?" and "What does it look like?"


    Example of a traditional PRD excerpt:

    BUSINESS RATIONALE
    The market for personal finance apps is growing 15% annually. Our research shows users struggle to categorize expenses. By offering an AI-powered expense categorizer, we'll differentiate from competitors like Mint and YNAB.
    
    USER RESEARCH
    Three focus groups with millennials aged 25-35 showed that 62% find expense tracking tedious. Our solution reduces time spent on categorization from 5 minutes to 30 seconds.
    
    DESIGN SPECIFICATION
    See attached Figma wireframes. The expense form uses a dropdown for categories, with auto-complete for recent categories. Colors: primary blue (#2563EB), secondary gray (#6B7280).

    This is useful for human teams but not for Lovable. Claude doesn't care about market size or design rationale—it cares about specifications.


    A Lovable PRD is written for AI code generation. It's technical, structured, and unambiguous. It answers: "What exactly should the app do?" and "What data does it need?"


    Example of a Lovable PRD excerpt:

    FUNCTIONAL REQUIREMENTS
    1. Users can create an expense entry with: amount (required, decimal), category (required, dropdown from predefined list), date (required, any past date), description (optional, text)
    2. Expense list shows all entries sorted by date descending
    3. Users can delete any expense (require confirmation)
    4. Users can filter by category (optional, multi-select)
    
    DATABASE SCHEMA
    expenses table:
    - id (uuid, primary key)
    - userId (uuid, foreign key, required)
    - amount (decimal, 2 decimals, positive, required)
    - category (varchar, one of: Rent, Food, Transport, Entertainment, Healthcare, Other)
    - date (timestamp, required)
    - description (text, optional, max 500 chars)
    - createdAt (timestamp, auto-set to now)

    This is what Lovable needs. It's specific, testable, and unambiguous.


    Why Lovable PRDs Are Better


    AspectTraditional PRDLovable PRD
    FocusWhy and how humans workWhat the code should do
    Detail levelHigh-level, strategicTechnical specifics
    Data modelMentioned vaguelyFully specified schema
    Success metric"Improve user engagement""Users can X, Y, Z"
    OutputDirection for teamDirect input for code generation

    The Seven-Part Lovable PRD Structure


    A complete Lovable PRD has seven parts. You don't always need all seven, but this is the complete structure:


    Part 1: Executive Summary (1 paragraph)


    What the app does, in one sentence. Who uses it. What problem it solves.


    Example:

    "A freelancer invoice tracker: solo freelancers can create invoices, track payment status, and see when money is expected. Problem: freelancers lose track of who owes them money and when."


    Part 2: User Personas (2-4 personas, 2-3 sentences each)


    Not marketing personas. Technical personas. What matters is their technical needs and workflows.


    Example:

    Persona 1: Sarah, Freelance Designer
    - Creates 10-20 invoices per month
    - Uses a spreadsheet currently (inefficient)
    - Needs to track invoice status (sent, paid, overdue)
    - Needs to calculate total earnings per month
    - Does not need: advanced tax features, multi-currency
    
    Persona 2: James, Contractor
    - Creates 5 invoices per month
    - Needs to organize clients
    - Needs to see payment trends
    - Needs recurring invoice templates

    Part 3: Functional Requirements (10-15 bullet points)


    What the app does, written as user stories or feature statements. Use this format:

    • Users can [action] by [method] to [outcome]
    • The system [behavior] when [condition] is true

    Example:

    - Users can create a new invoice by filling out a form with amount, due date, and client name
    - The system assigns a unique invoice number automatically
    - Users can see all invoices in a list sorted by due date
    - Users can mark an invoice as paid by clicking a checkbox
    - The system calculates total owed when filtering to unpaid invoices only
    - Users can delete an invoice (requires confirmation)

    Part 4: Non-Functional Requirements (optional, 3-5 items)


    Performance, security, usability. Things the app must do but not specific features.


    Example:

    - The app loads in under 3 seconds
    - Users must be logged in to see their invoices (security)
    - The app works on mobile (responsive design)
    - All financial data is encrypted
    - Users can't edit invoices after marking them paid (data integrity)

    Part 5: Database Schema (Full specification)


    Every table, column, type, and relationship.


    Example:

    TABLE: users
    - id (uuid, primary key)
    - email (varchar, unique, required)
    - passwordHash (varchar, required)
    - displayName (varchar, optional)
    - createdAt (timestamp, auto)
    - updatedAt (timestamp, auto)
    
    TABLE: invoices
    - id (uuid, primary key)
    - userId (uuid, foreign key -> users.id, required)
    - clientName (varchar, required)
    - amount (decimal(10,2), positive, required)
    - issueDate (date, required)
    - dueDate (date, required)
    - status (enum: 'draft', 'sent', 'paid', 'overdue', default 'draft')
    - invoiceNumber (varchar, unique, auto-generated like INV-2026-001)
    - createdAt (timestamp, auto)
    - updatedAt (timestamp, auto)
    
    RELATIONSHIPS:
    - invoices.userId references users.id (one user has many invoices)

    Part 6: API Endpoints (Complete contract)


    What endpoints exist, what they accept, what they return.


    Example:

    POST /api/invoices
    - Creates a new invoice
    - Request: { clientName, amount, issueDate, dueDate }
    - Response: { id, invoiceNumber, status: 'draft', createdAt }
    - Auth: required (user must be logged in)
    
    GET /api/invoices
    - Returns all invoices for the logged-in user
    - Query params: ?status=paid (optional filter)
    - Response: [ { id, invoiceNumber, clientName, amount, status, dueDate } ]
    - Auth: required
    
    PUT /api/invoices/:id
    - Updates invoice status or details
    - Request: { status: 'paid' } or { clientName, amount }
    - Response: { id, invoiceNumber, updated fields }
    - Auth: required, user must own invoice
    
    DELETE /api/invoices/:id
    - Deletes invoice (soft delete is optional)
    - Response: { success: true }
    - Auth: required, user must own invoice

    Part 7: UI/UX Workflow (How users navigate)


    Not a design spec. The flow: login → create invoice → view list → mark paid → done.


    Example:

    Login flow:
    1. User lands on login page
    2. Enters email and password
    3. System validates and creates session
    4. Redirects to dashboard
    
    Dashboard flow:
    1. User sees list of all invoices (unpaid first, sorted by due date)
    2. Can click "New Invoice" button to open form
    3. Fills out form and submits
    4. Invoice appears in list immediately
    5. Can click invoice to see details
    6. Can click "Mark Paid" button
    7. Invoice moves to paid section

    Step-by-Step: Write Your Lovable PRD


    Step 1: Write the Executive Summary (5 minutes)


    Answer: What does the app do? Who uses it? What problem does it solve?


    Keep it to one sentence. If you can't say it in one sentence, your idea isn't clear enough yet.


    Example:

    "A meal planning app where home cooks plan weekly meals, build shopping lists, and save recipes. Problem: people spend 20 minutes per week wondering what to cook."


    Step 2: Define Your User Personas (10 minutes)


    Write 2-3 personas. For each, mention:

    • Name and background
    • 2-3 technical needs (what they need the app to do for them)
    • 1 thing they don't need

    Example:

    Persona 1: Maria, Home Cook
    - Needs: plans meals for family of 4, wants recipes organized by cuisine, needs shopping list by aisle
    - Technical: filters recipes by dietary restriction, sorts by prep time
    - Doesn't need: nutrition analysis, restaurant recommendations
    
    Persona 2: David, Meal Prep Enthusiast
    - Needs: batch cook on Sundays, wants same 5 meals every week, needs clear ingredient lists
    - Technical: saves recurring meal plans, exports ingredient list to PDF
    - Doesn't need: social sharing, community recipes

    Step 3: List 10-15 Functional Requirements (15 minutes)


    Write each as a user story: "Users can [do this] to [achieve this outcome]"


    Don't worry about perfectly phrasing them. Just get them out.


    Example:

    - Users can create an account with email and password
    - Users can save recipes by pasting a URL or typing manually (title, ingredients, instructions)
    - Users can organize recipes by meal type (breakfast, lunch, dinner, snack) or cuisine
    - Users can create a meal plan by selecting recipes for each day of the week
    - Users can export meal plan to PDF
    - Users can generate a shopping list from the week's meals (grouped by ingredient)
    - Users can check off ingredients as they shop
    - Users can edit recipes (change ingredients, instructions)
    - Users can delete recipes
    - Users can view their favorite/most-used recipes
    - Users can set dietary restrictions and filter recipes by those restrictions
    - Users can tag recipes (quick, healthy, kid-friendly) and filter by tags

    Step 4: Define Your Database Schema (20 minutes)


    Write out every table. For each table, list every column with its type and constraints.


    Start with this template for each table:

    TABLE: [name]
    - id (uuid, primary key)
    - [field name] ([type], [constraints])
    - [field name] ([type], [constraints])
    - createdAt (timestamp, auto)
    - updatedAt (timestamp, auto)

    Example:

    TABLE: users
    - id (uuid, primary key)
    - email (varchar, unique, not null)
    - passwordHash (varchar, not null)
    - displayName (varchar)
    - dietaryRestrictions (array of strings, e.g. ['vegan', 'gluten-free'])
    - createdAt (timestamp, auto)
    
    TABLE: recipes
    - id (uuid, primary key)
    - userId (uuid, foreign key)
    - title (varchar, not null)
    - ingredients (text, not null)
    - instructions (text, not null)
    - mealType (enum: 'breakfast', 'lunch', 'dinner', 'snack')
    - cuisineType (varchar)
    - tags (array of strings)
    - prepTime (integer, minutes)
    - servings (integer)
    - source (varchar, URL optional)
    - createdAt (timestamp, auto)
    - updatedAt (timestamp, auto)
    
    TABLE: mealPlans
    - id (uuid, primary key)
    - userId (uuid, foreign key)
    - weekStartDate (date)
    - createdAt (timestamp, auto)
    
    TABLE: mealPlanDays
    - id (uuid, primary key)
    - mealPlanId (uuid, foreign key)
    - dayOfWeek (integer, 0-6 for Sun-Sat)
    - recipeId (uuid, foreign key)
    
    RELATIONSHIPS:
    - users 1 → many recipes
    - users 1 → many mealPlans
    - mealPlans 1 → many mealPlanDays
    - mealPlanDays many → one recipes

    Step 5: Write API Endpoints (15 minutes)


    For each major action (create, read, update, delete), write an endpoint.


    Template:

    [METHOD] /api/[resource]
    - [Description]
    - Request: { field: type }
    - Response: { field: type }
    - Auth: required/optional

    Example:

    POST /api/recipes
    - Create a new recipe
    - Request: { title, ingredients, instructions, mealType, cuisineType, prepTime }
    - Response: { id, title, createdAt }
    - Auth: required
    
    GET /api/recipes
    - Get all recipes for logged-in user
    - Query params: ?mealType=breakfast (optional), ?tags=healthy (optional)
    - Response: [ { id, title, mealType, prepTime } ]
    - Auth: required
    
    GET /api/recipes/:id
    - Get recipe details
    - Response: { id, title, ingredients, instructions, mealType, cuisineType, prepTime, servings }
    - Auth: required
    
    PUT /api/recipes/:id
    - Update recipe
    - Request: { title, ingredients, instructions } (any field)
    - Response: { id, updated fields, updatedAt }
    - Auth: required, user must own recipe
    
    DELETE /api/recipes/:id
    - Delete recipe
    - Response: { success: true }
    - Auth: required, user must own recipe
    
    POST /api/mealPlans
    - Create meal plan for a week
    - Request: { weekStartDate }
    - Response: { id, weekStartDate, createdAt }
    - Auth: required
    
    POST /api/mealPlans/:id/days/:dayOfWeek/recipe/:recipeId
    - Assign recipe to a day in meal plan
    - Response: { success: true }
    - Auth: required, user must own meal plan

    Step 6: Write the UI Flow (10 minutes)


    Describe how a user moves through your app. This isn't design—it's navigation.


    Example:

    First-time user flow:
    1. Sign up with email/password
    2. Land on empty recipe library
    3. Click "Add Recipe" button
    4. Paste a recipe URL or type manually
    5. Recipe appears in library
    6. Click "Create Meal Plan"
    7. Select week dates
    8. For each day, choose recipes from library
    9. View complete meal plan
    10. Click "Export Shopping List"
    11. Print or save shopping list
    
    Existing user flow:
    1. Log in
    2. See last week's meal plan and recipes
    3. Click "New Meal Plan" to plan for next week
    4. Reuse last week's meals or pick different recipes
    5. Export shopping list
    6. Use app while shopping (check off items)

    Real PRDs at Three Levels


    Basic PRD: Simple Bookmark Manager


    Executive Summary: An app where users save web links with tags and descriptions, then search them later. Problem: browser bookmarks are disorganized.


    User Personas:

    Persona 1: Alex, Knowledge Worker
    - Needs: Save articles, code snippets, tutorials for later
    - Filters: by tag (e.g., #python, #react), by date
    - Doesn't need: collaboration, sharing

    Functional Requirements:

    - Users can paste a link and add a title, description, and tags
    - Users can view all saved links in a list
    - Users can filter links by tag
    - Users can search links by title or description
    - Users can delete a link
    - Users can mark a link as "read" vs. "unread"
    - The app shows link preview (title, description, domain)

    Database Schema:

    TABLE: users
    - id (uuid, pk)
    - email (varchar, unique)
    - passwordHash (varchar)
    - createdAt (timestamp)
    
    TABLE: bookmarks
    - id (uuid, pk)
    - userId (uuid, fk)
    - url (varchar)
    - title (varchar)
    - description (text, optional)
    - tags (array of strings)
    - isRead (boolean, default false)
    - createdAt (timestamp)
    
    RELATIONSHIPS:
    - users 1 → many bookmarks

    API Endpoints:

    POST /api/bookmarks - Create
    GET /api/bookmarks - List (with ?tag=python filter)
    GET /api/bookmarks/:id - Get one
    PUT /api/bookmarks/:id - Update (title, description, tags, isRead)
    DELETE /api/bookmarks/:id - Delete

    UI Flow:

    1. User logs in
    2. Sees list of bookmarks, most recent first
    3. Can filter by tag or search
    4. Click bookmark to expand and see full description
    5. Click "Mark as read" toggle
    6. Click delete to remove
    7. Top bar has "+ New Bookmark" button
    8. New bookmark form has URL input, auto-fetches title, fields for description and tags

    Pro PRD: Team Task Manager


    Executive Summary: A team task management app where small teams create tasks, assign them, set deadlines, and see progress. Problem: email threads lose track of who's doing what.


    User Personas:

    Persona 1: Elena, Team Lead
    - Needs: create tasks, assign to team, set deadlines, see overall progress
    - Views: task board (columns by status), team view (tasks per person), timeline (Gantt-like)
    - Doesn't need: time tracking, billing
    
    Persona 2: Developer on Team
    - Needs: see tasks assigned to them, update status, comment with questions
    - Views: "My Tasks" (only assigned to me), board (see all), detail view (open task to read full description)
    - Doesn't need: creating tasks, managing other people

    Functional Requirements:

    - Team leads can create a team and invite members
    - Team leads can create tasks with: title, description, assignee, deadline, priority (low/medium/high), status (todo/in-progress/done)
    - Tasks have comments (for team discussion)
    - Any team member can update task status
    - Task assignee gets notified of assignment
    - Team leads can see board view (Kanban columns by status)
    - Team members can see "My Tasks" filter (assigned to me)
    - Overdue tasks appear highlighted in red
    - Team leads can delete tasks (soft delete)
    - Tasks can have subtasks
    - Tasks can have attachments (file URLs)

    Database Schema:

    TABLE: users
    - id (uuid, pk)
    - email (varchar, unique)
    - passwordHash (varchar)
    - displayName (varchar)
    - createdAt (timestamp)
    
    TABLE: teams
    - id (uuid, pk)
    - name (varchar)
    - createdBy (uuid, fk -> users)
    - createdAt (timestamp)
    
    TABLE: teamMembers
    - id (uuid, pk)
    - teamId (uuid, fk)
    - userId (uuid, fk)
    - role (enum: 'lead', 'member')
    - joinedAt (timestamp)
    
    TABLE: tasks
    - id (uuid, pk)
    - teamId (uuid, fk)
    - title (varchar)
    - description (text)
    - assignedTo (uuid, fk -> users, optional)
    - createdBy (uuid, fk -> users)
    - status (enum: 'todo', 'in-progress', 'done')
    - priority (enum: 'low', 'medium', 'high')
    - deadline (date, optional)
    - createdAt (timestamp)
    - updatedAt (timestamp)
    
    TABLE: subtasks
    - id (uuid, pk)
    - taskId (uuid, fk)
    - title (varchar)
    - completed (boolean)
    - createdAt (timestamp)
    
    TABLE: taskComments
    - id (uuid, pk)
    - taskId (uuid, fk)
    - userId (uuid, fk)
    - content (text)
    - createdAt (timestamp)
    
    RELATIONSHIPS:
    - teams 1 → many tasks
    - teams many ← teamMembers → many users
    - tasks 1 → many subtasks
    - tasks 1 → many taskComments

    API Endpoints (key ones):

    POST /api/tasks - Create
    GET /api/tasks?teamId=X - List all tasks for team
    GET /api/tasks?assignedTo=me - List my tasks
    PUT /api/tasks/:id - Update status, priority, etc.
    POST /api/tasks/:id/comments - Add comment
    POST /api/teams/:id/members - Invite team member

    Vertical PRD: SaaS Feature Request Portal


    Executive Summary: A feature request voting board for a SaaS product. Users submit feature requests, other users upvote them, product team tracks status. Problem: feature request emails get lost; you can't see what's popular.


    User Personas:

    Persona 1: Product Manager
    - Needs: see all feature requests, filter by votes/date, change status (new → in-progress → shipped)
    - Views: dashboard (vote leaderboard), request detail (see who voted, comments)
    - Permissions: edit request details, change status, delete duplicates
    
    Persona 2: Customer
    - Needs: suggest feature, see if others want it, check if it's being built
    - Views: leaderboard (popular requests), search
    - Permissions: create request, upvote, comment
    
    Persona 3: Team Member (internal)
    - Needs: see what customers want, understand priority
    - Views: read-only access to all requests and comments
    - Permissions: read only, can comment internally

    Functional Requirements:

    - Users can create an account (public signup)
    - Users can submit a feature request with: title, description, category (dropdown)
    - Users can upvote requests (one vote per user per request)
    - Users can comment on requests
    - Leaderboard shows top requests by votes
    - Product manager can change request status: new → in-progress → shipped → declined
    - When status changes, notification sent to voters
    - Search feature: filter by title, category, status
    - Product dashboard (PM only): see all requests, newest, highest voted, in-progress
    - Duplicate detection helper (PM): suggests similar requests to consolidate
    - Users can set "watching" on request to get notifications

    Database Schema:

    TABLE: users
    - id (uuid, pk)
    - email (varchar, unique)
    - passwordHash (varchar)
    - displayName (varchar)
    - role (enum: 'customer', 'pm', 'team_member')
    - createdAt (timestamp)
    
    TABLE: featureRequests
    - id (uuid, pk)
    - userId (uuid, fk -> users.id)
    - title (varchar)
    - description (text)
    - category (enum: 'performance', 'feature', 'integration', 'other')
    - status (enum: 'new', 'in-progress', 'shipped', 'declined', 'duplicate')
    - upvoteCount (integer, default 0)
    - createdAt (timestamp)
    - updatedAt (timestamp)
    - closedAt (timestamp, nullable, set when status != 'new'/'in-progress')
    
    TABLE: upvotes
    - id (uuid, pk)
    - requestId (uuid, fk)
    - userId (uuid, fk)
    - createdAt (timestamp)
    - UNIQUE constraint: (requestId, userId)
    
    TABLE: comments
    - id (uuid, pk)
    - requestId (uuid, fk)
    - userId (uuid, fk)
    - content (text)
    - isInternal (boolean, default false, only team_member/pm see)
    - createdAt (timestamp)
    
    TABLE: watchers
    - id (uuid, pk)
    - requestId (uuid, fk)
    - userId (uuid, fk)
    - createdAt (timestamp)
    - UNIQUE constraint: (requestId, userId)
    
    RELATIONSHIPS:
    - users 1 → many featureRequests
    - users 1 → many upvotes
    - featureRequests 1 → many upvotes
    - featureRequests 1 → many comments
    - featureRequests 1 → many watchers

    API Endpoints:

    POST /api/feature-requests - Create (auth required, role: any)
    GET /api/feature-requests - List (query: ?category=X, ?status=Y, ?sort=votes)
    GET /api/feature-requests/:id - Get detail
    PUT /api/feature-requests/:id - Update status (auth required, role: pm)
    POST /api/feature-requests/:id/upvote - Upvote (auth required)
    DELETE /api/feature-requests/:id/upvote - Remove upvote (auth required)
    POST /api/feature-requests/:id/comments - Add comment (auth required)
    POST /api/feature-requests/:id/watch - Watch request (auth required)

    UI Flow:

    Public view (no login):
    1. Leaderboard shows top 10 requests by votes
    2. Can search/filter by category or status
    3. Click request to see details, votes, comments
    4. Login prompt to upvote
    
    Customer login:
    1. See leaderboard
    2. Click "+ New Request" button
    3. Fill form (title, description, category)
    4. Can upvote and comment on any request
    5. See "Watching" page (notifications)
    
    PM login:
    1. Dashboard shows all requests, filters, analytics
    2. Click request to edit status, add internal comments
    3. Can mark duplicates, consolidate, close

    Copy-Ready Examples You Can Copy and Adapt


    Template 1: Simple CRUD App (Todo, Notes, Bookmarks)


    Executive Summary: [App name] for [user type] to [action]. Problem: [what's inefficient now].
    
    User Personas:
    - [Name, background]
      * Needs: [2-3 key features]
      * Views: [how they navigate]
      * Doesn't need: [what's out of scope]
    
    Functional Requirements:
    - Users can create [item] with: [fields]
    - Users can view [items] in [layout] sorted by [criteria]
    - Users can update [item] by [method]
    - Users can delete [item]
    - Users can filter/search by [field]
    
    Database:
    TABLE: users
    - id (uuid, pk), email, passwordHash, createdAt
    
    TABLE: [items]
    - id (uuid, pk), userId (fk), title, description, [custom fields], createdAt, updatedAt
    
    API:
    POST /api/[items] - Create
    GET /api/[items] - List
    GET /api/[items]/:id - Get one
    PUT /api/[items]/:id - Update
    DELETE /api/[items]/:id - Delete
    
    UI Flow:
    1. Login
    2. See list of items
    3. Click "+ New" to create
    4. Fill form and submit
    5. Item appears in list
    6. Click item to edit or delete

    Template 2: Multi-User Collaboration (Projects, Teams, Boards)


    Executive Summary: [App] for [teams] to [collaborate on what]. Problem: [coordination issue].
    
    User Personas:
    - [Lead role]
      * Needs: create, assign, track progress, see overview
    - [Team member role]
      * Needs: see tasks assigned, update, comment
    
    Functional Requirements:
    - Users can create/join a team
    - Team leads can create [items] and assign to members
    - Members can update status and comment
    - Everyone can see shared view (board, list, timeline)
    - Notifications when assigned
    
    Database:
    TABLE: teams
    - id (uuid, pk), name, createdBy, createdAt
    
    TABLE: teamMembers
    - teamId (fk), userId (fk), role (enum: lead/member)
    
    TABLE: [items]
    - id (uuid, pk), teamId (fk), title, assignedTo, status, priority, deadline, createdAt, updatedAt
    
    TABLE: comments
    - id (uuid, pk), [itemId] (fk), userId, content, createdAt
    
    API:
    POST /api/teams - Create
    POST /api/teams/:id/members - Invite
    POST /api/[items] - Create
    PUT /api/[items]/:id - Update status
    POST /api/[items]/:id/comments - Comment
    GET /api/teams/:id/[items] - List all for team
    
    UI Flow:
    1. Create/join team
    2. See board/list of items
    3. Click item to see details and comments
    4. Update status or comment
    5. See everyone's work in real-time

    Common Mistakes and How to Avoid Them


    Mistake 1: Writing marketing language instead of technical specs


    ❌ "Users will be delighted by our intuitive interface and powerful features that streamline their workflow."


    This is marketing copy, not a requirement.


    ✅ "Users can create a task with title (required, max 100 chars), description (optional), assignee (required, dropdown of team members), and deadline (required, date picker)."


    Fix: Be specific, testable, technical. Every requirement should be checkable.


    Mistake 2: Forgetting to define what you're NOT building


    ❌ PRD lists 50 features with no priority or scope.


    Lovable will try to build everything and it becomes bloated.


    ✅ "For the MVP, we're building: create task, assign, update status, comment. We're NOT building: time tracking, recurring tasks, integrations, multi-workspace."


    Fix: Explicitly list what's out of scope.


    Mistake 3: Vague data model (schema too simple or unclear)


    ❌ "Store tasks in a database"


    What fields? What relationships?


    ✅ (See the schema examples above) Every table, every column, every type.


    Fix: Write out the complete schema before going to Lovable.


    Mistake 4: Forgetting authentication and permissions


    ❌ "Users can see tasks"


    Can I see everyone's tasks? Only my own? Only my team's?


    ✅ "Only logged-in users can see their own tasks. Team leads can see their team's tasks. Admins can see all tasks."


    Fix: For every feature, ask: Who can do this? Who can't? What data do they see?


    Mistake 5: Skipping the UI/UX workflow section


    ❌ "Users can create, read, update, delete tasks" (no navigation flow)


    Lovable might generate a confusing interface.


    ✅ "Login → Dashboard (see tasks) → Click task to expand → Click edit to update → See changes in list immediately"


    Fix: Write out how a user navigates through your app, step by step.


    FAQ


    Should I write a PRD before or after sketching wireframes?


    After sketching, but you don't need detailed wireframes. A rough sketch of the main screens helps. The PRD comes first, then wireframes, then Lovable generates code from the PRD.


    How long should my PRD be?


    2-4 pages (1500-3000 words). If it's longer, you're adding too much detail. If it's shorter, you're missing important specs.


    Should I include the PRD text in my Lovable prompt?


    Yes, copy-paste the PRD sections (executive summary, personas, requirements, schema, API, UI flow) directly into your Lovable prompt. Lovable is built for this kind of structured input.


    What if I'm building an app with no database (static content only)?


    You still need a schema—even if it's just a content model. Define what information you're displaying. Then define how it's stored (even if it's hardcoded for now).


    Can I reuse a PRD for multiple projects?


    Partially. The structure is reusable, but each app needs its own PRD. You can use one PRD as a template for the next, though.


    What if requirements change after I start building?


    Update the PRD, then paste the updated sections into Lovable and ask for the changes. The PRD stays in sync with the actual app.


    How do I know if my PRD is good enough to hand to Lovable?


    Three tests:

    1. Can someone else read your PRD and understand exactly what you're building? (Clarity)
    2. Is every requirement testable? (Could you write test cases?) (Specificity)
    3. Are all data fields defined with types and constraints? (Schema completeness)

    If all three are yes, your PRD is ready.


    Should I include design system or component library in the PRD?


    Optionally. If you want specific styling (Tailwind config, specific colors, component library), mention it in a "UI Specification" section. But don't over-specify—Lovable handles styling well.


    What if my app needs something outside Lovable's stack (Node.js, React, PostgreSQL)?


    Note it in the PRD's assumptions. If you need something truly custom, build the MVP with Lovable first, then extend manually after.


    Next Steps


    Your PRD is your blueprint. Use it.


    Immediate next step: Write a PRD using the structure above for an app you want to build. Use one of the three templates (basic, pro, vertical) as your starting point. Spend 30 minutes writing it out.


    Next: Copy-paste your PRD into Lovable.dev and generate your first app from a structured spec. One clear PRD usually means one good app—minimal iteration needed.


    Advanced: Read our prompt engineering guide for handling PRDs with Lovable—how to iterate based on PRD changes, how to manage PRDs for larger projects, and how to version your PRD as your app evolves.


    Keep your PRD updated: As you build and learn, update the PRD to match reality. Keep it in sync with your actual app.


    Go to lovableprompts.app to find PRD templates and examples you can customize.

    Related posts