Skip to main content
← Back to BlogCase Studies10 min read

Case Study: SaaS MVP in 3 Days for $2,500

Client: Solo therapist trying to replace Calendly. Needed custom features Calendly doesn't offer. Budget: $2,500. Timeline: 3 days. Result: Fully functional SaaS with 12 paying customers in week one.

This is the complete breakdown. Timeline, tech stack, costs, problems we hit, and actual results.

The Client's Problem

Sarah (therapist, licensed 8 years) was paying $12/month for Calendly Pro. But Calendly couldn't:

  • Let clients book same-day appointments (insurance requirement)
  • Send automated intake forms before first session
  • Block certain appointment types on specific days
  • Integrate with her practice management software (TherapyNotes)
  • White-label the booking page with her branding

She'd looked at custom development. Got quoted $15K-25K with 6-8 week timelines. Way outside her budget.

She found ShipKit through a therapist Facebook group. Recorded a 4-minute voice note explaining what she needed. We sent a proposal in 5 hours.

Her Exact Requirements

  • ✅ Calendar integration (Google Calendar)
  • ✅ Custom availability rules by appointment type
  • ✅ Automated intake forms sent via email
  • ✅ Same-day booking allowed
  • ✅ Payment processing (Stripe)
  • ✅ White-labeled booking page
  • ✅ TherapyNotes API integration
  • ✅ Client cancellation/rescheduling
  • ✅ Email/SMS reminders

The Tech Stack

We chose tools for speed and reliability:

Stack Breakdown:

Frontend: Next.js 14 (App Router), Tailwind CSS, Shadcn UI
Backend: Next.js API routes, Prisma ORM
Database: PostgreSQL (Supabase)
Auth: NextAuth.js (email magic links)
Payments: Stripe Checkout + webhooks
Calendar: Google Calendar API
Email: Postmark (transactional emails)
SMS: Twilio (reminders)
Hosting: Vercel (frontend + API)
Custom Domain: Cloudflare (DNS + SSL)

Why these choices?

  • Next.js 14: Fast to build, great DX, serverless API routes
  • Prisma: Type-safe database queries, migrations handled automatically
  • Supabase: Managed Postgres, generous free tier, built-in auth (we used NextAuth instead)
  • Vercel: Zero-config deployment, edge functions, automatic HTTPS

Day 1: Core Booking System (8 hours)

Started at 9 AM. First priority: basic booking flow.

Hours 1-3: Database Schema

Designed Prisma schema for Users, Appointments, AppointmentTypes, Availability, Clients. AI generated the initial schema. I reviewed, added indexes and constraints, ran migrations.

Hours 3-5: Booking UI

Built the client-facing booking flow: Select appointment type → Pick date → Choose time → Enter details → Pay → Confirm. Used AI to generate the UI components, I adjusted styling for Sarah's branding (purple/teal palette).

Hours 5-8: Availability Logic

The complex part. Sarah's availability changes by day and appointment type. AI helped implement the logic: check provider availability → filter by appointment type rules → exclude booked slots → return available times. Tested edge cases (same-day booking, timezone handling, buffer times).

"I gave AI detailed requirements: 'Implement availability calculation that respects provider weekly schedule, appointment-type-specific rules, buffer times between appointments, and same-day booking allowances. Return available slots in client's timezone.'"

By end of Day 1: Clients could see available times and select slots. No payment yet. No calendar integration. But the core booking logic worked.

Day 2: Integrations and Payments (10 hours)

Day 2 was integration hell. APIs, webhooks, error handling.

Hours 1-3: Stripe Integration

Stripe Checkout for payments. Webhook handler for successful payments (creates appointment, sends confirmation email, triggers calendar event). Tested with Stripe test mode. Handled edge cases (payment fails, user abandons checkout, duplicate webhooks).

Hours 3-6: Google Calendar API

OAuth setup so Sarah could connect her Google Calendar. When appointment is booked, create event on her calendar with client details. When client cancels, delete event. Syncing was tricky—had to handle rate limits and connection failures gracefully.

Hours 6-8: TherapyNotes Integration

TherapyNotes has a REST API (documentation is rough). After appointment booked, create client record in TherapyNotes with basic info. Sarah can then complete intake in their system. Had to reverse-engineer some undocumented API behavior.

Hours 8-10: Email System

Set up Postmark for transactional emails. Templates for booking confirmation, cancellation, rescheduling, reminders. Sarah reviewed copy, I made adjustments. Added intake form link to confirmation email (Google Forms for MVP, can build custom forms later).

By end of Day 2: Full booking flow worked end-to-end. Payment → Calendar event → TherapyNotes record → Confirmation email. Tested 15+ bookings in test mode. All integrations working.

Day 3: Admin Dashboard and Polish (8 hours)

