TL;DR: The single most important decision for a solo founder building a SaaS MVP is what to build from scratch and what to buy. Build the wrong thing, and you waste weeks. Buy the wrong thing, and you lock yourself into someone else's roadmap. This article presents a decision framework — a four-quadrant analysis for every feature, a prioritization matrix, and specific recommendations for the most common SaaS features.
The Cost of Building the Wrong Thing
Every feature you build from scratch costs:
- Proposal phase: 5-10 hours (planning, spec, design)
- Build phase: 20-80 hours (coding, testing, debugging)
- Maintenance phase: 5-10 hours/month (updates, bug fixes, support)
- Opportunity cost: Whatever else you could have built instead
For a solo founder with a 12-week runway before launch, building the wrong feature can cost 2-4 weeks of development time — potentially the difference between shipping and stalling.
The Decision Framework
Four-Quadrant Analysis
| Strategic (Core Differentiator) | Non-Strategic (Commodity) | |
|---|---|---|
| High Complexity | Build (invest resources) | Buy/Use Open Source (don't spend time here) |
| Low Complexity | Build Quick (customize for your edge) | Buy or Skip (not worth the distraction) |
Strategic: Features that define your product's unique value proposition. Non-Strategic: Features users expect but do not differentiate on. High Complexity: Requires significant engineering effort to build correctly. Low Complexity: Simple to implement with standard patterns.
MVP Feature Assessment Table
Apply this framework to common SaaS features:
| Feature | Strategic Value | Complexity | Decision | Reason |
|---|---|---|---|---|
| Authentication (email/password) | Low | High | Buy | Security, compliance, integration complexity |
| Auth (OAuth/Social) | Low | High | Buy | Multiple provider integrations |
| User management | Low | Medium | Buy | Well-solved problem |
| Payment/billing | Low | High | Buy (Stripe) | PCI compliance, tax handling |
| Database setup | Low | Medium | Framework | Drizzle + D1 handles this |
| Core business logic | High | Varies | Build | This is your product |
| UI component library | Low | High | Buy/template | Design systems are not your differentiator |
| Data tables/grids | Low | Medium | Library (TanStack Table) | 18 KB, solves all table needs |
| Multi-language i18n | Low | Medium | Framework (Paraglide) | TanStack Ship includes this |
| Analytics tracking | Low | High | Template/built-in | UTM, events, attribution |
| Email sending | Low | High | Buy (Resend/SES) | Deliverability is hard |
| SEO optimization | Medium | Medium | Framework | Meta tags, sitemaps, hreflang |
| Onboarding flow | High | Medium | Build | Your product, your user journey |
| Invite/referral system | Medium | High | Template | Complex logic, proven patterns |
| Admin dashboard | Low | High | Template | Not your differentiator |
| Background jobs | Low | Medium | Service (Cron Workers) | Reliable scheduling is hard |
Build vs Buy Decision Matrix
For each feature, score:
| Factor | Weight | Build | Buy | Score |
|---|---|---|---|---|
| Time to implement | 0.25 | 3 (3 weeks) | 9 (1 day) | Build: 0.75, Buy: 2.25 |
| Cost (first year) | 0.15 | 9 ($500 dev) | 3 ($2,400 SaaS) | Build: 1.35, Buy: 0.45 |
| Maintenance burden | 0.20 | 2 (ongoing) | 8 (minimal) | Build: 0.40, Buy: 1.60 |
| Differentiation | 0.30 | 8 (custom UX) | 2 (generic) | Build: 2.40, Buy: 0.60 |
| Integration risk | 0.10 | 5 (medium) | 5 (medium) | Build: 0.50, Buy: 0.50 |
| Total | 1.00 | Build: 5.40, Buy: 5.40 |
In this example, the scores are equal — meaning you could go either way. Use this framework to make objective decisions instead of gut feelings.
The Template Advantage
A high-quality SaaS template like TanStack Ship compresses the decision tree significantly:
// src/lib/auth-client.ts — already included
import { createAuthClient } from "better-auth"
// src/lib/billing-db.ts — already included
import { createSubscription, cancelSubscription } from "../lib/billing-db"
// src/server/campaign-db.ts — marketing features included
import { createCampaign, trackClick } from "../server/campaign-db"
// src/server/credit-db.ts — loyalty system included
import { grantCredits, deductCredits } from "../server/credit-db"
A template converts these decisions from "Build vs Buy" to "Use vs Customize":
| Without Template | With Template |
|---|---|
| Auth: 2-4 weeks to build | Auth: 1 day to configure |
| Billing: 1-2 weeks + Stripe integration | Billing: 2 days to customize |
| Admin dashboard: 2-3 weeks | Admin dashboard: Included |
| Multi-language: 1-2 weeks | Multi-language: Pre-configured |
| Marketing: UTM, campaigns: 2 weeks | Marketing: Built-in |
| Total baseline: 8-13 weeks | Total baseline: 1-2 weeks |
Practical Prioritization: The RICE Framework
Combine the build-vs-buy analysis with RICE prioritization:
| Feature | Reach | Impact | Confidence | Effort | RICE Score |
|---|---|---|---|---|---|
| Core CRUD | High (all users) | High (required) | High (100%) | 2 weeks | 100 |
| Authentication | High (all users) | High (required) | High (100%) | 1 day (buy) | 400 |
| Payment | High (all users) | Critical | High (100%) | 2 days (buy) | 200 |
| Onboarding flow | High (all users) | High | Medium (70%) | 1 week | 50 |
| Export to CSV | Medium (power users) | Low | High (100%) | 1 day | 25 |
| Dark mode | Medium (some users) | Low | Low (30%) | 3 days | 3 |
RICE = (Reach × Impact × Confidence) / Effort
The higher the RICE score, the sooner you should build (or buy) the feature.
What I Wish I Knew
These lessons come from shipping the MVP of tanstackship.com:
Things I Regret Building
- Custom admin panel — Should have bought a template
- Email template system — Should have used a third-party service
- Custom analytics dashboard — Should have shipped with PostHog first
Things I Regret Buying (at MVP stage)
- Premium animation library — CSS transitions were sufficient
- Expensive analytics platform — Started with free tier, upgraded later
- Dedicated image processing service — Workers-based pipeline was enough
The 80/20 Rule for SaaS Features
80% of your users only care about 20% of your features. Identify those 20%:
const features = {
mustHave: [
"User authentication",
"Core business logic",
"Pricing and payment",
"Basic CRUD operations",
],
niceToHave: [
"Advanced filtering",
"Export to CSV/PDF",
"Webhook integrations",
"Role-based permissions",
],
later: [
"API for third parties",
"SSO / SAML",
"White-labeling",
"Custom reports",
],
}
Decision Flowchart
Is this feature core to your product's value?
├── YES → Build it (invest resources)
└── NO → Is it complex?
├── YES → Buy or use a template
└── NO → Can you launch without it?
├── YES → Skip it for now
└── NO → Build a quick version (1-2 days max)
Conclusion
The build-vs-buy decision is the single highest-leverage decision a solo founder makes. Every hour spent evaluating this trade-off saves 10 hours of unnecessary development.
The key insight: build what differentiates you, buy everything else. Your authentication flow will not be the reason users choose your product. Your core business logic — the algorithm, the workflow, the data visualization — that is where your competitive advantage lives.
To support your feature decisions with the right infrastructure, explore our SaaS Database Architecture guide for data layer design, the Finding Product-Market Fit framework for validating your choices, and the Choose Your SaaS Tech Stack 2026 guide for technology decisions. For a complete acceleration path from idea to launch, see the Zero to MVP in 4 Weeks guide.