Services/S/05/Platform & integration

Systems that finally agree with each other.

Make the systems you already pay for talk to each other — cleanly, observably, on contract. Webhooks that retry. Pipelines that don't lose events. Reconciliation for the day something inevitably drifts. We've spent a decade in the messiest integration surface there is: hospitality.

Timeline4–16 weeks
Team size2–4
EngagementFixed or retainer
OutputIntegration layer
01 — Overview

An integration is a contract, not a connection.

Most integration pain is really a contract problem. Two systems agree on a happy path and nothing else. We design the boundary first — what the data means, what happens when it's late, what happens when it's wrong — and then write the code that honours it.

We start by mapping the real flow of events across the systems you have, including the ones nobody documented. We find where data is silently lost, duplicated or reordered today, and we design an anti-corruption layer so your domain doesn't inherit someone else's schema.

What you're left with is an integration layer you can reason about: idempotent, observable, and recoverable. When a third party has an incident — and they will — the failure is contained, visible, and replayable, not a 3am mystery.

02 — Process

Map, contract, build, reconcile.

Four phases that assume things will go wrong, and design for that from the start.

i.

Map

We trace every event across every system, including the undocumented ones. Where data is lost, duplicated or reordered today — written down, with evidence.

Event mapFailure modesRisks
ii.

Contract

We define the boundary: schemas, semantics, retry and idempotency rules, and what "consistent enough" means for your business. The boring document that prevents the exciting incident.

SchemasSLAsContract tests
iii.

Build

An anti-corruption layer, idempotent consumers, retries with backoff, and a dead-letter path that a human can actually act on. Observability written alongside the code.

Integration layerDead-letterDashboards
iv.

Reconcile

A continuous reconciliation job that proves the two systems still agree — and tells you, in plain language, the moment they don't.

ReconciliationAlertsRunbooks
03 — Capabilities

What we actually do.

The integration surfaces we've already been burned on, so you don't have to be.

/01

PMS & channel managers

The hardest integration surface in hospitality. We've worked across the major property-management and channel systems and know where the bodies are.

/02

Payments & reconciliation

Stripe, Adyen and the long tail of acquirers. Event-sourced reconciliation that survives audits and chargebacks.

/03

Identity & SSO

OIDC, SAML, SCIM provisioning. Single sign-on that works for the enterprise buyer without breaking the small one.

/04

Event pipelines

Durable, ordered, idempotent. Queues and streams that don't lose events under load and don't replay them into chaos.

/05

Webhook infrastructure

Inbound and outbound. Verified signatures, retries with backoff, replay, and a dashboard your support team can use.

/06

API design & gateways

Public and partner APIs that age well. Versioning, rate limits, contract tests, and documentation people actually read.

04 — Stack

Tools we keep returning to.

Durable, observable, boring. Integration is the wrong place to be adventurous.

Transport
Kafka · SQS
Webhooks · gRPC
Runtime
Node.js · NestJS
Temporal · BullMQ
State
PostgreSQL · Redis
Outbox · CDC
Observe
OpenTelemetry
Grafana · Sentry
05 — Selected work

Recent integration work.

Most of it runs quietly between two systems. These are the ones we can describe.

Hospitality · 2025

One channel layer, nine PMSs

A single integration layer in front of nine different property-management systems. Onboarding a new property went from weeks to a day.

Payments · 2024

Reconciliation that survived audit

An event-sourced reconciliation pipeline for ~€420M/year of volume. Zero unresolved breaks across 18 months in production.

Identity · 2024

SSO without the rebuild

Added enterprise SSO and SCIM to a product that wasn't designed for it, without forking the small-customer experience.

Logistics · 2023

Webhooks that stopped paging

Replaced a brittle webhook fan-out with verified, retried, replayable delivery. On-call interruptions down by an order of magnitude.

Start

Got two systems
that won't agree?

Tell us a little about what you're trying to connect. We reply within two working days, in plain language, with an honest read on whether we're the right team.

AgencyPlateon 55, 104 35
Athens, Greece
Write to us