5 PRD Mistakes That Make AI Build the Wrong Thing
Your PRD determines what AI builds. These common mistakes lead to incomplete apps, broken features, and wasted time. Here's how to avoid them.
You wrote a PRD. You fed it to Cursor, Lovable, or Claude Code. And the AI built... something completely different from what you imagined.
Sound familiar?
After helping thousands of developers create PRDs, I've seen the same mistakes over and over. These five errors are responsible for most failed AI coding sessions.
Mistake #1: Writing for Humans, Not AI
The Problem:
Traditional PRDs include:
- "Sprint 1: User research and wireframing"
- "Stakeholder sign-off required before development"
- "Success metric: 15% increase in user retention"
AI coding tools don't attend sprint planning. They don't care about stakeholder alignment. They can't measure retention.
The Fix:
Strip everything that isn't actionable code guidance:
❌ "Week 1: Build authentication" ✅ "Authentication: Clerk with email/password and Google OAuth"
❌ "UX should be intuitive" ✅ "Navigation: sidebar with icons and labels, collapsible on mobile"
❌ "Performance should be good" ✅ "Target: under 3s initial load, lazy load images, pagination at 20 items"
Rule: If a sentence can't be directly converted to code, remove it.
Mistake #2: Vague Tech Stack
The Problem:
"Use a modern frontend framework with a scalable database solution"
This tells AI nothing. "Modern" could mean React, Vue, Svelte, or Solid. "Scalable database" could be PostgreSQL, MongoDB, DynamoDB, or PlanetScale.
When you're vague, AI picks defaults that might not match your needs—or worse, makes inconsistent choices throughout the codebase.
The Fix:
Be extremely specific:
## Tech Stack
- Frontend: Next.js 14 with App Router
- Styling: Tailwind CSS v3.4 + shadcn/ui
- Database: Supabase (PostgreSQL)
- Auth: Clerk
- File Storage: Supabase Storage
- Hosting: Vercel
- Package Manager: pnpm
Include versions when they matter. Next.js 13 and 14 have different patterns. Tailwind v3 and v4 have different syntax.
Mistake #3: Missing the Data Model
The Problem:
Your PRD lists features but never defines what data exists or how it relates.
"Users can create projects and invite team members"
Okay, but:
- What fields does a project have?
- How is the user-project relationship structured?
- What happens when a user is removed from a project?
- Are there roles within projects?
Without this, AI makes assumptions. Those assumptions will be wrong.
The Fix:
Define your schema explicitly:
## Database Schema
### users
- id: uuid, primary key
- email: text, unique, not null
- name: text
- avatar_url: text
- created_at: timestamptz, default now()
### projects
- id: uuid, primary key
- name: text, not null
- description: text
- owner_id: uuid, references users(id)
- created_at: timestamptz, default now()
### project_members
- id: uuid, primary key
- project_id: uuid, references projects(id) on delete cascade
- user_id: uuid, references users(id) on delete cascade
- role: text, check (role in ('admin', 'editor', 'viewer'))
- invited_at: timestamptz, default now()
- unique(project_id, user_id)
Now AI knows exactly how your data is structured.
Mistake #4: Assuming Obvious Features
The Problem:
"Build a task management app"
Of course it needs:
- User authentication
- Task CRUD operations
- Due dates
- Error handling
- Loading states
- Mobile responsiveness
Right?
Wrong. AI doesn't assume. It builds exactly what you specify—nothing more.
I've seen developers spend hours adding features that should have been "obvious" because they forgot to mention them in the PRD.
The Fix:
List everything explicitly, even if it feels redundant:
## Core Features
### Authentication
- Email/password signup
- Google OAuth
- Forgot password flow
- Email verification
- Session persistence
### Task Management
- Create task (title required, description optional)
- Edit task (inline editing)
- Delete task (with confirmation dialog)
- Complete task (checkbox with strikethrough)
- Due date picker
- Priority levels (high, medium, low)
### Error Handling
- Network errors: toast with retry
- Validation errors: inline messages
- 404: redirect to dashboard
- 500: error page
### Loading States
- Skeleton loaders for lists
- Spinner for actions
- Optimistic updates for quick actions
### Responsive Design
- Mobile: single column, bottom nav
- Tablet: sidebar collapsible
- Desktop: full sidebar
If it's not in the PRD, don't expect AI to build it.
Mistake #5: Feature Overload
The Problem:
Your PRD is 3,000 words covering every feature you might ever want:
- Real-time collaboration
- AI-powered suggestions
- Custom themes
- Plugin system
- Import/export
- Analytics dashboard
- Team management
- Billing integration
- Mobile apps
- API for developers
AI attempts to build all of it. Nothing works properly. You have a broken mess of half-implemented features.
The Fix:
Define clear scope. What's in V1? What's explicitly out?
## V1 Scope
### Included
- Single-user task management
- Basic CRUD operations
- Due dates and priorities
- Category organization
- Web app only
### Out of Scope (V1)
- Team collaboration
- Real-time sync
- Mobile apps
- Recurring tasks
- API access
- Custom integrations
Build less, but build it completely. You can always add features in V2.
Bonus: The PRD Quality Checklist
Before feeding your PRD to an AI tool, verify:
- Tech stack is specific (frameworks, versions, services named)
- Database schema is defined (tables, fields, relationships)
- All features are explicitly listed (no assumed functionality)
- UI components are described (not wireframes, but component behaviors)
- Error handling is specified (what happens when things fail)
- Scope is bounded (V1 features vs. future features)
- No timeline/stakeholder language (only buildable specs)
If you can check all these boxes, your PRD is AI-ready.
Generate Better PRDs Automatically
Writing good PRDs takes practice. Or you could let AI write them for you.
TinyPRD generates AI-agent-ready PRDs from simple product descriptions. Just describe what you want to build, and get a complete spec optimized for Cursor, Claude Code, and Lovable.
No more missing features. No more vague tech stacks. No more broken AI output.
Stop making these mistakes. Generate PRDs that AI can actually use with TinyPRD.