PRD & Specs

How to Write a PRD for Lovable, Cursor, and Bolt

AtRisk EditorialProduct & researchUpdated 13 min read

We build the product we review. See our about page for how AtRisk Editorial researches and updates comparisons.

Writing a PRD for Lovable, Cursor, and Bolt means writing an instruction set, not a stakeholder document. The eight sections that matter are: target user, core problem, MVP feature list, data model, user flows, stack constraints, anti-goals, and acceptance criteria - roughly 400–800 words in plain English. Paste the full document as the first message of a new session. This guide covers how to structure each section, how the three main AI builders consume context differently, and the common mistakes that make builders guess wrong.

The numbers show why this matters. 74% of technology leaders report that at least 25% of AI-generated code needs major post-deployment rework - and the leading cause is poor context going in, not model capability (source: New Relic 2026 State of AI Coding). The model cannot fix a vague brief. You can.

Why a PRD for AI builders is different

A traditional product requirements document is written for a team of engineers. It explains the "what" and "why" in enough detail for a group of people to ask follow-up questions, raise risks in a planning session, and estimate work over several sprints. AI builders do none of that. Lovable, Cursor, and Bolt do not ask clarifying questions before they generate code unless you explicitly wire that behavior into the prompt.

This means your PRD carries all the decisions a human team would normally distribute across several conversations. Every ambiguous word you leave in the brief becomes a default the builder chooses for you. Describe a "user dashboard" without specifying which data it displays, and you will get a generic scaffold with placeholder metrics. Describe the same dashboard with a data model and three specific metrics, and you get something closer to what you actually want on the first pass.

The other difference is scope. Human engineers push back on scope creep. AI builders do not - they will happily build a larger, more complicated version of what you described if you did not explicitly say what to leave out. An AI-builder PRD needs an anti-goals section for exactly this reason: to constrain what the builder should not build.

That shift has produced a real market. 63% of people building with AI tools in 2026 identify as non-developers - founders, product managers, and designers who have never written production code (source: Keyhole Software). For this group, knowing how to write a builder-ready brief is more valuable than knowing how to write a technical spec.

The eight sections that matter

Not every section of a traditional PRD survives the translation to an AI-builder context. Competitive analysis, stakeholder maps, and success metrics matter later. For the first build, these eight sections are what you need.

1. Target user

One sentence. Who is this product for, and what do they already know how to do? "Small business owners who track jobs in a spreadsheet" is more useful than "users." It sets the vocabulary level, the complexity ceiling, and the permission model the builder will default to.

2. Core problem

One to two sentences on the specific pain. "Freelancers lose 3–5 hours a week chasing invoice payments because clients ignore email reminders" is a problem statement. "Make invoicing easier" is not.

3. MVP feature list

List between three and six features. Number them. Write each as an action: "Send automated reminder emails 3, 7, and 14 days after invoice due date." Not "reminder system." The action form tells the builder what to generate; the noun form tells it nothing specific.

4. Data model

Name your main entities and their key fields. You do not need to write SQL - you need to show the builder what data the app stores. "Users have a name, email, and plan tier. Invoices have an amount, due date, status, and belong to a Client. Clients have a name and email." Three sentences like that save the builder from guessing your schema and defaulting to something you will have to migrate away from later.

5. User flows

Write the two or three most important flows as numbered steps. "1. User creates a new invoice. 2. User adds line items and sets a due date. 3. System sends an email to the client. 4. Client clicks a pay link in the email." This maps screens and logic gates in a way the builder can follow.

6. Stack constraints

If you have preferences - Next.js not Remix, Supabase not Firebase, Tailwind not vanilla CSS - say them here. If you are using a specific builder and want the stack it defaults to, say that instead: "Use Lovable's default stack." Silence on this point is permission for the builder to choose, which can produce a setup that is hard to migrate later.

7. Anti-goals

List what you are explicitly not building in v1. "No mobile app. No team accounts. No PDF export. No payment processing - link generation only." Each item here prevents the builder from adding features you did not ask for and will need to delete.

8. Acceptance criteria

For each core feature, one sentence on what "done" looks like. "A reminder email fires automatically without manual action. The invoice status updates to 'paid' when the client clicks the payment link." These criteria let you verify the build without writing a test suite first.

