Bookings arrived everywhere
Peerspace and Giggster by email, website bookings as Stripe payments, regulars by text and email — each in a different place, each re-typed by hand.
[Case 01] Set Hub · Los Angeles
Set Hub Collective runs a 16-set photo and video studio in Downtown Los Angeles, rented through Peerspace, Giggster, its own website and direct requests. We built the system the whole studio now runs on — CRM, booking engine, guest portal and AI access — and we keep running it in production.
[01] Before
The studio grew faster than its tools. Every channel worked on its own, and keeping them in agreement was a manual job that one tired evening could break.
Peerspace and Giggster by email, website bookings as Stripe payments, regulars by text and email — each in a different place, each re-typed by hand.
One Google Calendar per set, plus the whole studio that overlaps every set inside it. Marketplaces, scripts and people all wrote to them — one missed update and two crews arrive for the same room.
Payments landed without the booking behind them; marketplace payouts had to be matched to guests line by line.
Requests, follow-ups and crew tasks were spread across messengers and spreadsheets, with no single view of what is booked, paid and done.
[02] What we built
A custom platform on Next.js, strict TypeScript and PostgreSQL. Each module replaced a manual routine — and none of them depends on a person remembering to do something.
01 Core
Guests, bookings, a request pipeline from first message to deposit, crew tasks with checkpoints and deadlines, and roles for the owner, managers and staff.
02 Intake
Marketplace emails are read by deterministic rules — no AI guessing — and the sender is verified. New bookings, moves, cancellations and payouts land in the schedule by themselves.
03 Payments
Signed Stripe webhooks turn every paid checkout into a confirmed booking with a line-by-line price breakdown. Refunds and failed bank payments raise a task.
04 Sync
The system is the source of truth for every set calendar and the whole-studio calendar. Overlapping bookings are refused inside locked database transactions.
05 Guests
Regulars book and pay without marketplace fees: live availability, add-ons, monthly memberships with included hours, prepaid hour packs, gift cards, messages and receipts.
06 Capture
Managers drop a text, voice note, photo or PDF; templates and rules turn it into a booking, task or expense. AI steps in only where there is no text to read.
07 AI
The team works with the CRM from their AI assistant through OAuth 2.1 + PKCE, with the same roles as the web app. 26 tools — none of them can delete.
08 Team
Guest confirmations and entry instructions from the studio's own mailbox, team digests, web push and deadline reminders — on desktop and iPhone.
[03] How it fits together
Every channel writes into one database. Calendars, guests and the team only ever read from it — so there is exactly one answer to “is this set free?”.
In
PostgreSQL with locked transactions: a booking is either free and written, or refused.
Out
[04] How we work
The owner sends feedback; the next release answers it. Nothing goes live without tests, a review and a way back.
Requests from the owner and the managers become production releases within days, not quarters.
A database snapshot is taken and restored as a test before every deploy, with the previous build ready for rollback.
New email formats and edge cases become automated tests on anonymised samples before the code that handles them.
OWASP review, hash-only secrets, signed webhooks, rate limits and short-lived tokens for every integration.
[05] Outcome
Tell us how bookings reach you today. You talk directly to the architects who built this system.
Start a project [email protected]