Gelatin
Booking infrastructure for DJs
Founder · product, design, engineering, brand, go-to-market
May – July 2026
Booking a DJ runs on DMs and screenshots. Venues can’t tell who actually draws a crowd; DJs can’t prove they do. The whole product hangs on one unglamorous mechanic: somebody neutral counts the room.
For venues
You book on a mix link and a recommendation. If the night is dead, you find out on the night.
For DJs
Your draw is your most valuable asset and it’s unverifiable — so every negotiation restarts at zero.
The head count gate
Two hours after a gig, a one-tap email asks the venue how many people showed. That tap releases the DJ’s money from escrow and writes a data point into a rolling 90-day average. Payment is the incentive to answer; the answer is the asset.
A profile can say "180–340 heads, last 12 events" instead of a genre tag and a vibe.
One loop,
four ways in
Every role — venue, DJ, creative, organizer — runs the same five steps. A marketplace that needs a different mental model per audience is four products wearing one brand.
Browse by draw
Ranked by venue-confirmed attendance, not bio copy.
Request in minutes
Date, fee, send. No cold DMs.
Add a crew
Photo, video, hosts — same booking.
Pay once
Escrow holds until the night happens.
Confirm the draw
The venue confirms; the metric updates.
The product, moving
Four surfaces, in the order a night goes through them.
Not all evidence is equal
The draw number is graded by where it came from, and the grade is published next to it.
Showing the confidence is what stops it becoming another vanity metric.
Venue confirmed
The room confirms the count. This is what ranks you.
Ticketing data
From RSVPs, QR scans, and integrations.
Self reported
Counted, but labelled and weighted down.
How a night becomes data
Money and evidence move together. The state machine lives in database triggers, not app code.
Card authorized
—
Captured into escrow
—
Held
Ticket scans, RSVPs
Released to DJ
One tap, graded by source
DJ keeps 100%
Rolling 90-day draw updates
Payout is the trigger — so the data can’t be skipped without someone giving up money.
What the write triggers
One write, three destinations. Nothing waits on the app to remember.Draw record
Rolling 90-day average, weighted by evidence tier.
Search index
Re-synced off the webhook; banned and disputed accounts suppressed.
Lifecycle comms
Email and SMS fire from the data change, not from app code.
Running it
as a sprint
Ship the MVP to a public Atlanta launch in one compressed sprint
Validate that venues will pay for an urgent-backup fill
Build DJ supply across five genre clusters

