Guest and reservation isolation
Ownership filters on reservation, message and request queries. No authenticated guest can read another's conversation, invoice or request by changing an ID.
You shipped an AI concierge on Lovable, a booking widget on v0 or a review-reply bot on Cursor. We audit before one guest reads another's conversation — or before a PMS token ends up in the client bundle.
An AI concierge has access to guest requests, reservation records and, if the booking-engine integration was rushed, fields close to payment data. A booking widget built on v0 can ship with the Supabase service_role key in the bundle. A review-reply bot sometimes trains on past responses that contain last names and room numbers.
We audit the code your team built with AI through the sector lens: guest and reservation isolation, careful handling of PCI scope, custody of PMS and booking-engine tokens, and the logs where last names, dates and truncated card references show up when they shouldn’t.
Ownership filters on reservation, message and request queries. No authenticated guest can read another's conversation, invoice or request by changing an ID.
If the AI agent sees any payment-flow data — even truncated fields or card references — PCI scope follows. We trace what reaches the model, what stays in logs and what travels to external providers.
Tokens for Mews, Cloudbeds, Opera, SiteMinder, Booking — where they live, what they can do, whether they're in the client bundle, whether they rotate. And what happens if one property's token leaks into another's.
console.log statements with guest data surviving the build. Hosting platforms retaining logs for weeks. What's ‘debug’ for your team is personal-data retention under GDPR.
The concierge answered wifi, breakfast and transfer questions well. When they started testing it on real requests (date change, invoice, cancellation policy), they discovered the reservations API accepted any reservation ID without verifying the guest. The Supabase service_role key was reaching the client so the check-in photo upload would work.
9 findings. 3 criticals resolved before the full rollout: ownership filter on the reservations API, service_role key removed from the client and replaced with a signed upload endpoint, RLS policies on reservations and messages tables, and a sweep of the Vercel logs where last names and room numbers were showing up.
Mid-market CRM with broad APIs — a natural fit for sales agents and lead enrichment.
Email, calendar and SharePoint as channel and context — triage, drafting and RAG over your inbox and files.
Under NDA, with read-only repository access. We don't touch real data: we read code and migrations. If we need to probe an endpoint, we use synthetic accounts in a staging environment.
Yes. We audit the connector — what permissions it asked for, what tokens it stores, how it handles errors and retries. If your PMS has no modern API and integration runs on flat files, we read that too.
Probably yes, though the exact shape depends on what the agent sees. We document which payment-flow data reaches the model and logs, tell you how to isolate it, and provide what your PCI auditor will ask for.
Small but real: the bot can train on past replies that include last names, cite room numbers or specific stays, and post text you wouldn't want on a public review. We audit what context reaches it and what it publishes before it goes live.
We design for privacy from the start, human control, traceability, usage limits, permissioning and documentation. For sensitive processes, we help assess risk and applicable obligations under GDPR and the EU AI Act.
Every engagement is led personally by one of the partners. If there's a fit, you get a personal first read of your case within one business day — not a canned demo.