What's the difference between an asset and an offering?
Assets are your inventory. Offerings are your menu. Customers never book "Chair 2 from 14:00 to 14:45" — they book "Haircut, 2 pm", and ezerve works out which chair.
Offerings are the menu
An offering has a name, a description, a duration, and a price. That's the whole customer-facing surface: "Haircut — 45 min — $65", "Guided tour — 2 hours — $120". Price is optional; an offering without one simply doesn't collect payment online (useful for pay-at-location or free bookings).
Requirements: what an offering consumes
Behind each offering is a list of asset requirements. Each requirement says how many units it needs and which assets can supply them:
- A specific asset — "Dock party" requires the private dock, full stop.
- Any one of a pool — "Haircut" requires one of {Chair 1, Chair 2}, whichever is free.
- N units of a capacity asset — "Guided tour" requires 2 seats from the kayak fleet.
Requirements combine. The guided tour needs one guide and two kayaks; a booking only succeeds if all of it is free for the whole window.
Auto-assignment
At confirmation, ezerve picks the concrete assets that satisfy each requirement and holds them together. Two customers booking haircuts at the same time land on different chairs without anyone thinking about chairs. Assignment is serialized, so simultaneous bookings can't grab the same pool member — see how double-booking is prevented.
A worked example
A salon with two chairs and one stylist sells "Color — 2 hours — $185" requiring one stylist and one of the two chairs. At any moment the salon can host one color (the stylist is the bottleneck), while the second chair stays bookable through any offering that doesn't need the stylist. Model the constraint once; the calendar does the arithmetic forever.