Skip to main content

BUSINESS.md: Hotel8:POS — Business Requirements & Functionality

Audience: product owners, business analysts, and anyone evaluating what Hotel8:POS does for the business. For architecture read README.md; for wire-level detail read DESIGN.md.

1. Business Purpose​

  • Run food-and-beverage service at the table, bar, or outlet: take orders, route them to stations, settle checks, and close the outlet's day.
  • Connect restaurant revenue to the guest stay (room charges) and to the loyalty program (reward redemption) without manual reconciliation.

2. Business Scope (What the Service Provides)​

CapabilityDescription
Outlet & area managementOutlets, service areas, table inventory with statuses, combine/split/transfer
Menu managementCategories, items, modifier groups/modifiers, tax groups
Check lifecycleOpen/hold/recall/split/merge/transfer/void with manager approvals
OrderingPer-seat course-aware ordering and kitchen routing
PaymentsCash/card/room-charge/mobile tendering, splitting, payment requests; refund flow after settlement
Printer routingPrinter groups mapping items to stations
Fiscal configurationTax groups, revenue centers
Reporting & EODOutlet-level reports, end-of-day report generation and export
Offline modeTerminal-disconnected operation with reconciliation on sync
Loyalty couplingRedemption of loyalty rewards at the table
Admin consoleRFW pages incl. shared Shield policy admin

What the service does NOT own (business boundary)

ConcernOwning service
Room booking, rates, guest folioshotel8:pms
Actual money movementBill8:Payments + Bill8:Ledger
Reward balanceshotel8:loyalty
Rate distributionhotel8:distrib / hotel8:meta
Email receipts transportSentin8:Post
IdentitySentin8:Auth

3. Business Capabilities​

AreaBusiness rule
ChecksA check starts when guests are seated and ends settled or voided; a paid check cannot be voided — only refunded through its flow.
HoldsA held check keeps the table while deferring kitchen fire; recall resumes normal service.
Splits & mergesChecks split by seat/item; merging requires both checks in a mergeable state.
Room chargingA room charge appends the amount to the guest's folio through PMS — the terminal never touches folio tables.
KitchenOrders route to the configured printer/station group; the kitchen state progresses independently of the server view.
ModifiersModifier groups constrain what can be combined on an item line (choice/range enforcement).
TaxationTax groups attach to items; totals are computed per item's configuration.
Manager authorityOverride/void/discount authority is an attribute of the staff member (policy), not a hidden flag.
OfflineTerminals continue selling and reconcile on reconnect; conflicts resolve by event idempotency.
LoyaltyA member's reward redeems at the table and reduces the check balance.

4. Business Events (Outbound)​

EventFires when
hotel8:pos:check:created / held / recalled / split / transferred / voidedCheck lifecycle movements
hotel8:pos:order:added / voided / seat_assignedOrder lines change
hotel8:pos:kitchen:order_routedKitchen/station routing
hotel8:pos:payment:posted / split / room_chargeSettlement activity
hotel8:pos:payments:payment_requestedPayment request raised to the payer
hotel8:pos:table:created/updated/deleted/status_changed, tables:combined/separated, table:prepTable operations
hotel8:pos:menu_item:created, modifier:*Menu configuration changes
hotel8:pos:discount:applied, manager:approvedDiscount/override actions
hotel8:pos:package:redeemedLoyalty redemption at the table
hotel8:pos:report:eod_generated, report:export_requestedBusiness-day close and exports
hotel8:pos:offline:syncedOffline terminal reconciliation

Inbound (consumed): hotel8:pms:reservation:checked_in — prepares tables/areas for arriving guests.

5. Business Rules & Invariants​

  1. A check's total always equals its items (with modifiers and taxes) minus discounts, plus tips where applied.
  2. A void after payment is impossible — the refund flow is the only path.
  3. Room charges appear on the guest folio exactly once per settled amount.
  4. Held checks are excluded from the payable flow until recalled.
  5. Every manager-approval action carries the approving identity.
  6. Outlet end-of-day is reproducible: the report is generated from recorded events, never from ad-hoc aggregation.
  7. Offline sales reconcile without loss — every offline mutation surfaces in the sync event stream once.

6. Target-User Roles & Use Cases​

PersonaUse
Server/waiterOpen tables, take orders, fire to kitchen, print checks
BartenderQuick-serve checks, tab handling
CashierPayments, splits, voids with approvals
Kitchen/stationReceive routed orders, mark progress
Outlet managerDiscounts/overrides, EOD, reports, menu changes
Revenue/financeRevenue center reports, exports
Guest (indirect)Room charge to folio; reward redemption

7. KPIs / Success Criteria​

  • Order-to-kitchen latency well under the service-time budget.
  • Zero duplicate payment instructions (idempotency holds under retries).
  • Zero unreconciled offline checks after sync.
  • Table-turn and check-length metrics visible in the admin reports.
  • 100% of voids/refunds carry an approval trail.

8. Dependencies & Reliance on Other Services​

RelianceFor
hotel8:pmsRoom-charge folio posting; reservation context
Bill8:Payments / Bill8:LedgerNon-room settlements
hotel8:loyaltyReward redemption validation
Sentin8:Auth + ShieldIdentity and authorization
Sentin8:Buspos stream delivery + PMS events intake
Sentin8:SysAudit ingestion
Sentin8:StorageReport exports

9. Acceptance Criteria​

  1. A full meal cycle (seat → order → fire → pay incl. split/room-charge) completes without server-side manual steps.
  2. A paid check void is refused and routed to refund.
  3. An arriving guest's table is prepared automatically from the PMS check-in.
  4. A loyalty reward redeems at the table and reduces the folio/check.
  5. An offline terminal's orders appear (exactly once each) after reconnection.
  6. The end-of-day report reflects all recorded checks and payments.

10. Open Business Questions​

  • Table-side card pre-authorization (tabs).
  • Kitchen display batching strategies.
  • Tip pooling/distribution policy.

Design attribution: hotel8:pos and its underlying concepts were designed by Hamid Jahanzad Hamid@Jahanzad.com.