Yashveer Singh
Connect
<- All posts
MVP Development and Startup Builds12 min read

The Modular MVP: Building So You Can Pivot Without Burning Everything

The modular MVP is an MVP built with a deliberate separation between the stable infrastructure layer (authentication, billing, user management, email) and the product hypothesis layer (the core feature that is being tested). This structure allows a pivot -- changing the product hypothesis -- without rebuilding the infrastructure. The teams that survive pivots with minimal technical cost are the ones that built the infrastructure once and reused it across multiple hypothesis tests; the teams that burn everything on a pivot built an inseparable tangle of infrastructure and hypothesis.

Written by Yashveer Singh, founder of Yashveer Labs.

What you actually need to know

  • Authentication, billing, and email are stable across pivots. The core product feature is not. Build the infrastructure to last; build the feature to be replaced.
  • The pivot cost is proportional to how entangled the product hypothesis is with the infrastructure. Modular MVPs pivot for the cost of replacing the product layer only.
  • The stable infrastructure layer (auth, billing, email, user settings) should be built with quality: tests, documentation, clear interfaces. The product hypothesis layer should be built with speed: simple, explicit, and easy to delete.
  • The "everything is urgent" pressure of MVP development usually causes teams to skip the clean separation and tangle everything together. This is the decision that makes pivots expensive.
  • Reusing infrastructure across startup ideas (or product pivots) is one of the highest-leverage technical advantages available to a serial founder or a team with multiple pivots.
ComponentStable Across PivotsHow to BuildReusable
User authenticationYesAuth.js / ClerkYes
Subscription billingYesStripe + webhook handlerYes
Transactional emailYesResend + React EmailYes
User settingsYesSimple settings pageYes
Product entity schemaNoSimple, explicit, replaceableNo
Product feature UINoMinimal, delete-friendlyNo
Product-specific integrationsNoIsolated, external-facingPartially

The core argument

The MVP that survives a pivot is the one where the infrastructure and the product hypothesis are separate layers. The authentication code knows how to authenticate a user; it does not know whether the user is a note-taker, a project manager, or a restaurant owner. The billing code knows how to process a subscription; it does not know whether the subscription grants access to a CRM, a content platform, or a booking tool. The email code knows how to deliver a welcome email; it does not know what the welcome email is welcoming the user to.

This separation is not about elegant architecture for its own sake. It is about the economics of startup experimentation. A team that rebuilds authentication, billing, and email with each pivot is spending 2-4 weeks of engineering time on infrastructure that does not test the hypothesis. A team that reuses the stable layer is spending 1-2 days swapping the product feature layer. Over three pivots, the modular team has 6-12 more weeks of product experimentation time than the non-modular team. That is the value of the modular MVP: not architectural purity, but engineering efficiency for hypothesis testing.

The stable infrastructure layer

Authentication. A user account system with email/password authentication, social OAuth (Google, GitHub), session management, and password reset. This is identical in every SaaS product. Use Clerk or Auth.js -- these tools are built specifically for this use case and provide the functionality without custom engineering.

The key architectural constraint: user accounts should be independent of the product entity. A User table with id, email, name, and createdAt is stable. A User table that has projectIds or currentPlan embedded in it is coupled to the product model. Keep the user account model minimal and stable.

Billing. Stripe Checkout for payment collection, Stripe Customer Portal for subscription management, and a webhook handler that updates the user's subscription status. This is the same pattern across every SaaS billing implementation.

The stable billing abstraction: a subscriptions table that stores userId, stripeSubscriptionId, status, and planId. The planId maps to a set of features. When the product pivots, the feature set associated with each plan may change, but the billing structure (a subscription with a status, owned by a user) remains.

Transactional email. A set of React Email templates for the lifecycle emails: welcome, password reset, subscription confirmation, cancellation. These templates have the brand identity and the product name; they do not have product-specific content that changes with the hypothesis.

The product hypothesis layer

The product hypothesis layer is everything that is unique to the current product thesis. For a task management tool: the task entity schema, the project hierarchy, the collaboration features, the dashboard UI. For a booking tool: the availability model, the booking flow, the calendar integration.

This layer should be built with two priorities: speed (get it in front of users as fast as possible) and replaceability (when the hypothesis changes, the minimum work to replace it).

The patterns that make the product layer replaceable:

