Skip to main content

J-08 — Online Check-In Queue Coordination

One-liner: Guest pre-completes their ID and signature online; the receptionist sees them in a queue with all data ready and finalises their check-in in seconds.

1. Purpose

A guest, en route to the property, completes online check-in (uploads ID, signs the registration card, picks add-ons). At the property, the receptionist sees them in a queue, finalises the check-in (room assignment, key issue, deposit), and the guest skips the line. Outcome: shortest possible in-property time-to-room; guest's online check-in artefacts (ID, signature) reused; no double data entry.

2. Persona Context

  • Persona: Receptionist (primary actor); Guest (initiator).
  • Surfaces: Tenant Booking Mobile / Web (guest), Electron Desktop (front desk).
  • Primary BFFs: bff-tenant-booking-service (guest); bff-backoffice-service (front desk).
  • Backing services: booking-service, identity-verification-service, notification-service, front-desk-service, audit-service.
  • Preconditions: Tenant has online check-in feature enabled; reservation in Confirmed state with ETA today; mobile-key feature optional.
  • Trigger: Guest completes online check-in OR receptionist opens the Online Check-In Queue widget on Front Desk.

3. Entry Points

#EntrySurfaceNotes
1Push / SMS reminder to complete check-inMobileT-24h before ETA
2"Check in now" CTA in My Trips (P2)Mobile / WebGuest-initiated
3Online Check-In Queue widget on Front DeskDesktopReceptionist-initiated finalisation

4. Screen-by-Screen Flow

4.1 (Guest) OnlineCheckInWizard

  • Layout: Step 1 reservation review; Step 2 ID upload (camera/upload); Step 3 signature (touch/mouse); Step 4 ETA + special requests; Step 5 ready-to-go.
  • Components: IdCameraCapture (mobile), IdUploadField (web), SignaturePad, EtaPicker, SpecialRequestField.
  • Offline: Web/mobile cache form locally; submit deferred until online.
  • AI: Cloud OCR for ID; transliteration for non-Latin names. Canonical HITL for guest-side review (guest is the human in the loop).
  • Errors: Reservation not eligible -> message; OCR low confidence -> guest re-takes.
  • Loading: Spinner during submit.
  • A11y: Signature pad has fallback keyboard input ("type your name"); all steps keyboard-completable.
  • RTL: Mirror.
  • Perf: Wizard total <= 5 min p95 (mostly user time).
  • Telemetry: frontend.online_checkin.step_viewed; _completed.

4.2 (Receptionist) OnlineCheckInQueueWidget

  • Layout: List of guests with completed online check-in, sorted by ETA; per-guest tile with name, room type, balance, ID-verified pill, ETA, "Finalise" CTA; SLA marker for >15 min wait.
  • Components: QueueTile, Button ("Finalise").
  • Offline: Reads from SQLite snapshot; finalisation queued.
  • AI: None on the queue itself.
  • Errors: ID verification pending -> tile disabled with banner.
  • Loading: Skeleton tiles.
  • A11y: Each tile is a tab stop; SLA marker has alt text.
  • RTL: Mirror.
  • Perf: Mount <= 200 ms.
  • Telemetry: frontend.online_checkin_queue.viewed; frontend.online_checkin_queue.finalize_clicked { reservationId }.

4.3 (Receptionist) FinaliseCheckInCondensedWizard

  • Layout: Single screen instead of full wizard; ID + signature pre-filled; room assignment (auto from policy); key issuance; deposit (already pre-authorized in card flow); "Complete" CTA.
  • Components: ReservationCondensedSummary, RoomAssignmentCard (auto), KeyIssuancePanel, Button ("Complete").
  • Offline: Same as J-05 §4.4-4.6 but with offline-cert.
  • AI: Reuses prior provenance; receptionist may re-verify ID.
  • Errors: Same as J-05.
  • Loading: Sub-second; encoder cycle <= 8 s.
  • A11y: Single-screen completion announced ("Check-in finalised in 12 seconds").
  • RTL: Mirror.
  • Perf: Finalise <= 30 s p95.
  • Telemetry: frontend.online_checkin.finalized { reservationId, durationSec }.

5. State Machine

6. Data Requirements

6.1 Server state

  • Guest side: POST /api/v1/online-checkin/submit (idempotent).
  • Front desk side: GET /api/v1/online-checkin/queue?day=... (cached locally), POST /api/v1/front-desk/checkin/:id/finalize-online (idempotent).

6.2 Local persistence

  • Guest's online check-in artefacts cached in SQLite (online_checkin_drafts).
  • Outbox entries for finalisation.

6.3 Idempotency

  • All mutations carry X-Idempotency-Key.

7. AI Behavior

  • ID OCR + transliteration on guest side (HITL for guest).
  • Receptionist re-validates only if confidence below threshold.

8. Offline Behavior

  • Queue reads from SQLite snapshot.
  • Finalisation works offline (offline-cert key issuance).
  • Mobile-key invite queued.

9. Error States

ErrorTriggerUX shownRecoveryTelemetry
ONLINE_CHECKIN_NOT_ELIGIBLEReservation type / status mismatch"Online check-in not available for this booking"Guest checks in at front deskfrontend.online_checkin.not_eligible
ID_VERIFICATION_PENDINGCloud OCR running > thresholdTile disabled with bannerAuto-resume when verifiedfrontend.online_checkin.id_pending
ID_VERIFICATION_FAILEDOCR / verification rejectionRe-route to J-05 standard wizardReceptionist re-capturesfrontend.online_checkin.id_failed
MOBILE_KEY_NOT_DELIVEREDSMS bounceBanner; receptionist resends or issues physicalReceptionist actionfrontend.online_checkin.mobile_key_failed

10. E2E Test Gates

  • Composite gate G-FE-PARITY-3: guest online check-in -> receptionist finalises -> mobile key issued.
  • Re-route to standard wizard on ID failure.

11. Performance Requirements

MetricTarget
Guest wizard total<= 5 min (user time)
Reception finalise<= 30 s p95
Mobile-key delivery<= 2 min p95
Queue widget mount<= 200 ms

12. Accessibility Requirements

  • Signature pad: fallback type-name input.
  • Queue tile: clear SLA marker (visual + alt text).
  • All keyboard-completable.

13. Telemetry

Frontend events

  • frontend.online_checkin.step_viewed / _completed
  • frontend.online_checkin_queue.viewed / _finalize_clicked
  • frontend.online_checkin.finalized { reservationId, durationSec }

Domain events emitted

  • melmastoon.online_checkin.submitted.v1
  • melmastoon.identity_verification.id.verified.v1
  • melmastoon.front_desk.checkin.finalized.v1
  • melmastoon.lock_and_key.credential.issued.v1

14. Success Criteria

  • Receptionist finalisation <= 30 s p95.
  • Mobile key delivered <= 2 min p95 from finalisation.
  • Re-routing on ID failure preserves state (no double data entry).
  • SLA marker triggered correctly when wait > 15 min.
  • Audit entries record both online and finalisation steps.

References