The Hotel Customer Data Platform

It wins the matches other systems abandon. Then proves every one.

A guest who stayed at four of your hotels under three slightly different names is still the same person. GuestMaker CDP resolves them in real time: deterministic for the easy match, fuzzy scoring for variants, and Claude AI for the long tail. Every decision auditable, every field attributed to its source hotel, and only reachable profiles promoted into the CRM.

INTAKE SOURCES · 5 PROPERTIES + WEB SDK
MVL84/day
DCH127/day
SBR96/day
MSU52/day
OGV31/day
WEB5,830 ses
RAW PMS RECORD → 3-STAGE RESOLUTION → GOLDEN RECORD
DET 99% · FUZZY 0.70–0.90 · AI VERIFY
RAW INTAKE
post-checkout · per-property push
MVLpms-67NEXT
Sergio Wagner
swagner@orange.fr · +49 632 497 142
DE · DOB 1961-04-25
TODAY · INGESTED18,420
CDP · RESOLUTION WORKBENCH
one decision per candidate · 3 stages · auditable
RESOLVING
CANDIDATE
·
·
01DETERMINISTIC· email · phone · doc · compositePENDING
02FUZZY MATCH· 9-feature weighted scorePENDING
deterministic match was sufficient · fuzzy not run
03AI VERIFY· Claude · the long tailPENDING
awaiting candidate…
AWAITING CANDIDATEIDLE
Identity assembly
· how each profile was built, contribution by contribution
NEWDETFUZZYAI0 CONTRIBUTIONS · 5 OF 5,383
Sergio Wagner
G-04821 · DE
OPEN· · ·
OPEN· · ·
OPEN· · ·
AWAITING
FIRST
SIGHTING
0/3
0%
PENDING
Noah Fischer
G-04822 · US
OPEN· · ·
OPEN· · ·
OPEN· · ·
AWAITING
FIRST
SIGHTING
0/3
0%
PENDING
Isabelle Flores
G-04823 · ES
OPEN· · ·
OPEN· · ·
OPEN· · ·
AWAITING
FIRST
SIGHTING
0/3
0%
PENDING
Maria Johnson
G-04824 · AT
OPEN· · ·
OPEN· · ·
OPEN· · ·
AWAITING
FIRST
SIGHTING
0/3
0%
PENDING
Hugo Davis
G-04825 · CZ
OPEN· · ·
OPEN· · ·
AWAITING
FIRST
SIGHTING
0/2
0%
PENDING
12 primitives · one guest, every hotel

Identity resolution that earns every match it claims. Three stages, one decision, full provenance · across every property in the group.

Cross-PMS ingestion, deterministic-first matching, fuzzy 9-feature scoring on the variants, Claude AI on the long tail. Every canonical field attributed to its source hotel, every decision logged with confidence and reasoning, every reachable profile promoted into the CRM automatically. The CDP is not a side-effect of your warehouse. It is the source of truth your campaigns, journeys, segments and agentic replies all sit on top of.

SINGLE
1SYNC
BATCH
100SYNC
BULK
5,000ASYNC
01 · INGESTION

Three modes, one schema

Single push, nightly batch or historical bulk. E.164 phone normalization, OTA-temp-email detection, and upsert dedup on (tenant, hotel, ext_reservation_id) · every payload lands as a guest, a stay and the extras, atomically.

  • Single · 1 reservation · real-time PMS push
  • Batch · up to 100 · nightly delta sync
  • Bulk · up to 5,000 · async with batch_id + replay
"Your PMS push lands as a guest, a stay and the extras · in the same call."
MVL · pms-67
EMAIL
PHONE
DOC·
MATCH
99%
SBR · pms-141
EMAIL
PHONE
DOC·
02 · DETERMINISTIC

The obvious 99%

Four exact-match strategies cover the easy hits. Case-insensitive email, E.164-normalized phones, document type+number pairs, and a 4-field composite for guests without contact info.

  • Email · case-insensitive exact
  • Phone · E.164 · handles bare nationals
  • Composite · family_name + DOB + nationality + gender
"The merge that obviously should have happened. We just do it."
family_name
×0.25
given_name
×0.20
date_of_birth
×0.20
nationality
×0.08
stay_dates
×0.05
COMPOSITE0.82 → AI
03 · FUZZY MATCH

Variant-aware scoring

A 9-feature weighted composite over name, DOB, document, nationality, gender, stay proximity, hotel overlap and channel. Five blocking strategies pre-filter the candidates so we never run O(N²).

  • 9 features · family 0.25 · given 0.20 · DOB 0.20 …
  • 5 blocking strategies · prefix, domain, phone-prefix
  • >0.90 auto-merge · 0.70–0.90 → AI · <0.70 skip
