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:| Offer | Fulfillment | |
|---|---|---|
| What is it? | What the guest pays for | What the guest receives |
| When is it chosen? | In Choose Experience | Determined by the offer |
| Who cares about it? | Guest (price, description) | Operations (kitchen, bar, MC) |
| Example | ”The Solo Feast” — 610,000 | Sizzling Beef Skillet + Onion Rings + Cocktail |
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:Fulfillment Types
| Type | What it is | Driven by |
|---|---|---|
MENU_ITEM | Food items — mains, snacks, boards | Kitchen prep count |
DRINK | Cocktails, wine, beer, soft drinks | Bar stock |
EXPERIENCE | Souvenirs, photos, special moments | Staff action on night |
SEAT | Reserved seating — table and seat assignment | MC/host on arrival |
DINNER | Fixed dinner menu | Chef 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.| Scope | Example | Triggered by |
|---|---|---|
| Per guest | Signature Cocktail | 1 per guest in the party |
| Per party | Sizzling Beef Skillet | 1 per reservation (split at table) |
| Per guest | Souvenir Polaroid | 1 per guest who ordered Experience bundle |
isPerGuest flag on the fulfillment determines whether the quantity multiplies by guestCount or stays at 1.
Key Fields
| Field | Type | Notes |
|---|---|---|
id | ULID | Machine identity |
reference | string | Internal identifier |
slug | string | Kebab-case, e.g. sizzling-beef-skillet |
name | string | Display name |
type | enum | MENU_ITEM, DRINK, EXPERIENCE, SEAT, DINNER |
category | string | e.g. “Main”, “Board”, “Drink” |
isPerGuest | boolean | Quantity × guestCount if true |
prepInstructions | string | Kitchen notes |
menuItemId | ULID | Links to menu item catalog |
showTemplateIds | ULID[] | Which shows include this. Empty = all. |
The Offer → Fulfillment Chain
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
