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
| # | Entry | Surface | Notes |
|---|
| 1 | Push / SMS reminder to complete check-in | Mobile | T-24h before ETA |
| 2 | "Check in now" CTA in My Trips (P2) | Mobile / Web | Guest-initiated |
| 3 | Online Check-In Queue widget on Front Desk | Desktop | Receptionist-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.
- 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
| Error | Trigger | UX shown | Recovery | Telemetry |
|---|
ONLINE_CHECKIN_NOT_ELIGIBLE | Reservation type / status mismatch | "Online check-in not available for this booking" | Guest checks in at front desk | frontend.online_checkin.not_eligible |
ID_VERIFICATION_PENDING | Cloud OCR running > threshold | Tile disabled with banner | Auto-resume when verified | frontend.online_checkin.id_pending |
ID_VERIFICATION_FAILED | OCR / verification rejection | Re-route to J-05 standard wizard | Receptionist re-captures | frontend.online_checkin.id_failed |
MOBILE_KEY_NOT_DELIVERED | SMS bounce | Banner; receptionist resends or issues physical | Receptionist action | frontend.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.
| Metric | Target |
|---|
| 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