Most first versions fail for the same reason: they try to be the whole product. A good MVP isn't a smaller version of your vision. It's the fastest honest test of whether anyone will pay for it, built so that the parts that survive don't have to be thrown away.
That second half is where business owners get burned. Cut the wrong corners and the "minimum" product becomes the foundation you're stuck with. Cut the right ones and you launch in weeks without paying for it later.
Start with one job, one user, one outcome
Before any code, write a single sentence: "[This user] can [do this job] and gets [this outcome]." For example: "A clinic manager can upload accreditation documents and gets a checklist of what's missing."
Everything that doesn't serve that sentence waits for version two. That usually means:
- One user role, not five. Admin panels, team invites and permission tiers come later.
- One core workflow, end to end, done well.
- Manual work behind the scenes where it's cheaper than code. If you get ten orders a day, you can approve them by hand in a dashboard.
- Third-party tools for anything that isn't your differentiator: Stripe for payments, Clerk or Auth.js for login, Resend for email.
What you can safely cut
These are the corners an engineer will happily cut in an MVP, because adding them later is cheap:
- Polish. Animations, custom illustrations, dark mode, a perfect mobile layout for every screen.
- Scale you don't have yet. Microservices, Kubernetes, multi-region deployments, read replicas. A single well-built Next.js app and one Postgres database can serve far more users than most MVPs ever see.
- Features users haven't asked for. Notifications, exports, integrations, settings pages.
- Automation of rare tasks. Refunds, account deletion and data exports can be a support email at first.
What you must not cut
These are expensive or dangerous to retrofit, so they belong in version one even when the feature list is tiny:
- A real data model. Proper tables, foreign keys, indexes on what you query, and migrations from day one. Your data outlives your code.
- Authentication and authorization done server-side. Every request checks who the user is and what they're allowed to touch. No exceptions for "internal" endpoints.
- Secrets out of the client. API keys live in environment variables on the server, never in the browser bundle or the repo.
- Separate environments. At minimum a production database and a development one. Nobody, human or AI agent, experiments against production.
- Backups you've tested restoring. A backup you've never restored is a hope, not a backup.
- Basic error tracking. Sentry or similar, so you know about failures before your users email you.
- A clean repository you own. Your company's GitHub, your company's cloud accounts.
Build it so version two is an extension, not a rewrite
The difference between a disposable prototype and a real MVP is structure. Even a small codebase should keep business logic out of UI components, keep database access in one layer, and run slow work (emails, AI calls, file processing) in background jobs instead of inside the request.
None of that adds much time when it's done from the start. All of it is painful to add once customers depend on the product.
A realistic MVP checklist
- One sentence that defines the job, the user and the outcome.
- A list of everything you're deliberately not building yet.
- A data model reviewed by an engineer before the first screen is built.
- Auth, authorization and secrets handled properly.
- Staging and production, with backups and error tracking.
- A way to talk to your first users: an email, a feedback link, a calendar booking.
- A launch date that's weeks away, not months.
The bottom line
An MVP should be small in scope, not small in quality. Cut features freely; don't cut the foundation. That's how you learn fast without paying twice.
- CASE NOTES



