An idea, put up for scrutiny

GuestGraph.

One explainable guest profile, from data scattered across every system in the hotel.

The problem

A returning guest looks like five strangers.

Booking.com PMS POS WLAN Reviews e.muster@… MUSTER/ERIKA Table 12 +41 79 … “A. M.” — no shared key —
Why it is not solved

Matching is easy. Being wrong is expensive.

The naive fix

Match on email.

Breaks on shared family addresses, OTA relay addresses and anyone who changes provider.

What it costs

One guest sees another's stays and invoices.

A wrong merge is a data protection incident — not a cosmetic flaw. So most hotels never try.

The hard part is not finding matches. It is knowing when not to trust one.

The idea

Store what happened. Derive who it was.

  • Records are immutableCorrections arrive as new records, never as edits. The original is always what the source actually sent.
  • The profile is derivedA computation over the records, not a row someone edits. It can always be recomputed.
  • Tenant-scoped from day oneOne instance serves many brands or properties, with no path between them.
Booking.com PMS POS WLAN Reviews Erika Muster one derived profile

Sources stay untouched. Identity is a conclusion, not a field.

How it decides

Not “is it a match?” — but “how sure are we?”

1 · Shared strong identifier
Email, phone, loyalty id, ID document → merges outright.
2 · Probabilistic score
Merges only above a threshold the operator chose. Otherwise it queues.
3 · A human decides
The final word — and their decision sticks against future evidence.

Out of the box, automatic probabilistic merging is off. It suggests; a human decides.

The two guarantees

Every decision can be explained and undone.

Explain

"Why are these one guest?"

The full chain: which matcher, how confident, on what evidence, when — and who, if a person or an agent decided it.

Undo

Split them again — and it holds.

An undo writes a permanent do-not-merge rule, so new evidence cannot silently put them back together.

This shipped before any uncertain decision was possible. That order was the point.

Where AI fits

An agent is just another uncertain matcher.

  • Identity comes firstAn agent acting on guest data has to know which guest. Without that it answers questions about five strangers.
  • Gated by machinery that existsThresholds, review queue, reversibility — the agent gets no exemption a fuzzy score would not get.
  • The audit trail names itEvery decision records whether the system, a person or a named agent made it.
Rules decide the clear cases Agent · MCP decides what it can evidence Human gets the rest, with a recommendation

Each tier hands upward what it cannot justify. Escalation is the default, not the exception.

The flywheel

Every human decision is a labeled example.

What already accrues

Feature vector + human verdict.

Every decision stores why it scored what it scored. Every review says confirmed or rejected. On the operation’s own data.

What it enables

Rules today, a model later.

The matcher sits behind one method — candidates in, scored decisions out. A model is its third implementation, not a rebuild.

No model yet, and no pipeline. But the data is accruing in the right shape.

Where it stands

The engine is built. One real system is connected.

✓Identity resolution — deterministic and probabilistic, with a human review queue ✓Explain, undo, audit trail — every decision, including who made it ✓Guest timeline — what a guest currently has, not just what was observed ✓Connectors — Apaleo, a real PMS: reservations and bookings, by webhook and by full sync ○Every other system — POS, wifi, booking engines, reviews. One PMS is not an estate. ○Agent steward, MCP — designed for, not built. The audit trail already names an agent; nothing acts as one yet. ○ML-based matching — no model, no training pipeline. Today the matcher is hand-written rules, and says so in its name. ○Production use — none yet. No customers. This is a foundation, not a product.
The model

Open core — because you have to be able to check it.

Open source · Apache 2.0

Engine, graph, API, connectors.

Run it yourself. Read exactly how it decided to merge two of your guests.

Commercial (planned)

Hosting, console, MCP for AI agents.

The core never depends on it, and is never degraded to sell it.

A black box that merges guests is not something I would deploy.

What I am asking

Tell me where this is wrong.

github.com/guestgraph · a no is worth more to me than a polite yes

GuestGraph Robert Blust Talks

Sprecher-Notiz