topfoc.usStart a buildCOSMABL.
An Australian marketplace connecting clients with medical aesthetic practitioners for in-home treatments: matching, booking, online and in-person payments, and the compliance rules of a regulated industry built into the product.
- Marketplace
- Stripe
- Supabase
- PostGIS

- Client
- COSMABL.
- Role
- Architecture, full-stack build
- Year
- 2025
- Stack
- React · Supabase · Stripe · Cal.com
The challenge
Marketplaces are hard in the ordinary ways: two sides, a cold start, trust. This one is regulated on top of that. Australian rules on advertising health services constrain what the site is even allowed to say, which makes compliance a product constraint rather than a legal review at the end.
The treatment happens in someone's living room, which breaks the usual payment assumption. Cards get tapped at the appointment. Practitioners have to be findable by where they actually are, not by a dropdown of suburbs. And nobody wants to rebuild a scheduling engine.
The approach
Payments run both paths on Stripe: online checkout for prepaid bookings, and Stripe Terminal for the card reader the practitioner carries. Same ledger, same reconciliation, whichever way the money arrives.
Matching is geospatial, with PostGIS in Postgres and Leaflet on the front, so a practitioner's coverage is an area on a map instead of a list of suburbs. Scheduling runs on a self-hosted Cal.com fork on its own subdomain. Somebody had already solved booking properly, so we forked their solution and integrated it.
Compliance constraints live in the schema and the content model, which bounds what a listing can claim by the product itself and not by whoever last edited the copy. Around the edges there is a prescriptions track, plus a small agentic pipeline that turns brand templates into 9:16 shorts with narration and transcript-synced cuts.
The outcome
Live, with a production auth smoke test running in CI. Clients book, practitioners travel, and the payment works the same whether it happens on the site the week before or on a card reader in the hallway.
What came of it
- 1Online payments and in-person card readers through Stripe and Stripe Terminal
- 2Practitioners matched to clients geospatially, with PostGIS and a map that makes sense
- 3Scheduling on a self-hosted Cal.com fork instead of a booking calendar rebuilt from scratch
- 4AHPRA advertising rules encoded into the schema and the content model

COSMABL.