Where the work went
Counted honestly — a marketplace is mostly backend and money.
The booking state machine
Enforced by database triggers, so a booking can’t reach paid by any path that skips the head count.
Done means demoable
Ten milestonesA milestone closes the moment one specific thing can be demoed. Progress is which demos work — not how many tickets are closed.
Foundation
Demo — the repo deploys green to staging
Identity
Demo — a DJ and a venue sign up and land in different dashboards
Cut · MFA deferred.
DJ profiles
Demo — a public DJ profile is indexable and shareable
Cut · Mix upload and availability calendar deferred.
Venue profiles
Demo — a venue has a payment method on file before it can book
Search & matching
Demo — a search returns ranked DJs and hides banned accounts
Cut · Three-component scoring instead of seven. The full weighted engine shipped later and sits behind a flag.
Booking lifecycle
Demo — a booking walks Draft → Paid without app code touching state
Cut · Accept/decline only. I handled cancellations by hand for 30 days.
Payments & payouts
Demo — money moves: authorize, escrow, payout
Cut · White-glove KYC for the first 50 DJs instead of self-serve help.
Trust signals
Demo — a venue taps once and the draw number changes
Cut · Reviews and disputes deferred.
Comms & lifecycle
Demo — a real lifecycle email lands in a real inbox
Cut · 15 templates at launch, out of 70+ written.
Launch operations
Demo — launch night happens
Cut · All seven ops agents parked. I ran ops manually.
What got cut
About thirty features went to a parking lot. The rule: anything I could do by hand for a month didn’t get built in that month. Cancellations, disputes, KYC support and ops were all me — while the code went to what only code can do.
Three buckets
Product plan v0.3 · 28 July 2026If I can do it by hand this month, it doesn’t get built this month.
Shipped
- —Ticketing — event pages, tiered checkout with an oversell guard, buyers paying face value.
- —QR tickets that store only a hash, so a wallet can never show a code the door rejects.
- —Run the door from a phone — check-in links, each code admitting once.
- —A cancellation engine with real terms instead of my judgement call each time.
- —SMS urgent-fill fan-out where the first yes wins the slot.
Built, parked
- —The weighted match-scoring engine.
- —Inverse bookings — a requester posts, DJs apply.
In flight
- —DJ pitches with a crew. Schema merged and tested; the UI isn’t built, so a DJ still can’t bring their photographer.
The parked column matters most. Two finished systems sit behind a flag because the marketplace didn’t need them yet.
The agent fleet
Eleven agents on a daily cron. One Chief of Staff delegates in parallel, then synthesizes a single briefing — TL;DR, what needs a decision, suggested focus.
Chief of Staff
Delegates to every agent in parallel, then writes one briefing.
Internal cadence
read-onlyRead-only. These report; they never act.
- EngineeringAgent 8
What shipped, what’s in flight, what’s blocked, what’s broken.
- Product & GrowthAgent 9
Metrics that moved, and the single most valuable thing to do next.
- QAAgent 10
Launch-blockers, regressed errors, auth-flow health.
- SalesAgent 11
Two-sided pipeline. Drafts pitches — draft, don’t send.
Product agents
drafts + stagesThese act — but they draft and stage. A human ships it.
- DJ RecruiterAgent 1 · Supply
Builds the roster.
- Venue OutreachAgent 2 · Demand
Lands the rooms that pay the fee.
- Booking ConciergeAgent 3 · Bookings
Request → confirmed → paid-out.
- Lifecycle CommsAgent 4 · Retention
Activation and retention.
- Content & SocialAgent 5 · Brand
Content calendar and demand-gen.
- Gelatin SessionsAgent 6 · Studio
Produces the Sessions channel end to end.
- Support Tier 1Agent 6 · Support
First-line triage and trust after a booking.
Synthesize
One briefing. No padding, no invented metrics.
A dated row in the Daily Briefing database.
Recipient hard-locked to my own address.
Why it’s safe to let it run
They never edit code, deploy, or change settings.
A human ships it. Nothing goes out unreviewed.
Never pulled from a ticket, email, or CRM record.
Embedded commands get quoted, never executed.
If a source is down the agent says so. It never fabricates activity.
Five of eleven are actually live. The rest are mapped, and mapped is not running.
Zero-CAC by design
Bookings win the market. Packages make money on it.
Bootstrapped, so growth is engineered rather than bought. No paid search, no influencer fees, no out-of-home.
Supply-led
The draw profile
DJs share their verified-draw profile to win gigs. The DJ markets the platform for us.
Crowd-led
The post-set review
While a set is live, the DJ’s profile carries a review link scoped to that booking — the ask lands while the room is still full.
Content-led
The package reel
Delivered content, co-branded, tied to a measured night.
Event-led
The ticket page
Anyone builds an event signed out and only makes an account to publish. Costs nothing to produce, returns attendance data.
Every feature should either create a shareable object or trigger a share.
Channels
- +Nightlife-native social — clips cut from package deliverables
- +DJ communities — collectives, crews, music schools
- +In-person: concierge onboarding is the marketing
- +Per-city verified-draw leaderboards as social objects
- +Lifecycle email + SMS, and urgent-fill fan-out
- +Local press and culture blogs
- −Paid search and social at scale
- −Influencer fees
- −Out-of-home
What gets watched
- North star
- Bookings / week
- Acquisition
- Signups by source · CAC ≈ $0
- Loop health
- % DJs sharing draw profile
- Conversion
- Search → booking rate
- Money
- Package attach rate + tier mix
- Retention
- Repeat booking + repeat package
Voice and
the room
A marketplace with no supply and no demand is a website. Go-to-market ran alongside the build, with its own Linear project.
“Get booked, keep 100%.”
Five words that state the DJ-side promise and double as the pricing model.
Gelatin Sessions
A weekly filmed DJ session — 24 episodes, one living room, location rotating. Two cuts per night: the set, and an interview with the Atlanta business whose room it is.
It builds a content library before there’s booking volume to talk about. Every episode gives a DJ draw footage, the platform a portfolio piece, and a local business a reason to be on camera.
Referral
Every Session DJ, host and guest gets a handle — which is also their profile slug.
Affiliate
A separate code path for promoters who drive audience rather than perform.
RSVP funnel
"Request an invite" creates an account on the way to the event page.



Social ads
One cut per audience, so the ad answers "is this for me?" before it explains anything.

No fee talk and no head-count framing anywhere in Sessions creative. The mechanic that makes the business work is the least interesting thing about the night.
The story is the DJ’s sound and the room. The metrics live in the product, not the marketing.
Lifecycle comms

Transactional email on a dedicated sending subdomain, triggered off database webhooks rather than app code — so a change to one funnel stage is a change to one series.
SMS is explicit opt-in only, for TCPA.
A recipient-override variable must be confirmed unset in production before any real send — a tripwire against emailing real users from a staging config.
What it
taught me
What I got right
Attaching data collection to the payout. Asking venues to rate a DJ out of five would have produced nothing. Gating the money on one tap produced a number worth having.
What I got wrong
I scoped 70 email templates before I had a user. Fifteen shipped; the rest were an organized way of avoiding the harder problem, which was supply.
What I’d do differently
Build the venue side first. DJ profiles hit 100% while venue profiles sat at 29% — because DJ profiles were the more enjoyable problem. The marketplace doesn’t turn on without the side holding the budget.