W1
Week One Labs
9/19/2025

MVP Case Study - SaaS MVP Built in 14 Days

Real MVP case study: property management tool from Notion to live demo in 14 days. Auth, workflow, payments, 6 interviews, 2 pilots.

Case Study: From Notion Doc to Day‑14 Live Demo (The Thin‑Slice MVP)

A first‑time founder brought a one‑page Notion doc for an internal tool idea for property managers (“PropOps”): reduce back‑and‑forth and get requests → assigned → resolved → invoiced without spreadsheets. They didn’t want an agency contract or a 10‑week plan - just a working MVP to test with 5–10 real users.

I built it in 14 days.

Case study  - Thin‑slice MVP hero

TL;DR

  • Thin slice: Auth → submit request → assign → resolve → invoice (Stripe) → basic analytics.
  • Stack: React/Next.js, Node/TypeScript, hosted Postgres, Stripe, simple event analytics.
  • Outcome: Day‑14 demo used in 6 customer interviews; 2 pilots confirmed in 2 weeks; team killed their spreadsheet in week 1.

The Scope Card (Day 1)

  • Problem (user & job): Property managers need to capture tenant issues, assign to contractors, and close with payment - without email threads & spreadsheets.
  • Success metric (30 days): 10 active users across 2 buildings; ≥ 20 resolved tickets; 1 paid transaction (pilot pricing).
  • Thin slice (deliverables):
    • Auth (email + session)
    • Core flow: Create request → Assign → Resolve → Close
    • Payments: Stripe (test → live)
    • Analytics: ticket funnel events (created → assigned → resolved → paid)
    • Deploy & Docs: client owns repo + infra
  • Out of scope (moved to Sprint 2): roles/permissions beyond admin/standard; notifications matrix & templates; advanced reporting & exports; contractor marketplace search; custom theming.
  • Change control: Any new idea → Backlog; Sprint 1 remains thin.

Architecture (keep it boring & proven)

[Next.js (App)]   - UI + SSR/ISR
      |
      | REST/JSON
      v
[Node/TS API]   - auth, validation, business logic
      |
      | Prisma (ORM)
      v
[Hosted Postgres]
      |
      +--> Stripe (payments)
      +--> Webhooks (events)
      +--> Simple analytics sink (events table)

Why these defaults

  • Reversible decisions, fast DX, strong ecosystem.
  • Hosted Postgres + migrations → production‑minded from Day 2.
  • Stripe early → de‑risks the “last mile” (where MVPs die).

Data Model (thin & explicit)

orgs(id, name)
users(id, email, name, org_id, role)
tickets(id, org_id, title, desc, status, assignee_id, created_at, resolved_at)
comments(id, ticket_id, author_id, body, created_at)
payments(id, ticket_id, stripe_pi, amount_cents, status)
events(id, org_id, type, actor_id, ticket_id, created_at)  -- created/assigned/resolved/paid

Note: No “settings” table yet. That’s surface area we don’t need for a demo.

Day‑by‑Day Highlights

Day 1 - Decide

  • One user, one job, one metric locked.
  • Scope Card signed (1 page). Backlog created.

Days 2–3 - Foundation & Auth

  • Repo, CI, lint, prod/staging envs, database & migrations.
  • Email auth with sessions; minimal roles (admin/standard).
  • Base UI with consistent tokens (typography, spacing) for speed.
  • Acceptance: Can sign up/in; see a stub “Create Request” screen behind auth.

Days 3–7 - Core Flow (happy path only)

  • Create request (title, description, photos)
  • Assign (dropdown of users, simple status)
  • Resolve (status change + optional comment)
  • List (kanban or simple list with filters by status)
  • Detail (timeline: created → assigned → resolved)
  • Non‑goals: bulk import, CSV, triage automation, advanced filters → Backlog.
  • Milestone (Day 7): End‑to‑end happy path recorded in a 90‑second Loom.

Days 8–10 - Payments & Analytics

  • Payments: Stripe Checkout for “resolution fee” (pilot pricing).
  • Events: ticket_created, ticket_assigned, ticket_resolved, payment_succeeded.
  • Mini dashboard: counts per stage + simple conversion.
  • Why: Money & measurement de‑risk the MVP. Even if they pivot, they learn where users drop.

Days 10–12 - Hardening & Edges (only the critical ones)

  • Validation, empty states, guard rails on status transitions.
  • Index on tickets(status, org_id).
  • Access control (org‑scoped everything).
  • Lighthouse pass on core pages; focus states, labels, color contrast.

Day 13 - Docs, Deploy, Demo Rehearsal

  • Docs: README (run, env, deploy), system sketch, API notes.
  • Deploy: production URL live (client’s account).
  • Demo script: 5‑minute path mirroring the user’s real day.

Day 14 - Demo & Handoff

  • Live demo + recorded walkthrough.
  • Handoff: repo, env vars via secure channel, dashboards.
  • Sprint 2 candidates prioritized (see below).

What Shipped vs What Waited

Shipped (production)

  • Email auth + session
  • Create → Assign → Resolve → Close
  • Stripe Checkout (test & live)
  • Events & mini dashboard
  • Docs, deploy, ownership

Deferred (Backlog for Sprint 2)

  • Email/SMS notifications matrix
  • Role granularity (contractor vs manager vs owner)
  • Bulk upload, CSV export
  • SLA timers & escalations
  • Theming, whitelabel, audit log

Reason: The demo must make the user say “yes” to the next conversation. The list above doesn’t change that decision in week 1.

Obstacles & How I Cut Through

  • Photo uploads were slow on residential Wi‑Fi.
    Fix: Compress on client, stream to storage, show optimistic previews.
  • Assign flow felt clunky with a long dropdown.
    Fix: Start with search‑as‑you‑type for members; defer org‑wide directory to Sprint 2.
  • Ambiguity about “resolution fee.”
    Fix: Pilot toggle: paid vs zero‑amount “close” (still creates a record). Learn from real usage.

The Outcome

  • A working Day‑14 demo that mirrored the real work: capture → assign → resolve → invoice.
  • Used in 6 customer interviews; 2 pilots confirmed.
  • The founder’s team ditched their spreadsheet for tickets within the first week.

This is the point of a thin slice: create a believable, repeatable demo that starts real conversations.

Lessons for Founders (What Made This Work)

  • Define the one job. “Resolve maintenance requests” beat “platform for property.”
  • Ship the happy path. Edge cases became backlog with owners + notes.
  • Add money early. Payments change behavior; they surface friction you won’t see in fake demos.
  • Measure the funnel. If you can’t see created → assigned → resolved, you’re flying blind.
  • Own your infra. From day 1, the accounts and repo are yours.

If This Sounds Like You

You’ve got a doc, a deck, or a voice note. You’re not hiring a department - you want a working product in 14 days to test, sell, or raise.

I’ll send you my free 3‑slide scope sketch (problem → thin slice → timeline) and a start date.

Comment “MVP” or book a 20‑min scope call: weekonelabs.com

Key Takeaways

  • Thin slice = auth + core flow + payments/analytics.
  • Decide once, then move. Backlog is your friend.
  • Demo > deck. Real usage uncovers the truth faster than planning.

Stay ahead on AI.

I build with AI every day. I will send you what is worth knowing and what is not worth your time.

Free tools from Week One Labs

Estimate your build cost, timeline, and whether to build or buy - before you commit.