How Lovable, Cursor, and Bolt read your PRD differently

The same PRD will produce different results depending on which builder you paste it into, because each tool's approach to context differs.

Cursor semantically indexes your project files. If you save your PRD as PRD.md in the project root, Cursor's AI can reference it during any conversation - you can tell it explicitly: "Refer to the user stories in PRD.md and generate the data model." Cursor works best with dense, precise documents. Its multi-file Composer benefits from every specific constraint you write because it has codebase awareness and applies your context to every file it edits (source: ChatPRD).

Lovable is optimized for full-stack generation from a standing start. Its models are tuned for UX consistency, so a broader prompt still produces a polished first result - but it still benefits from an explicit data model and feature list. Paste your PRD as the first message of a new project. Lovable reached $206M ARR in November 2025 and grew 2,800% year over year (source: Mocha), which means it is handling increasingly complex builds - and those builds need richer context than a one-paragraph idea.

Bolt performs best on isolated, focused features. A shorter PRD that describes one feature at a time works better than a 1,000-word document. If you are building a full app in Bolt, break your PRD into feature-sized chunks and paste them one section at a time rather than all at once.

The pattern across all three: more specific input produces more accurate output. A Claude Code session with a detailed CLAUDE.md is not fundamentally different from a Lovable session with a detailed PRD. The tool reads what you gave it and fills in the rest.

A compact PRD example

Here is what a builder-ready PRD looks like for a simple invoice reminder SaaS. This covers all eight sections in roughly 350 words - short enough to paste into any builder as the opening message.

Example PRD: Invoice Reminder App

  • Target user: Freelancers and consultants who invoice clients manually and want automated payment reminders without a full accounting system.
  • Problem: Freelancers lose 3–5 hours a week following up on late invoices. Email reminders written manually are ignored or sent late.
  • MVP features: (1) Create and send invoices via email. (2) Auto-send reminder emails at 3, 7, and 14 days past due. (3) Track invoice status: draft, sent, overdue, paid. (4) Client-facing payment confirmation link.
  • Data model: User (name, email, plan). Client (name, email, belongs to User). Invoice (amount, due_date, status, belongs to Client).
  • Key flow: User creates invoice → adds line items and due date → system emails client → client clicks pay link → invoice marked paid.
  • Stack: Next.js, Supabase, Resend for email, Tailwind CSS. Enable row-level security on all tables.
  • Anti-goals: No payment processing (link only), no team accounts, no recurring invoices, no PDF export in v1.
  • Done when: Reminder emails fire automatically without manual action. Invoice status updates to "paid" when client confirms.

Anti-goals and scope boundaries

Anti-goals deserve their own section because skipping them is the most consistent planning mistake. When you describe what you want to build, the builder also hears an invitation to be helpful. "Invoice app" implies payment processing to one model and a full accounting suite to another. "Invoice app - no payment processing in v1" closes the ambiguity.

The research on vibe coding failures is consistent on this point: the single biggest mistake is asking for too much at once, because the builder produces shallow implementations of each feature instead of one complete one (source: VibeCoding). Anti-goals solve this proactively - they tell the builder what to refuse to build, even if the conversation drifts toward it later.

Security is another reason anti-goals matter. 88% of audited vibe-coded apps had Supabase row-level security entirely disabled, meaning the database returned any record to any query (source: Creatr Security Research). An explicit line in your PRD - "Enable RLS on all tables; users may only read their own data" - is the difference between a secured app and one that exposes every user's invoices to every other user.

PRD.md, CLAUDE.md, or AGENTS.md: which file to use

The format depends on which builder you are using.

FileUse withWhat it contains
PRD.mdCursor, any builderProduct requirements, feature list, user flows, data model, acceptance criteria
CLAUDE.mdClaude CodePermanent instructions loaded at session start - coding conventions, project context, constraints
AGENTS.mdCursor, Windsurf, CopilotEmerging standard for multi-agent coding workflows; similar role to CLAUDE.md
Pasted promptLovable, Bolt, v0Entire PRD pasted as the first message of a new session; no persistent file needed

