Fulfillment

canonical term: fulfillment | plural: fulfillments This document explains what Fulfillment means at House of Legends — what the guest receives, how fulfillment drives operational prep, and why it is a separate concept from Offer.

What Is a Fulfillment?

A Fulfillment is the answer to: “what does the guest actually get?” It is an operational unit that represents a item, experience, or service the guest receives. Fulfillments are what the kitchen prepares, what the bar stocks, what the MC coordinates, and what the guest takes home. Examples:
  • A Sizzling Beef Skillet from the kitchen
  • A Signature Cocktail from the bar
  • A Souvenir Polaroid photo taken by the photographer
  • A reserved seat at Table 4
  • The fixed dinner menu for a Dinner Show guest

Offer vs. Fulfillment — The Core Distinction

This is the most important distinction in the product model:
OfferFulfillment
What is it?What the guest pays forWhat the guest receives
When is it chosen?In Choose ExperienceDetermined by the offer
Who cares about it?Guest (price, description)Operations (kitchen, bar, MC)
Example”The Solo Feast” — 610,000Sizzling Beef Skillet + Onion Rings + Cocktail
An offer is composed of one or more fulfillments. The guest buys the offer; they receive the fulfillments.
"The Solo Feast" (offer, 610,000)
  → Sizzling Beef Skillet    (fulfillment, kitchen prep)
  → Onion Rings              (fulfillment, kitchen prep)
  → Signature Cocktail       (fulfillment, bar stock)
"The Solo Toast" (offer, 200,000)
  → Signature Cocktail       (fulfillment, bar stock)

Why the Distinction Matters for Operations

The kitchen does not think in offers. The chef thinks: “How many Sizzling Beef Skillets for tonight’s Jazz Night?” This is the prep count — the total demand for each fulfillment item, derived by iterating all reservations for an event:
showEvent: Jazz Night — Wed 3 Jun 2026
  └── reservation: Table for 2 (Dinner Show)
        → offer: The Duo Feast
              → fulfillment: Mixed Board (×2, per guest)
              → fulfillment: Signature Cocktail (×2, per guest)
  └── reservation: Solo (Ticket Only + Bundle)
        → offer: The Solo Feast
              → fulfillment: Sizzling Beef Skillet (×1, per party)
              → fulfillment: Onion Rings (×1, per party)
              → fulfillment: Signature Cocktail (×1, per guest)
  └── reservation: Table for 4 (Dinner Show)
        → offer: The Legend Table
              → fulfillment: Mixed Board (×1, per party)
              → fulfillment: Wine bottle (×1, per party)

Total for tonight:
  - Sizzling Beef Skillet: 1
  - Onion Rings: 1
  - Mixed Board: 3
  - Wine bottle: 1
  - Signature Cocktail: 7
This is how the system knows: 1 Sizzling Beef Skillet, 3 Mixed Boards, 1 Wine Bottle, 7 Cocktails for the kitchen and bar.

Fulfillment Types

TypeWhat it isDriven by
MENU_ITEMFood items — mains, snacks, boardsKitchen prep count
DRINKCocktails, wine, beer, soft drinksBar stock
EXPERIENCESouvenirs, photos, special momentsStaff action on night
SEATReserved seating — table and seat assignmentMC/host on arrival
DINNERFixed dinner menuChef on night (for Dinner Show path)

Fulfillment and Per-Guest vs. Per-Party

Some fulfillments are per guest — every guest in the party gets one. Others are per party — one per table.
ScopeExampleTriggered by
Per guestSignature Cocktail1 per guest in the party
Per partySizzling Beef Skillet1 per reservation (split at table)
Per guestSouvenir Polaroid1 per guest who ordered Experience bundle
The isPerGuest flag on the fulfillment determines whether the quantity multiplies by guestCount or stays at 1.

Key Fields

id: "01ARZ3NDEKTSV4RRFFQ69G5FAV"
reference: "FLF_MENU_0001"
slug: "sizzling-beef-skillet"
name: "Sizzling Beef Skillet"
type: MENU_ITEM
category: "Main"
isPerGuest: false # per party, not per guest
prepInstructions: "Serve sizzling on cast iron, warn guests about hot plate"
menuItemId: "01ARZ3NDEKTSV4RRFFQ69G5FAV" # links to menu catalog
showTemplateIds: [] # empty = available for all shows
FieldTypeNotes
idULIDMachine identity
referencestringInternal identifier
slugstringKebab-case, e.g. sizzling-beef-skillet
namestringDisplay name
typeenumMENU_ITEM, DRINK, EXPERIENCE, SEAT, DINNER
categorystringe.g. “Main”, “Board”, “Drink”
isPerGuestbooleanQuantity × guestCount if true
prepInstructionsstringKitchen notes
menuItemIdULIDLinks to menu item catalog
showTemplateIdsULID[]Which shows include this. Empty = all.

The Offer → Fulfillment Chain

offer
  └── offerFulfillment (join — defines composition)
        └── fulfillment (what guest receives)

Example — "The Celebration Table" (Table of 4, Experience bundle):

offer:
  name: "The Celebration Table"
  type: TICKETS_ONLY_BUNDLE
  price: 1,710,000

offerFulfillment:
  - fulfillment: Mixed Board, quantity: 1, isPerGuest: false
  - fulfillment: George XV Brut, quantity: 1, isPerGuest: false
  - fulfillment: Souvenir Polaroid, quantity: 4, isPerGuest: true

See Also

  • Offer — how offers are composed of fulfillments
  • Show — how fulfillments map to show events
  • Reservation — how guest selections drive fulfillment demand
  • Fulfillment Items — full catalogue of fulfillments with costs and prices
  • Choose Experience — where guests select offers that trigger fulfillments
  • Add-ons — where individual add-on fulfillments are selected