←Building

Gelatin

Gelatin logo

Booking infrastructure for DJs

Role

Founder · product, design, engineering, brand, go-to-market

When

May – July 2026

Live at
The problem

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 one decision

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.

Product design

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.

01

Browse by draw

Ranked by venue-confirmed attendance, not bio copy.

02

Request in minutes

Date, fee, send. No cold DMs.

03

Add a crew

Photo, video, hosts — same booking.

04

Pay once

Escrow holds until the night happens.

05

Confirm the draw

The venue confirms; the metric updates.

VenuesDJsCreativesOrganizers

The product, moving

Four surfaces, in the order a night goes through them.

SearchFinding talent by verified draw, not by who you already follow.
BookingThe step that used to be a week of DMs.
PackagesPhoto, video or a host on the same checkout.
PayoutEscrow releases once the count is confirmed.
Grading the evidence

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.

Highest trust

Venue confirmed

The room confirms the count. This is what ranks you.

High trust

Ticketing data

From RSVPs, QR scans, and integrations.

Lower trust

Self reported

Counted, but labelled and weighted down.

Data flow

How a night becomes data

Money and evidence move together. The state machine lives in database triggers, not app code.

Request
Money

Card authorized

Evidence

—

Accept
Money

Captured into escrow

Evidence

—

The night
Money

Held

Evidence

Ticket scans, RSVPs

Head count
Money

Released to DJ

Evidence

One tap, graded by source

Settled
Money

DJ keeps 100%

Evidence

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.

Linear — product & project

Running it
as a sprint

O1

Ship the MVP to a public Atlanta launch in one compressed sprint

O2

Validate that venues will pay for an urgent-backup fill

O3

Build DJ supply across five genre clusters

132
issues
108
shipped
10
initiatives
6
week sprint
The Gelatin v1.0 project board in Linear
The v1.0 launch project — 132 issues across 10 initiatives.

Where the work went

Counted honestly — a marketplace is mostly backend and money.

Backend
76
Frontend
56
Payments
28
Booking
24
Infra
23
Operations
20
Comms
13
Profile
12
Auth
9
Trust
7
Search
6
Brand
3
Design
2

The booking state machine

Enforced by database triggers, so a booking can’t reach paid by any path that skips the head count.

Draft
Requested
Accepted
Confirmed
Completed
Head count
Paid

Done means demoable

Ten milestones

A milestone closes the moment one specific thing can be demoed. Progress is which demos work — not how many tickets are closed.

I1

Foundation

100%

Demo — the repo deploys green to staging

—
I2

Identity

100%

Demo — a DJ and a venue sign up and land in different dashboards

Cut · MFA deferred.

I3

DJ profiles

100%

Demo — a public DJ profile is indexable and shareable

Cut · Mix upload and availability calendar deferred.

I4

Venue profiles

29%

Demo — a venue has a payment method on file before it can book

—
I5

Search & matching

100%

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.

I6

Booking lifecycle

100%

Demo — a booking walks Draft → Paid without app code touching state

Cut · Accept/decline only. I handled cancellations by hand for 30 days.

I7

Payments & payouts

100%

Demo — money moves: authorize, escrow, payout

Cut · White-glove KYC for the first 50 DJs instead of self-serve help.

I8

Trust signals

100%

Demo — a venue taps once and the draw number changes

Cut · Reviews and disputes deferred.

I9

Comms & lifecycle

100%

Demo — a real lifecycle email lands in a real inbox

Cut · 15 templates at launch, out of 70+ written.

I10

Launch operations

21%

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.

Next.jsSupabasePostgres + RLSStripe ConnectResendAlgoliaMapboxTwilioVercelPostHogSentry
How I prioritize

Three buckets

Product plan v0.3 · 28 July 2026

If I can do it by hand this month, it doesn’t get built this month.

01Only code can do it

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.
02Finished, not needed yet

Built, parked

  • —The weighted match-scoring engine.
  • —Inverse bookings — a requester posts, DJs apply.
03Half-built, honestly labelled

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.

AI agents

The agent fleet

11
agents
5
live
6
planned
8AM
daily cron

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.

⏱ Scheduled trigger — Fires daily at 8:00 local. Manual run available any time.
Agent 7 · Orchestrator

Chief of Staff

Delegates to every agent in parallel, then writes one briefing.

Internal cadence

read-only

Read-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 + stages

These act — but they draft and stage. A human ships it.

Acquisition→Marketplace→Lifecycle & Brand→Trust & Support
  • 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.

Notion

A dated row in the Daily Briefing database.

Emaillocked

Recipient hard-locked to my own address.

One briefing, every morning

Why it’s safe to let it run

✓Reporting agents are read-only

They never edit code, deploy, or change settings.

✓Acting agents draft and stage

A human ships it. Nothing goes out unreviewed.

✓Email recipient is hard-locked

Never pulled from a ticket, email, or CRM record.

✓Tool output is data, not instructions

Embedded commands get quoted, never executed.

✓Dormant means dormant

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.

Marketing

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.

01

Supply-led

The draw profile

DJs share their verified-draw profile to win gigs. The DJ markets the platform for us.

02

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.

03

Content-led

The package reel

Delivered content, co-branded, tied to a measured night.

04

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.

The design principle

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
Brand & outreach

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.

The line it’s built on

“Get booked, keep 100%.”

Five words that state the DJ-side promise and double as the pricing model.

The content engine

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.

Gelatin manifesto post
Manifesto
Gelatin proven draw post
Proof
Gelatin how it works post
How it works

Social ads

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

DJsBuild a verified track record.
VenuesBook talent that fills rooms.
CreativesRide on real bookings.
OrganizersThrow the night yourself.
Brand cardThe identity, four seconds.
How it worksThe whole loop, explained once.
The Gelatin logo lockup
Space Grotesk, ink and paper, and an electric blue period doing the work.
The copy rules I set

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

A Gelatin lifecycle email
A lifecycle email as it lands.

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.

Looking back

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.

Say hey

LET'S
TALK

Work, an idea, or a city I should go to next. I read everything.

Goes straight to isaidwhaticed@gmail.com.