Final day: Give Sarah control over her system.

Hours 1-4: Admin Dashboard

Built dashboard for Sarah: view upcoming appointments, manage availability, configure appointment types (name, duration, price, availability rules), view revenue stats, export data to CSV. Clean UI, easy to use.

Hours 4-6: Client Portal

Clients can log in (magic link auth) to view their appointments, cancel/reschedule, update contact info. Simple, mobile-friendly.

Hours 6-8: Final Testing and Deployment

Tested every flow. Found and fixed bugs (timezone edge case, calendar sync race condition, email template typo). Set up custom domain (booking.sarahtherapy.com). Deployed to Vercel production. Monitored first few hours for errors.

Launch Checklist

  • ✅ All integrations tested (Stripe, Google Calendar, TherapyNotes)
  • ✅ Mobile responsive (tested on iPhone, Android, iPad)
  • ✅ Email templates reviewed and approved
  • ✅ Custom domain connected and SSL working
  • ✅ Admin dashboard functional
  • ✅ Error monitoring set up (Sentry)
  • ✅ Database backups automated
  • ✅ Privacy policy and terms of service added

72 hours after starting: Fully functional SaaS live in production.

The Costs (Real Numbers)

Complete breakdown of what we spent:

Development Costs:

Client charged:$2,500
Development time (26 hours × $50/hr):$1,300
AI API costs (Claude Sonnet):$4.20
Profit:$1,195.80

Ongoing Costs (Sarah pays):

Vercel Pro:$20/month
Supabase Pro:$25/month
Postmark (email):$10/month (1,000 emails)
Twilio (SMS):~$15/month (estimate)
Domain:$12/year
Stripe fees:2.9% + $0.30 per transaction
Total:~$71/month + Stripe fees

Sarah was paying $12/month for Calendly. Now she's paying ~$71/month but getting exponentially more value: custom features, white-labeled, full control, better client experience.

Week One Results

We launched on a Monday. Here's what happened in the first week:

First Week Metrics:

Total bookings:12
Revenue processed:$1,800
Average appointment value:$150
Cancellations:1 (rescheduled same day)
Technical issues:0
Client support requests:3 (all "how do I..." questions)

"This is exactly what I needed. My clients love how easy it is to book. I love that everything syncs automatically. Already recommended you to two other therapists."

— Sarah, Week 1 feedback

What We'd Improve

No project is perfect. Here's what we'd change if we rebuilt it:

  • Better timezone handling: We tested US timezones thoroughly. Didn't consider international clients. Sarah got a booking from someone in UK, timezone display was confusing. Fixed in Day 4 (post-launch).
  • More thorough TherapyNotes testing: Their API rate limits are aggressive. Didn't hit them in testing. Hit them on Day 3 when Sarah imported her existing client list. Added rate limiting and retry logic.
  • Mobile optimization: Tested on a few devices but should've done more extensive mobile testing. One UI element was slightly off on smaller Android screens. Quick CSS fix.
  • Admin onboarding: Should've built a guided setup wizard for first-time users. Sarah figured it out, but a step-by-step onboarding would've been smoother.

All minor issues. None were showstoppers. All fixed within days of launch.

The Follow-Up

Two weeks after launch, Sarah referred two therapist friends. We're building similar systems for both (with slight customizations). Each paying $2,500.

We're now exploring a white-label version for therapists. Same core system, multi-tenant architecture, $49/month subscription. If we get 50 therapists, that's $2,450/month recurring.

One client project turned into a potential SaaS business. That's the power of solving real problems for real people.

Key Takeaways

What Made This Work:

  1. 1. Clear requirements from the start. Sarah's 4-minute voice note was detailed. No scope creep. No confusion.
  2. 2. Right tools for the job. Next.js + Prisma + Vercel = fast development and reliable hosting.
  3. 3. AI for boilerplate, humans for logic. AI generated UI components, API routes, database queries. I reviewed everything, handled complex business logic, tested edge cases.
  4. 4. MVP mindset. Built exactly what Sarah needed. No extra features. No over-engineering. Ship fast, iterate based on real usage.
  5. 5. Real testing before launch. 15+ test bookings in every scenario. Caught bugs before real clients did.

Can You Build a SaaS in 3 Days?

Yes. But you need:

  • Clear requirements (not "build me a SaaS")
  • Right tech stack (modern, well-documented tools)
  • AI for acceleration (not automation)
  • Development experience (to review, test, debug)
  • MVP focus (ship core features, iterate later)

If you have those, yes. 3 days is realistic.

If you're missing any, expect 2-4 weeks. Still way faster than traditional development.

This is vibe coding. AI does the heavy lifting. Humans provide the judgment. Together, we build software 10x faster than either could alone.