General architecture
Every event.Every service.Live.
Seraph, our event bus, carries every booking, login and payment to every service that needs it.
Wi-Fi loginBookingPaymentPointsReviewWeb formInbox
Seraph event bus
- loyalty_v2.points.createdbalance updated
- ordering.order.paymentspend on the profile
- bookings.booking.createdprofile, points, email
- wifi.session.createdguest captured
Wi-Fi
Booking
Payment
Review
Points
Seraph event bus
- loyalty_v2.points.createdbalance updated
- ordering.order.paymentspend on the profile
- bookings.booking.createdprofile, points, email
- wifi.session.createdguest captured
Powering 2,500+ UK venues
The problem
Reconciled, nightly.
Separate systems all day, an export at 2am, and a guest view that is stale by breakfast.
One viewAlready stale
One viewAlready stale
How it works
Published once.
One booking reaches four services at the same moment.
PublishThe busSubscribe
New booking
Covers4
Time19:30
Publishesbookings.booking.created
SeraphAWS EventBridge
Guest profileMorpheusProfile updated
Loyaltyloyalty-v2Points accrued
MarketingserviceGuest emailed
ReportingreportsVisit counted
Your next moduleJust subscribes
New booking
Covers4
Time19:30
Publishesbookings.booking.created
SeraphAWS EventBridge
Guest profileMorpheusProfile updated
Loyaltyloyalty-v2Points accrued
MarketingserviceGuest emailed
ReportingreportsVisit counted
Your next moduleJust subscribes
The services
Who does what.
Each module publishes what happened. The rest listen.
Trinity
wifi.session.createdGuest Wi-Fi
Zion
bookings.booking.createdBookings
Neo
ordering.order.paymentPayments
loyalty-v2
loyalty_v2.points.createdLoyalty
Tank
reviews.review.createdReviews
inbox
inbox.thread.createdInbox
Morpheus
merges every eventGuest profile
service
triggers on eventsMarketing
SeraphThe bus between them
Why it matters
Claims you can check.
The bus turns them into boring questions.
No exports
Live, not nightly.
A Wi-Fi login reaches the guest profile the moment it happens. No 2am sync.
Real time
Spend moves segments.
A payment lands on the profile, so it counts in the next segment.
Your data
Yours to take.
One record per guest, held by you, not a booking network.
What’s next
Foundation first.
AI needs connected data before it needs a model. The bus is how ours got connected.
