The client arrived with a clear ambition: build an online marketplace that connects customers with verified local service providers, from hair stylists and photographers to cleaners, plumbers and private tutors. The goal was to simplify discovery and booking so that the full flow, from request to confirmed reservation, takes minutes rather than afternoons.
The brief: why booking a service shouldn't take all afternoon
The client started from an observation we have seen elsewhere: booking a routine local service still means a ping-pong of Messenger threads, an evening phone call and thirty minutes hunting on Google Maps. The target customer has a kid in the car and wants the booking done in three minutes. The target provider wants payments and a calendar without spreadsheets.
Our first decision after the two-week diagnostic was small but decisive: we were not building another generic booking system. We were building a platform where every flow is tuned to stay under a minute, from first click to confirmed booking.
Discovery (weeks 0–2)
- Process maps for both sides: customer and provider.
- Measurement framework: what counts as a successful booking, and in what time window we measure it.
- Risk map: KYC for providers, refunds, no-shows, GDPR for profiles and reviews.
- Stack: TypeScript + Next.js (web), React Native (mobile), Postgres + Prisma, Stripe for payments, edge functions for real-time availability.
Build: MVP in eight weeks, multi-tenant by month six
We built in two-week sprints with demonstrable software at the end of each. Sprint one delivered search by category and location. Sprint two: provider profiles with portfolios and reviews. Sprint three: calendar and booking flow with real-time availability. Sprint four: payments via Stripe, refunds included. Until that point all providers lived in one tenant. We only introduced multi-tenant isolation after the first hundred real bookings had validated the model.
The most important product decision was not the stack or the database. It was building the refund flow before we took the first paid booking. Marketplace trust is hard to earn and very easy to lose.
What we learned
- Provider onboarding must fit under five minutes. Otherwise they leave, even if your platform is technically better.
- Real-time availability beats every other UX trick. If a slot shown as free is not actually free, the marketplace loses trust once and for all.
- The mobile app does not need to ship on day one. Web first, app on day 90, once we know what people actually do differently on mobile.
- Reviews belong inside the booking flow. No more 'please review us next week' emails. The feedback request fires 30 minutes after the service ends, in the app.
The platform is live in production. The client is adding categories and providers at a pace that makes business sense, not as fast as possible. The architecture lets a new service category ship in hours rather than weeks. That was the main investment of the first six months.