Yarnin Peled YP Monogram Logo
Yarnin Peledponyapp.net
Back to All ApplicationsSYSTEM SPECIFICATION — V1

Book a Show

Venue Date-Booking, Pricing Engine & Contracting System

A single-venue date-booking, pricing engine, and contracting system managing the full path from availability lookup to signed contract & read-only partner API.

Data Models16PostgreSQL schema with 9 enums
Walkthrough Steps7Publish to contracted API
Signature Types2Commitment form & final contract
Partner APIv1Read-only bearer key API (120 req/min)

What Problem Book a Show Solves

A performance venue sells the same scarce thing over and over: days. A busy hall juggles promoters asking for overlapping weeks, each wanting a hold while they confirm an artist, each expecting a price, and each eventually needing a contract. Run on email and a shared spreadsheet, this goes wrong in predictable ways — two producers promised the same week, a hold nobody released, a contract that does not match the dates actually booked, or an invoice priced at last year's rates.

Book a Show is the single system of record for that entire process: one calendar everybody reads, one place a request is made, one place it is priced, and one transparent path from request to signed contract with zero unrecorded manual steps.

How It Works, End to End (7 Steps)

The 7-stage progression from availability lookup to signed contract & partner API sync:

Step 01

Venue Publishes Availability

Open, Blocked, or Cancellable Days

Staff mark calendar days as OPEN, BLOCKED, or OPEN_CANCELLABLE at short notice. Producers view a live, transparent calendar of what is free.

Step 02

Producer Requests Dates

Contiguous Run & Commitment Form

Producers sign in with their company registration ID, select a contiguous date range, specify artist and show type, and sign a commitment form.

Step 03

Revenue-Ranked Overlap Engine

Maximized Revenue Combinations

When multiple producers request overlapping dates, the system enumerates non-overlapping offer combinations ranked by total revenue, showing days used vs wasted.

Step 04

Date Reservation & Holds

Days Marked PENDING

When a commitment form goes out, days automatically flip to PENDING — preventing double-booking while giving the producer a deadline to sign.

Step 05

Staff Approval & Assignment

Days Set ASSIGNED

Venue staff confirm the selected combination, assigning the days to the winning producer and releasing unselected requests with automated notifications.

Step 06

Final Agreement Signing

Dual-Signature PDF Engine

The final contract is generated with frozen rate snapshot figures. The producer reads and signs it directly in the browser, producing a tamper-proof PDF.

Step 07

Partner API Synchronization

Read-Only External Integration

Once contracted, the show becomes visible to downstream systems (finance, ERP, document archives) over a secure, rate-limited Bearer API.

User Roles & System Participants

Select a role to inspect its permissions and capabilities:

Counterparty

Producers

Promoters and production companies hiring the venue.

Role Capabilities:

Sign in with unique company registration ID
Request contiguous available date ranges
Sign commitment forms & final agreements in-browser
Track request status & download signed contracts

Revenue-Ranked Overlap Engine

When multiple producers request overlapping date ranges, the venue does not guess. Book a Show enumerates all valid non-overlapping combinations and ranks them by total venue revenue, highlighting used vs wasted open days.

Freeze-on-Quote Pricing Integrity

A booking's rates are snapshotted onto the bid when quoted. Updating the venue's standard rate schedule next month will never silently reprice an existing booking or contract executed last month.

Dual-Signature PDF Engine

Separates the Commitment Form (request phase) from the Final Agreement (post-approval contract). Signed PDFs are rasterised in the browser so the captured signature is 100% identical to what the signer viewed.

Build-Time Bidi (RTL & LTR) Locale

Fully bidirectional interface selected at build time via `NEXT_PUBLIC_LOCALE`. Unused locale dictionaries are dropped from bundles, and missing keys trigger compile errors rather than blank labels in production.

Direct Engagement

Contact & Professional Channels

Reach out directly via our protected contact form with Google reCAPTCHA bot filtering, connect on LinkedIn, or schedule a meeting via Calendly.

Open Contact & Inquiry Page