"Isabel and Isabelle on the same DOB? That's one person."
CLAUDE-HAIKU · VERIFY88%
“Same phone (+1570722861), identical DOB. Different email domains consistent with multiple accounts. Merge.”
04 · AI VERIFY

Claude on the long tail

A custom system prompt with hotel-industry false-positive patterns. Handles transliterations, nicknames, cultural naming conventions. Only the 0.70–0.90 band · about 5% of candidates · and every reasoning text is logged.

  • Evaluates the 0.70–0.90 confidence band only
  • Merges on >85% AI confidence
  • Full reasoning text logged for every decision
"Sean is a common Anglicisation of Sergio."
SHARED · garcia@…
María GarcíaJ-W 0.41
Pedro GarcíaJ-W 0.41
BELOW 0.85 · NOT MERGED
05 · SMART TRIAGE

Safeguards against false merges

Two guests on the same email aren't always the same person. Jaro-Winkler similarity must hold on the given name. Family members on a single booking stay separate via the same-reservation guard.

  • Jaro-Winkler ≥ 0.85 · given-name divergence
  • Same-reservation guard · families stay split
  • Batched 1,000 unmatched guests per pass
"María García and Pedro García are not the same person."
NAMEMVL
EMAILMVLDCH
PHONEMVLSBR
DOBMVL
NATMVLDCH
06 · GOLDEN RECORD

Provenance per field

Every canonical field carries provenance metadata. See exactly which PMS contributed which name, email or document. Audit the merge chain all the way back to the contributing reservation.

  • field_sources JSONB · per-field hotel attribution
  • Aggregates · total_stays · spend · hotels_visited
  • Reversible merges via merged_into_id pointer
"You never lose where a fact came from."
email
×0.30
phone
×0.30
date_of_birth
×0.15
nationality
×0.15
document
×0.10
WEIGHTED90%
07 · DATA QUALITY

A score you can act on

A weighted completeness score per profile, per hotel and per tenant. Email and phone weigh heaviest because they unlock reachability and segmentation. Recomputed on every merge.

  • Email 30% · Phone 30% · DOB 15% · Nat 15% · Doc 10%
  • Per-profile, per-property and per-tenant rollups
  • Live recompute on every merge or enrichment
"A number your CRM team can chase, not a chart they ignore."
CDP · GOLDEN
Sergio Wagner
9 fields ready
FILL-ONLY-NULLUPSERT
CRM · CONTACT
Sergio Wagner
✓ promoted
08 · AUTO-PROMOTION

Zero-touch CRM bridge

Reachable profiles flow into the CRM automatically. Nine contact fields are filled · only if null · so manual CRM edits are never overwritten. Reservations bridge to the CRM in the same pass.

  • Phone-first dedup, email fallback
  • 9 fields enriched · fill-only-null strategy
  • Reservations upserted into the CRM in parallel
"No more 'import the latest CSV from booking.com'."
PMS CONSENTpassport-side · wins
CDP AUTO-CONSENTemail ON · whatsapp OFF
TENANT DEFAULTfallback
09 · CONSENT RESOLUTION

Three-tier consent stack

Consent resolved with explicit priority: PMS-collected consent wins, then CDP auto-consent toggles, then your tenant default. Flip a setting and backfill retroactively across every promoted profile.

  • Tier 1 · PMS consent (passport-side)
  • Tier 2 · CDP auto-consent · email + whatsapp
  • Tier 3 · tenant default · retroactive backfill
"GDPR-shaped, not GDPR-flavored."
__gm_visitor_id13-month TTL
__gm_session_id30-min idle rotate
GPC HONORED · PII STRIPPED
10 · WEB SDK

Anonymous to identified

A zero-dependency snippet drops a 13-month visitor_id and a 30-min session_id. Auto-tracks pageviews, scroll, clicks, forms. PII is stripped before transmission. GPC honored. 10s batched flush with beacon fallback.

  • Persistent visitor_id · 13-month max-age cookie
  • Event batching · 10s or 50 events · beacon fallback
  • GPC honored · __gm_disable_tracking override
"A pixel that respects the browser, not a tag that ignores it."
78
HIGH
booking views+24
return visits+20
sessions+16
pricing views+12
11 · INTENT SCORE

Behavior, not surveys

Sessions × 8, page views × 1.5, return visits × 10, booking-engine views × 12, pricing views × 6, days active × 3. Capped per dimension. Deterministic · explainable to legal, not learned by a black box.

  • 0–100 · High ≥ 70 · Medium 35–69 · Low 1–34
  • Booking-engine views weighed heaviest
  • Recomputed nightly · exposed to segment builder
