Adult hospitality venues had no purpose-built management platform. Booking, rostering, and staff communication were handled via generic tools not designed for the industry.
full-stack
Velvet Platform
White-label venue management SaaS for adult hospitality businesses
The Problem
The Solution
Astro 6 SSR + Supabase + Stripe + Cloudflare Workers. Practitioner roster with real-time availability, booking system, Telegram staff bot for shift management, and a white-label frontend deployable per venue.
How It Works
One system for adult venues that still run on paper, SMS, and a website from 2010.
Licensed adult venues in Australia are stuck on a stack that hasn't moved in a decade. Paper diaries. Group texts between managers and staff. Brochure sites from around 2010. That means double-bookings, no live availability for clients, no read on the numbers, and no safe way to manage a roster or flag a problem client. The big booking platforms won't touch this industry, so nothing off the shelf fits how it actually works. I built Velvet to replace the whole lot, and I sell it to venues as a product, under Projekt AI.
Each venue gets one platform in three pieces. A live public website, dark and mobile-first, that shows who's working right now and lets a client book straight off it. A Telegram bot that runs the front desk. And a serverless backend that ties the site, the bot, and the database together in real time.
The bot is the part I'm proudest of. There's no admin dashboard in version one. One Telegram dispatcher exposes 28 commands, and they cover the whole venue. Staff clock in and out, set who's free, take walk-ins and quick-bookings, confirm and cancel, record deposits, pull revenue and stats, block and unblock clients, and post listings and reviews. No POS hardware. No app to install. No training.
The commercial idea is repeatability. One codebase runs every venue. A new client is a new content dataset, a new database, and a few feature flags, not a fork. So the cost of onboarding the next venue is close to nothing.
Under the hood it's Astro 6, server-side rendered, on the Cloudflare adapter, with React 19 for the interactive parts. It runs on Cloudflare Pages with 15 serverless Pages Functions. Data sits in Supabase Postgres across 12 migrations, with row-level security. Content is managed in Sanity through 5 schemas: practitioner, service, room, promotion, and site settings. The staff side is the Telegram Bot API.
It also has to respect rules most software ignores. Public pages carry no explicit language, to stay inside the NSW Summary Offences Act. Billing descriptors are discreet. Client emails and phones are hashed, display names are pseudonymous, and retention is kept low. Practitioners are treated as independent contractors throughout the copy and the UI.
Here's the honest status. All three sites are live: the Velvet marketing site that sells the platform, and two demo venues on the same codebase, Maison Élyse and Sakura Wellness. The bot is deployed and processing live updates against the production database. It's pre-revenue. The two venue sites are sales demos, not paying tenants, and no venue is onboarded yet. The next step is signing the first foundation venues. Payments are mid-move from online card processing to a record-don't-process model, where the venue takes the deposit its own way and the manager records it.
What it shows is the whole arc: take a neglected, compliance-heavy corner that mainstream software avoids, and ship a complete, repeatable, production SaaS end to end. Public site, serverless backend, a real database with row-level security, a CMS, and a chat-based point-of-sale.
The Velvet marketing site, the product I sell to venue owners.
A venue's live public site, showing who's available right now.
The real-time roster: who's free, who's busy, when a shift ends.
Online booking, through to the deposit that holds the slot.
A practitioner's own profile: photos, services, and prices.
The front desk running out of Telegram, 28 commands deep.
A second venue on the same codebase, different brand and content.
The Results
Tech Stack