Product Architecture

How Gelatin works under the hood

A two-sided marketplace built around three pillars: discovery, booking, and payouts. Below is the high-level system, the booking flow, and the rules that drive matches.

System overview

Web Client
Responsive React UI for DJs, venues, and admins.
API Layer
REST + Webhooks. Auth, gigs, bookings, messaging.
Database
Postgres with row-level security per role.
Matching Engine
Scores DJs against open gigs in real-time.
Payments
Escrow at booking, release on completion.
Notifications
Email + push on every booking state change.

Booking flow

Step 1
Venue posts gig
Date, budget, genres
Step 2
Engine matches
Top DJs ranked
Step 3
DJ proposes
Quote + intro
Step 4
Venue confirms
Funds escrowed
Step 5
Show & payout
Review released
Matching rules engine
Genre match
weight 0.35

DJ genres ∩ gig genres / total gig genres

Geo proximity
weight 0.25

Same city = 1.0, same country = 0.6, else 0.2

Budget fit
weight 0.2

Gig budget within ±20% of DJ rate × hours

Availability
weight 0.1

DJ has no overlapping confirmed booking

Reputation
weight 0.1

Average rating, weighted by completed gigs

Data model
User ──┬── DJ Profile (genres, rate, rating)
       ├── Venue Profile (capacity, address)
       └── Admin

Gig ───── posted by Venue
   │       (date, budget, genres, city, status)
   ↓
Booking ── DJ ↔ Venue ↔ Gig
   │       (status, amount, contract)
   ↓
Payout ─── escrow → DJ wallet

Notification ── triggered on every state change

State machine — Gig lifecycle

Open
Proposed
Confirmed
In Progress
Completed
Reviewed

Cancellations from any state route to the disputes queue and notify both sides. Cancellation fees apply within 48h of the gig date.