"An intent score you can explain to legal."
0:08AISean ↔ Sergio · name variation88%
0:06DETemail + phone · auto-merge100%
0:04FUZZYcomposite ≥ 0.90 · auto-merge93%
0:02SKIPbelow threshold · different DOB64%
12 · AUDIT TRAIL

Every decision, replayable

Every match decision logged with confidence, matched fields and AI reasoning text. Reverse a merge with merged_into_id, replay an entire batch, debug any single decision, and cascade GDPR deletes with proof of erasure.

  • Per-decision log · stage · confidence · reasoning
  • Reverse a merge via merged_into_id pointer
  • GDPR delete cascade with proof-of-erasure
"Auditors stop calling. The record always knows."
Anonymous → identified · the visitor journey

From anonymous cookie to enriched CRM contact. Three real visitor journeys, on rotation.

Every visit drops a 13-month cookie. Every page is auto-classified into one of fourteen categories. Sessions accumulate, intent climbs with every booking-engine view, and the interest profile fills out · all anonymously. The moment the visitor reveals themselves (newsletter, loyalty, form, or booking), every prior pageview retroactively attaches to the CDP profile and the enriched contact lands in the CRM. Below: three different real journeys play out on rotation · a long contemplator, a wedding planner, and a returning loyalty member.

anon-83af-2c91ANONYMOUS
__gm_visitor_id cookie · 13-month TTL · no contact info yet
SESSIONS
0
PAGEVIEWS
0
INTENT
0
NONE
BOOKING WINDOW
12d
Day 0Day 1Day 2Day 3Day 4Day 5Day 6Day 7Day 8Day 9Day 10Day 11Day 12roomsspadiningexperienceseventsofferspricingbooking engineloyaltygallerylocationhomepageHIGH 70MED 35INTENTscore 0–1000
AI page classifier
14 CATEGORIES · GLOB PATTERNS
TOP INTERESTS · BY PAGEVIEW SHARE
awaiting first pageview…
Awaiting identification
No contact captured yet · every session attaches to the same 13-month visitor_id cookie. The moment this visitor reveals themselves (newsletter signup, loyalty enrollment, booking, or any form), every prior pageview folds into the CDP profile and intent + interests sync to the CRM in nine idempotent steps.REVEAL HOOKS · IDEMPOTENT BY VISITOR_ID
newsletter_signuployalty_enrollmentbookingform_submitmanual
After consolidation · the reachability gate

Many bookings collapse into one record. Then a single rule decides where it lives.

Resolution leaves every guest as exactly one golden record. The CDP then asks one question of each record: does it have a verified email or phone? If yes, it is auto-promoted to the CRM and immediately becomes marketable on WhatsApp, email and inside any segment. If no, it stays in the CDP · fully consolidated, waiting for the next booking to enrich it. Either way, every guest and every booking sits in the CDP. The CRM only sees the reachable subset.

RAW BOOKINGS47,830
AFTER MERGE18,420
REDUCTION−61.5%
CRM-READY14,290
HELD IN CDP4,130
77.6%22.4%
CDP · ALL CONSOLIDATED
every guest, post-resolution
BKG·1000BKG·1113BKG·1226BKG·1339BKG·1452BKG·1565GOLDEN
18,420unique guests
collapsed from 47,830 raw bookings−61.5%
REACHGATE
has email ∨ phone?
PROMOTED → CRM
MARKETABLE GUESTS
ready for WhatsApp · email · segmentation
14,290contacts · auto-synced
EMAIL14,290
WHATSAPP11,840
SEGMENTS32
HELD · WAITING
NOT YET REACHABLE
consolidated · still in CDP
4,130awaiting enrichment↑ +38 / DAY → CRM
Enriched on the next booking. The next checkout with the same name + DOB folds in · if it carries an email or phone, the record is auto-promoted to the CRM.
The never-ending ingestion loop
DAILY @ 04:00 LOCAL · PER PROPERTY
↺ NEXT DAY · NEW CHECKOUTS · NEW MERGES · NEW PROMOTIONS
01 · 5 PMSApaleo · Opera · Mews · Cloudbeds · Protel
02 · INGESTIONconfirmed checkouts only
03 · CDPall guests + all bookings
04 · RESOLUTIONdet → fuzzy → AI
05 · REACH GATE→ CRM ∣ ↺ CDP
DAY 0 · BIG BANG147,420 historical checkouts · single runDAILY DELTA~480 new checkouts/day · ~340 merges
CDP ANALYTICS

Every booking, every record, every merge, measured the second it lands.