For most founders, the simplest approach is to write one PRD document and adapt it to the builder's preferred format. With Cursor, save it as PRD.md in the project root so Cursor's indexing picks it up. With Lovable or Bolt, paste the same content as your first message. With Claude Code, move the project context into CLAUDE.md once the project is underway, so each session starts with the same grounding. Tools like AtRisk generate planning docs plus a phased Cursor build workflow; MakePRD and CodeGuide export builder-specific prompt packs that handle the formatting step automatically.

Common mistakes

Vague feature descriptions

"Add a notification system" tells the builder nothing about trigger events, channels, recipients, or content. "Send an email to the user when their invoice is viewed by a client" is complete. Write every feature as an action with a subject, trigger, and outcome.

Missing data model

The data model is the most frequently skipped section, and its absence is why founders end up with a schema they will migrate away from in week two. You do not need ERD diagrams - you need entity names and their relationships. Three sentences is enough.

No build order

Giving a builder eight features to implement simultaneously produces worse results than giving it one feature at a time in dependency order. The vertical slice method - database schema first, then server logic, then UI - works because it gives the builder a solid foundation before adding the next layer. Ask for foundation, then auth, then data, then core features, then polish.

Skipped user flows

Builders infer flows from feature lists. When the flow has a branch - what happens if the payment fails, what happens if the client email bounces - the builder will choose a default that may not match your business logic. Write the happy path in full and call out the one or two branches that matter most.

No acceptance criteria

Without acceptance criteria, you have no way to verify the build is complete. A short checklist - five items, one sentence each - is enough to catch the gap between what the builder thought you wanted and what you actually needed.

Frequently asked questions

How long should a PRD for an AI builder be?

Between 400 and 800 words for a simple app. Longer is not better - if you are describing ten features in your first PRD, cut to five and move the rest to a v2 list. The goal is complete information per feature, not a comprehensive product vision.

Do I need a separate PRD for each AI builder I use?

No. Write one document and adapt the format. Paste it into Lovable or Bolt as the opening message. Save it as PRD.md in a Cursor project. Move the persistent context into CLAUDE.md if you switch to Claude Code. The substance stays the same; the format changes.

Can I use ChatGPT to write the PRD and then paste it into a builder?

Yes, but verify it covers the eight sections before you paste. ChatGPT tends to produce well-formatted documents that read as complete but omit the data model and anti-goals - the two sections that most directly prevent expensive rewrites. Read the output critically before treating it as builder-ready.

Does the PRD replace a developer?

No. A PRD tells the builder what to build; it does not tell it what to do when something breaks, how to optimize a slow query, or when to push back on a dangerous implementation. Carnegie Mellon research found that while 61% of AI-generated solutions were functionally correct, only 10.5% were secure without additional review (source: Creatr). Human review remains essential for anything going to production.

What is the difference between a PRD and a prompt pack?

A PRD is one structured document describing what to build. A prompt pack is a sequence of builder-specific prompts optimized for step-by-step construction - typically covering foundation setup, authentication, data layer, core features, and UI polish as separate messages. The PRD informs the prompt pack. AtRisk generates the PRD alongside app flow, tech stack guidance, and security notes, then unlocks a Cursor build workflow (phased Plan-mode prompts) on the paid plan. MakePRD and Vibe Workflow take different approaches to similar planning outputs.

Should I include UI wireframes in the PRD?

Not for a first build. User flows described in plain text produce more consistent results than rough wireframes, which the builder may try to reproduce pixel-for-pixel rather than interpreting functionally. Once the core app works, you can use wireframes to refine the interface in a second pass.

Where this fits in your build workflow

A good PRD is the first step, not the whole plan. After the PRD, you need a build order: which features to implement first, how to test each vertical slice before adding the next, and how to handle the common failure modes - auth edge cases, missing error states, RLS misconfiguration. That is where AtRisk extends the work: the platform generates the PRD, then the app flow, tech stack selection, security guidelines, and - on Starter - a staged Cursor build workflow with phased Plan-mode prompts, so the context stays consistent across every coding-agent session, not just the first one. CodeGuide takes a similar idea in the direction of spec-driven documentation, with starter kits and GitHub integration for teams already in a codebase. MakePRD is faster for founders who want a PRD plus launch copy without the full planning layer.

For more on the broader category, see What Is Vibe Coding? The 2026 Guide for Non-Technical Founders and Best AI PRD Generators for Founders in 2026.