The challenge
Most venues already know a lot about their guests, but that knowledge sits inside the POS and the reservation system. The difficulty is doing something with it. Noticing that a regular has gone quiet, reaching them with a relevant message and then confirming that it worked are three distinct jobs, and in a busy venue the last one usually gets skipped. Without it, an operator cannot judge whether outreach is paying for itself.
The client also faced a split in its market. Some venues have staff who want to run campaigns themselves. Others want more returning guests and no new software to learn. Both groups needed confidence in how guest data was handled, so the product had to run on each venue’s first-party data, with privacy designed in from the start.
- Guest data held in POS and reservation systems, hard to act on
- No practical way to run win-back and retention outreach from it
- No clear view of which guests came back, or why
- Two customer types: venues that want it done for them, and venues with in-house teams
Our approach
We built CityOS to sit on top of the systems venues already run. API integrations connect to the venue’s POS or reservation platform, import first-party guest data and enrich it, so the platform knows enough about each guest to choose who hears from the venue, and when. In hospitality this decision shapes the whole sale: those systems run every service, and asking staff to replace them is a far harder conversation than adding a layer on top.
The engagement features all work from that shared data: win-back messages to lapsed guests, retention triggers for regulars, replies to FAQs and enquiries, and event and menu announcements. Running them in one platform avoids the usual patchwork of a messaging tool, a list tool and a reporting spreadsheet.
To serve both kinds of venue, we built two delivery models on one platform. Venues that prefer to stay hands-off choose the Managed Service and pay according to outcomes. Tools access hands an in-house team the inbox, campaign builder, segmentation and analytics to run everything themselves. We chose one platform over two products so that data, workflows and measurement stay identical for both models and nothing has to be maintained twice.
Measurement was part of the core design. A real-time dashboard shows which guests returned, what prompted each return and the revenue impact. The interface is built in React, and the platform runs on first-party data, in keeping with its privacy-by-design positioning.
- API integrations with POS and reservation systems
- Enrichment of first-party guest data
- Win-back messages, retention triggers, answers to FAQs and enquiries, event and menu announcements
- One platform, two delivery models: Managed Service and Tools access
- In-house toolset: inbox, campaign builder, segmentation, analytics
- Real-time dashboard linking returns, their drivers and revenue
Architecture & stack
- Front end
- React
- Integrations
- POS system APIs, Reservation system APIs
- Data
- First-party guest data, Guest data enrichment
- Product modules
- Inbox, Campaign builder, Segmentation, Analytics, Real-time performance dashboard
The outcome
CityOS lets venues act on guest data they already own and measure what happens next. Operators can see who came back, what brought them and what the visit was worth, live on a dashboard. Winning back guests becomes a routine with evidence attached, instead of an occasional push nobody can evaluate.
Each venue chooses its level of involvement, from the hands-off Managed Service with outcome-based pricing to full Tools access for its own team. Because both options share the platform and the data, results are measured in the same way whichever one a venue picks.
The lesson we pass on to SaaS founders is that the pricing model and the data model are linked. Outcome-based pricing is only credible if each outcome can be attributed reliably, so attribution in CityOS drives the commercial model as much as the reporting. We look for that link at the start of every SaaS build, because retrofitting it later is painful.
Last updated