The data plane behind every guest profile, ingestion from five PMS systems, identity resolution, field-level data health and the reach gate that decides what flows into the CRM. Refreshed live as checkouts confirm.

Live
Events ingested · today
8,420
↑ 16%all sources · since 00:00
Throughput
5.8 /sec
↑ 0.4rolling avg · 5 min
Connector uptime
99.86%
↑ 0.0430-day avg · all 5
Bytes processed · 30d
142.6 GB
↑ 11%incl. enrichment data
Apaleo
2 properties · Sunset Beach · Atlantic House
Healthy
Ingested · 30d
84.3k
bookings
Sync lag
3 s
last sync · now
Uptime · 30d
99.98%
SLA · 99.5%
Throughput
2.4/s
rolling 5m
API errors · 24h
0
clean
Hourly volume · 12h
Opera Cloud
1 property · Zafira Marina
Healthy
Ingested · 30d
71.2k
bookings
Sync lag
8 s
last sync · 8s ago
Uptime · 30d
99.92%
SLA · 99.5%
Throughput
1.9/s
rolling 5m
API errors · 24h
0
clean
Hourly volume · 12h
Mews
2 properties · Olea Cliffside · Lumia Bay
Healthy
Ingested · 30d
56.5k
bookings
Sync lag
12 s
last sync · 12s ago
Uptime · 30d
99.86%
SLA · 99.5%
Throughput
1.5/s
rolling 5m
API errors · 24h
0
clean
Hourly volume · 12h
Cloudbeds
1 property · Casa Verde
Lagging
Ingested · 30d
42.2k
bookings
Sync lag
1.4 m
last sync · 1.4m ago
Uptime · 30d
98.42%
SLA · 99.5%
Throughput
1.0/s
rolling 5m
API errors · 24h
12
rate-limit · retried
Hourly volume · 12h
Protel
1 property · Aurora Pines
Healthy
Ingested · 30d
33.4k
bookings
Sync lag
9 s
last sync · 9s ago
Uptime · 30d
99.74%
SLA · 99.5%
Throughput
0.9/s
rolling 5m
API errors · 24h
0
clean
Hourly volume · 12h
Historical · day-0 big bang
ONE-TIME BACKFILL · ALL CHECKED-OUT BOOKINGS BEFORE GO-LIVE
Historical bookings
147,420
imported on Day 0
Records collapsed
−61.5%
to 56,720 golden records
Single-run duration
4h 12m
parallel · 5 connectors
Daily delta · now
~480/d
ongoing · ~340 merges
snapshot · 30d sync · < 5s ago 7 properties 5 PMS connectors
Export · CSV · PDF · Schedule report
FAQ

Common questions about CDP.

Don't see yours? Talk to the team.

The CDP ingests checkout records from every PMS instance in your group (Mews, Apaleo, Opera, Cloudbeds, Protel, etc.). It resolves them through a three-stage pipeline: deterministic matching (email, phone, document ID), probabilistic matching (9-feature weighted composite including name variants, DOB, nationality), and AI verification (Claude reviews edge cases above 0.70 that didn't auto-merge). Every decision is auditable, reversible, and includes confidence scores.

They stay in the CDP as golden records without being promoted to the CRM. The moment a reachable contact detail (email or phone) appears on a subsequent booking, the CDP auto-promotes the record with its full stay history attached. No manual intervention required.

Yes. The fuzzy matching stage uses Jaro-Winkler similarity on given and family names, weighted alongside DOB, nationality, document IDs, and stay patterns. 'Sergio' at one hotel and 'Sean' at another with the same email and DOB is a confident merge. The AI stage handles the true edge cases with natural language reasoning.

Real-time. Post-checkout records are ingested, resolved, and available in the CDP within seconds. The resolution pipeline processes at 5+ events per second, with 98%+ auto-resolved without human review. Historical backfill (day-zero import) typically processes 150,000+ records in under 5 hours.

No. The CDP sits on top of your PMS systems, not instead of them. It reads from every PMS in your group and creates a unified guest layer. Your properties keep operating their PMS exactly as before.

GDPR-compliant by design, hosted in EU (Supabase EU region). The CDP tracks provenance per field (which hotel contributed which data point), supports right-to-erasure propagation across all linked records, and maintains full audit logs of every merge and promotion decision.

Yes. The day-zero backfill processes all historical reservations from connected PMS systems, runs the full identity resolution pipeline, and typically collapses 40-60% of raw records into deduplicated golden profiles. Most groups are live with full history within 2-3 weeks.

Book a demo

See the CDP resolve
with your own data.

Thirty-minute demo. We'll connect one PMS of yours and walk through a real golden record, a real merge decision, and a real promotion to CRM, end to end.