What this means for you as a Marketing Leader:
This is a white-label solution that enables you to:
- Flex and adapt the solution to your hospitality, event venue, or multi-location organization with similar needs
- Quickly tailor to reflect your brand standards and tone
You and your team can own the day-to-day, moment-to-moment content and digital experiences your clients and prospects expect (content, campaigns, chat assistant tone) without any reliance on an engineering or development team.
The headless CMS plus serverless functions allow you to turn your content changes and updates directly into a native app and/or push notification update to your customers, with real-time publishing frequency.
Integration of core service capabilities allows for single, brand-owned app integration of key venue functions such as point of access ticketing, local shuttle booking, etc.
What this means for you as a Technical Leader:
Technical Solution at a Glance
Cloud Construct designed and delivered the Karve Killington app as a serverless, integration-first solution, built almost entirely through AI-assisted development:
- Cross-platform app creation with Flutter
- iOS & Android apps from a single Dart codebase
- Built and refactored by an AI coding agent inside VS Code
- Serverless backend on Firebase
- Authentication with Google, Facebook, and Apple
- Cloud functions for secure API proxies and webhooks
- Cloud messaging for push notifications
- Headless content layer with Contentful
- All content (menus, events, announcements, hours, AI assistant config) managed in a browser
- No custom admin dashboards required
- Deep integrations
- Eventbrite for ticket management and in-app wallet of QR-code tickets
- PassKit for digital passes and future wallet integrations
- TaxiCaller for shuttle booking via an in-app web view
- Weather and other external data sources brought in via standard APIs
- In App Branded AI assistant
- Built with Gemini, configured from Contentful
- Speaks with the personality that can be configured and managed by your marketing team directly
- Answers questions based on live Contentful data (events, hours, venues)
Content & Campaigns – Contentful as Single Source of Marketing Content Truth
Instead of building admin tools, we modeled all content in Contentful, a headless CMS:
- Content types for:
- Events
- Menus and menu items
- Operating hours
- Properties/venues
- Transport info
- General announcements (for push campaigns)
- AI assistant configuration (tone, personality, greetings, guidelines)
- Single source of truth
- Marketing updates a menu item, event, or opening hour once in Contentful
- The app reflects changes automatically
- Future roadmap: push the same change to websites, social, and Google listings from the same CMS record
- Usage optimization
- Early usage quickly hit tens of thousands of Contentful API calls per month during a limited rollout
- We designed a caching layer in Firebase:
- Cache Contentful responses in a Firebase function
- Serve most traffic from cache to stay in Contentful’s free tier and improve performance
Backend& Security – Firebase
Firebase acts as the backend “platform” rather than a custom server:
- Authentication
- Firebase Auth configured with Google, Facebook, and Apple sign-in
- Users managed entirely through Firebase’s built-in console
- API Security via Auth Proxies
- Initial integrations stored third-party credentials in the app—fine for prototyping but insecure for production
- Using the AI assistant, the architect designed and implemented a Cloud functions–based auth proxy:
- Eventbrite (and later PassKit) credentials moved off the device
- Mobile apps call a Firebase endpoint
- Cloud function handles OAuth, stores secrets server-side, and proxies calls securely
- Push Notifications
- Contentful → Webhook → Firebase Cloud Function → Firebase Cloud Messaging
- When marketing publishes a “General Announcement” in Contentful, a webhook triggers a Cloud Function that broadcasts a push notification to all opted-in devices
- Local Storage & Tokens
- Refresh tokens and local caches stored in encrypted device storage
- Designed so that frequently accessed data doesn’t require repeated roundtrips