Isolated database tables. Product-specific tables have no foreign keys into the stable infrastructure tables beyond userId. The connection between a user and their tasks is a userId column on the tasks table -- the tasks table can be dropped without affecting the user account table.

Isolated API routes. Product-specific API routes are in a separate directory from infrastructure routes. The infrastructure routes (/auth/*, /billing/*, /settings/*) remain unchanged; the product routes (/tasks/*, /projects/*) are the scope of the pivot.

Isolated UI. The product feature UI is in a separate directory from the shared UI (navigation, layouts, settings pages). The shared UI uses the design system and styling approach; it can be reused across hypothesis changes. The product UI is replaced when the hypothesis changes.

The pivot operation in practice

When the hypothesis changes and the team decides to pivot to a new product idea:

  1. The stable layer (auth, billing, email) remains unchanged.
  2. The product-specific database tables are dropped (or archived) and new tables are created for the new product entity.
  3. The product-specific API routes are replaced with new routes for the new product.
  4. The product-specific UI is replaced.
  5. The billing plan features are updated to reflect the new product's feature set.

The stable layer work is zero. The pivot work is bounded to the product layer. For a typical MVP product layer (3-5 database tables, 10-20 API routes, 15-30 UI screens), this is 3-5 days of engineering work to swap, not 3-5 weeks.

Common mistakes teams make with MVP architecture for pivots

  1. Embedding product logic in the authentication flow. The signup page that asks product-specific questions during account creation ties the auth flow to the current hypothesis. When the hypothesis changes, the signup flow needs to change. Keep signup generic: email, password (or OAuth), and redirect to the product onboarding.
  2. Embedding product entity IDs in the user table. A users table with a currentProjectId or teamId column is coupled to the product model. When the product pivots to a different model, the user table must be migrated. Keep the user table stable.
  3. Using billing plan IDs that encode product features. A plan called "project-creator-pro" encodes the current product concept. When the pivot changes the product, the plan ID is wrong. Use plan IDs that are stable ("tier-2-annual") and separately define what features each tier includes.
  4. Building the product hypothesis with future scalability in mind. The MVP hypothesis layer is not the final product. Optimizing it for scale, building abstraction layers, and implementing caching for a feature that may be replaced is wasted engineering time. Build it simple and replaceable.
  5. Not separating the product hypothesis layer in the codebase from the stable layer. If every file in the project mixes infrastructure code and product code, the pivot requires touching everything. The physical separation of stable and hypothesis code is the technical boundary that makes the pivot tractable.

Where to start: a 3-step modular MVP structure

Step 1: Build the stable infrastructure layer first, before any product feature code. Authentication (Clerk or Auth.js), billing (Stripe Checkout + Customer Portal + webhook handler), and transactional email (Resend + React Email). This takes 3-5 days. It is the same code that every SaaS product needs.

Step 2: Define the product entity model and create isolated database tables for it. The product entity schema should have minimal coupling to the user account schema beyond the userId foreign key. Keep it simple: the MVP hypothesis tests whether users want the product, not whether the data model is perfectly normalized.

Step 3: Build the product feature UI in a separate directory from the shared application UI. app/(product)/ or pages/app/ contains the product hypothesis screens. app/(auth)/ and app/(settings)/ contain the stable screens. This separation makes the pivot scope immediately obvious.

The Architecture That Lets You Learn Faster

Yashveer Singh. Founder of Yashveer Labs. I built the infrastructure for Expert Tutorials once: auth with Clerk, billing with Stripe, email with Resend. When the product hypothesis evolved from a tutorial platform to a guided learning product (a different UX model for the same audience), the pivot involved replacing the course browsing UI and the lesson delivery model. The auth, billing, and email stack was untouched. That pivot took four days. I have seen teams at a similar hypothesis stage take four weeks for equivalent pivots because the infrastructure was entangled with the product layer. The four-day pivot versus the four-week pivot is not a skill difference. It is an architectural decision made at the beginning of the project.

Related reading

FAQ

Frequently asked

Author

Why this is the work I do

The work in this article is not theoretical for me. It is what I shipped last quarter, last month, and this week. Yashveer Singh, founder of Yashveer Labs. I do not write about things I have not done. I do not pretend to expertise I do not have. If the topic here is the topic you are dealing with, I am the person who has dealt with it. Multiple times. Recently.

Related reading