Why hotels care
When availability/rates fail to push to the channel manager / OTA, the hotel keeps selling on Booking.com while the PMS thinks the house is full — or the reverse. Revenue managers and night auditors need a bell, not a row in last_sync_error they discover after a walk.
Staff notifications already fire for webhook delivery failures and night-audit anomalies. Channel sync failures do not (today).
Current state (code anchors)
ChannelService.updateSyncStatus(...) writes lastSyncAt / lastSyncStatus / lastSyncError
AriService / ContentSyncService call that on success/failure
StaffNotificationListener handles agent.decision_created, webhook.delivery_failed, audit.completed — no channel sync listener
- Dashboard NotificationBell already consumes
/v1/staff-notifications
What we need
- Emit a stable internal event when a channel connection transitions to
failed (or N consecutive failures)
StaffNotificationListener (or sibling) creates a critical staff notification: property, connection, adapter, truncated error, link/hint to Channels UI
- Debounce / dedupe so a flapping CM does not spam every 30s
- Optional: clear/resolve notification on next successful sync
- Tests for listener + debounce; manual note in
ops/harden or channels docs
Open questions (operators)
Acceptance criteria
How to contribute
Great first substantial NestJS issue if you know EventEmitter + the staff-notification module. Hotel channel managers who have been burned by stuck ARI are especially welcome to define debounce thresholds in comments.
Search keywords: channel manager, ARI sync, OTA oversell, staff notification, Channex, SiteMinder, rate push failure, hotel inventory sync
Why hotels care
When availability/rates fail to push to the channel manager / OTA, the hotel keeps selling on Booking.com while the PMS thinks the house is full — or the reverse. Revenue managers and night auditors need a bell, not a row in
last_sync_errorthey discover after a walk.Staff notifications already fire for webhook delivery failures and night-audit anomalies. Channel sync failures do not (today).
Current state (code anchors)
ChannelService.updateSyncStatus(...)writeslastSyncAt/lastSyncStatus/lastSyncErrorAriService/ContentSyncServicecall that on success/failureStaffNotificationListenerhandlesagent.decision_created,webhook.delivery_failed,audit.completed— no channel sync listener/v1/staff-notificationsWhat we need
failed(or N consecutive failures)StaffNotificationListener(or sibling) creates a critical staff notification: property, connection, adapter, truncated error, link/hint to Channels UIops/hardenor channels docsOpen questions (operators)
Acceptance criteria
How to contribute
Great first substantial NestJS issue if you know EventEmitter + the staff-notification module. Hotel channel managers who have been burned by stuck ARI are especially welcome to define debounce thresholds in comments.
Search keywords: channel manager, ARI sync, OTA oversell, staff notification, Channex, SiteMinder, rate push failure, hotel inventory sync