Module 4 · Capstone-eligible build

ServiceSwipe.

Tinder-style swipe app for finding local service providers. iOS native, real payments, real users — shipped to TestFlight in three to four weeks.

StackSwift · SwiftUI
Length12 Lessons · 3–4 wks
OutcomeTestFlight build
9:41●●●●●
Maya Okafor
Wedding photographer · 3.2 mi · $2,400–$4,800
Like
The 30-second pitch · memorize this
“If you need a dog walker, a handyman, a wedding photographer, or a tutor in your zip code, your options today are: Facebook groups full of scams, Nextdoor full of strangers, Yelp full of paid reviews, or Craigslist (please don't). I built [YourName]Swipe — a Tinder-style swipe app for finding [your vertical] in [your city]. Swipe right, match, message, book, pay, review.iOS native. Real providers. Real bookings.”
This is your Demo Day open · every word earns its place
Why this buildThe case

Three reasons this is the featured capstone.

01

The market gap is obvious.

Facebook groups, Nextdoor, Yelp, Craigslist, Thumbtack — every existing option is bad UX for service discovery. The Hinge mechanic for finding a contractor is a $0 → $1B idea sitting on the table.

02

It demos beautifully.

Swiping is visceral. In 60 seconds your audience sees the gesture, hears the haptic tap, watches the match animation, and gets the entire concept. No slides needed.

03

Every chop, exercised.

Auth, realtime chat, AI matching, payments, geolocation, push, image handling, App Store distribution. A portfolio piece most senior engineers don't have.

Before · AfterThe shift

You, today.
You, in 3–4 weeks.

You, today

Shipped a web artifact or two. Can read Swift. Never touched the App Store.

  • You've built tools with Claude Code, but nothing native
  • You know Supabase is good but haven't wired it to a real app
  • Payments and auth feel like a month of work you don't have
  • You can describe a marketplace — you haven't shipped one

You, in 3–4 weeks

A working iPhone app on TestFlight. Real providers. Real bookings. 10% take-rate.

  • Native iOS in Swift + SwiftUI with gestures, haptics, push
  • Supabase auth + realtime + storage running against real data
  • Stripe Connect splitting money 90/10 on every booking
  • Five real local providers. One real external test user.
Pick by Lesson 1One vertical. One city.

The app structure is the same
for every student. Your vertical isn't.

Don't try to be the universal services app. Pick one service in one metro and own it. The vertical you pick determines the providers you'll seed, the screenshots you'll show, and the Demo Day pitch. Your worked example below is wedding photographers in a major metro — $1.5K–$5K per booking, high-emotion, portfolio-first, a perfect fit for a swipe-card stack.

Dog walkers / sittersRepeat revenue
Wedding photographersHigh-ticket · featured
House cleanersRecurring
Handymen / small contractorsTaskRabbit gap
Personal trainersLocation-flex
TutorsAffluent parents pay

Don't pick: lawyers, doctors, financial advisors (regulated, slow). Don't pick: plumbers, electricians (emergency-driven, bad fit for swipe). Don't pick: anything < $20 avg transaction.

Must ship · Non-negotiableMVP scope

Eight features. If it's not here, it's a stretch goal.

01

Sign up & log in

Email + password via Supabase Auth. Seeker or Provider picker at first signup.

02

Provider profile

Photo upload, bio, services (max 3), price range, zip + radius.

03

Swipe deck

Stack of provider cards. Right to like, left to skip. Haptics, checkmark, X.

04

Match flow

Seeker + provider area overlap → match row. Celebratory modal.

05

Realtime chat

Supabase Realtime channel per match. Text only for MVP.

06

Booking flow

Date + service + price proposal. Provider accepts or declines.

07

Payment split

Stripe Connect. Seeker pays in-app. 90% provider, 10% platform.

08

Reviews & ratings

Post-booking 1–5 stars + text. Visible on provider's card.

Acceptance test — a real friend, on a real iPhone, completes the full flow from signup to review without your help.

Tech StackEight tools, no more

Boring tools. Shipped projects.

Language / UI
Swift · SwiftUI
Native iOS. Declarative UI — Claude Code writes it cleanly and Xcode previews update live.
IDE
Cursor + Xcode
Cursor (or Claude Code in terminal) for writing Swift. Xcode for build / run / preview / sign.
Backend
Supabase
Postgres + auth + storage + realtime in one box. Free tier is enough for the cohort. Swift SDK that just works.
AI
Claude API
Profile parsing, smart matching, message-draft suggestions. Sonnet for cost, Opus for matching quality.
Payments
Stripe Connect Express
Marketplace splits — provider gets 90%, platform gets 10%. Stripe handles KYC end-to-end.
Geo
CoreLocation · MapKit
Native, free, accurate. No Mapbox bill.
Push
APNs via Supabase Functions
Match notifications, message alerts, booking confirms.
Distribution
TestFlight
Get the app on real iPhones without App Store review. Required for Demo Day.
What you do not need
React Native · Flutter · Firebase · AWS · Docker · Kubernetes · GraphQL · Redux · MongoDB
Anyone who tells you those are “more flexible” is selling you complexity. Ignore them.
Cost to shipTotal cash out

One hundred and ten dollars.

$110before Demo Day

A dev shop will quote you $25,000 for the same scope. That delta is the thesis.

Apple Developer ProgramRequired for TestFlight + push
$99 / yr
Anthropic API creditWeek 2 — matching + parsing
~$10
Supabase (free tier)Until you exceed 500 MB DB
$0
StripeNo base — 2.9% + 30¢ per txn
$0 base
Mac + iPhoneAssumed — you already own these
$0
Build path12 lessons · 3–4 weeks

12 lessons. Daily momentum. You ship on day 21.

W1.
Foundation

Empty but wired. App on your phone, Supabase project, auth end-to-end.

Lesson 01 · 30 min

Vision Day

One-pager: vertical, city, why this vertical, three real local providers you'll invite.

Loom + worksheet
Lesson 02 · 45 min

Xcode + Skeleton

Empty SwiftUI app with TabView: Discover, Matches, Messages, Profile. MVVM scaffold.

Screencast
Lesson 03 · 60 min

Supabase Backend

Schema deployed. Swift SDK integrated. Signup writes a row you can see in the dashboard.

Screencast
Lesson 04 · 45 min

Auth Flow

Sign up / log in / log out. Seeker-or-Provider picker. Session persists across launches.

Screencast
W2.
The Core Mechanic

The swipe deck. The show-off week. End of week, the app looks like the product.

Lesson 05 · 60 min

Provider Profiles

Photo upload to Supabase Storage. Name, bio, services, price, zip, radius.

Screencast
Lesson 06 · Show-off · 60 min

The Swipe Deck UI

Tinder-style stack. SwiftUI gestures only — no libs. Haptics, rotation, opacity, checkmark-X overlays.

Screencast
Lesson 07 · 45 min

Real Data on Cards

Cards load from Supabase, filtered by vertical and seeker's zip + radius. Swipes persist.

Screencast
Lesson 08 · 45 min

Match Logic

Area overlap → match row. Celebratory match-screen modal. Matches tab lists them.

Screencast
W3.
The Marketplace

Toy becomes marketplace. Chat, booking, real money, reviews. MVP shipped.

Lesson 09 · 60 min

Realtime Chat

Supabase Realtime channel per match. Text messages, instant both sides.

Screencast
Lesson 10 · 45 min

Booking Flow

In-chat date + service picker. Provider gets accept/decline card.

Screencast
Lesson 11 · Hardest · 75 min

Stripe Connect

Express onboarding, KYC, payment sheet. 90/10 split. Budget 2× time. Test mode only.

Screencast
Lesson 12 · 30 min

Reviews & Ratings

Post-booking 1–5 stars + text. Rating average updates on provider's card.

Screencast
W4.
Polish & Ship

Optional sprint. Where the ambitious students separate themselves.

Bonus A · 45 min

AI-Powered Matching

Claude embeds provider bios and ranks the deck by semantic match to the seeker's stated need.

Screencast
Bonus B · 45 min

Push Notifications

APNs cert generated. Push fires on match + message + booking status change.

Screencast
Bonus C · 30 min

TestFlight Distribution

Archive, sign, upload to App Store Connect. Distribute to 5 real testers.

Screencast
Demo Day

You walk on stage.

Live build, 30-second pitch, 5 seeded providers, 1 external tester, 2-minute flow. See below.

Live cohort
After the MVPNot before

Stretch goals for the show-offs.

Trust

Verified provider badge

Stripe Identity check + ID upload to Supabase Storage.

Scheduling

In-app calendar

Provider sets availability — seeker only sees open slots.

Chat

Image messages

Provider sends a photo of the finished work in-thread.

Profile

Portfolio gallery

3–6 swipeable shots. Critical for wedding photographers.

Platform

Multi-vertical mode

Drop-down switches between dog walkers, cleaners, trainers.

Intelligence

Semantic deck ranking

Embed bios and rank by “big dogs, reactive okay, outdoor natural light.”

Demo Day

You walk on stage with five things.

i.
A TestFlight build on a real iPhone.

Not simulator. You hand someone a phone and they use the app.

ii.
The 30-second pitch, memorized.

Every word earns its place. Practice until it's muscle memory.

iii.
Five real seeded providers.

Real names, real photos, with permission. No lorem ipsum.

iv.
One real external test user.

Someone outside the cohort who actually used the app. Tell their story.

v.
A live flow in under two minutes.

Open → swipe 3 → match → chat → book → payment screen.

Grading rubricSelf-eval + cohort feedback

How your capstone gets scored.

35%
Functional MVP
All 8 MVP items shipped and verified by an external tester.
20%
Vertical + city clarity
The pitch is sharp. You can name your seeded providers by heart.
20%
Demo polish
Pitch lands in 30 seconds. Live demo doesn't crash. You control the room.
15%
AI integration depth
Claude is doing real work — matching, drafting, parsing. Not decoration.
10%
Code + git hygiene
Repo is public. README is real. Commits aren't “WIP.”
Common pitfallsRead before you waste a week

Six ways this goes sideways.

i.

Apple Developer signing hell.

Paste the full Xcode error into Claude. Don't try to debug in the Apple portal — you'll lose the will to live.

ii.

Stripe Connect onboarding loops.

Use test mode end-to-end. Fresh test account per iteration. Symptom is payouts that never arrive.

iii.

SwiftUI preview crashes.

Restart Xcode (fixes 80%). Then check @StateObject vs @ObservedObject.

iv.

Launching on Android too.

Don't. iOS only. Fork to Android after Demo Day if you have customers asking.

v.

11 features instead of 8.

The MVP list is sacred. Stretch goals live in Week 4. Never in Week 2.

vi.

Seeding fake providers.

If you can't recruit five real locals for a free launch spot, you don't have a business — you have a class project.

Module 4 · Capstone · AI Builders Club

Swipe right
to begin.

12 lessons. 3–4 weeks. ~$110 out of pocket. A working iOS app on TestFlight with real providers, real payments, and a story that writes itself.

Enroll in AI Builders Club

Pre-reqs: Modules 1–3 complete · Cohort Slack channel: #cap-serviceswipe