Skip to main content

Providers Overview

Nexa talks to the outside world through adapters. Every external system — a hotel GDS, a booking engine, an email provider, a PSP, an LLM — is hidden behind a thin, interface-typed adapter. As a customer, the orchestration layer never changes when you switch providers (or run two in parallel) — it's tenant configuration, not a code release.

What this gives you

  • Vendor-independence — swap Amadeus for Hotelbeds without changing how cases or policies behave.
  • Sandbox parity — sandbox tenants run against limited sandbox providers, so you exercise the entire pipeline with no live credentials.
  • Graceful degradation — a failing provider is disabled per tenant; traffic shifts to the surviving providers without operator action.

Provider categories

CategoryDefault providersSandbox
Hotel inventoryAmadeus, Hotelbeds, Direct contractsLimited GDS (synthetic inventory)
Hotel bookingAmadeus, Hotelbeds, Direct contractsLimited GDS
Email / vouchersSendGrid (per-tenant sub-user)Limited delivery channel — captures sends in audit
PaymentPer-tenant PSPLimited PSP — deterministic tokens
Ground transportPer-tenant transport partnerLimited transport
AI agents (exception agent, policy synthesizer)Nexa Trained Models on GoogleDisabled — toggle on per tenant
Flight disruption predictorNexa Trained Model on GoogleDeterministic baseline used as fallback

Enabling / disabling providers

Tenant admins toggle providers in the operations console under Settings → Providers. Each toggle picks both the search strategy and the failover order:

  • merge-all — every provider runs in parallel, results are deduplicated (default).
  • first-success — providers run in priority order; stop after the first non-empty result.

Booking is always single-provider per reservation (the provider that surfaced the selected offer), so there is no booking strategy flag.

Provider selection at allocation time

The allocator selects the cheapest offer per deduplicated hotel. With direct contracts in the mix, the tiebreaker prefers contracts because:

  • Rate is locked (no surprise at check-in).
  • Inventory update is instantaneous (Nexa decrements its own count).
  • The savings-vs-market field gives finance a clean report.

Rate limits and backoff

Every provider adapter honors the vendor's rate limit and retries on transient errors:

ProviderRate limit handlingRetry on
Amadeus1 req/sec soft, OAuth token refresh before expiry401, 429, 5xx
HotelbedsHMAC-signed per request; per-minute caps429, 5xx
SendGridper-second/per-day quotas429, 5xx

Retries are bounded (default: 3 attempts, exponential backoff 1s→4s). Permanent errors bubble up immediately.

Observability

Every provider call is logged with:

  • Correlation ID (traces through the queue)
  • Provider name + endpoint
  • Duration + status
  • Idempotency key

Per-tenant Grafana dashboards (provider call volume, latency, error rate) are available on request.

Where to go next

Hotel GDS, booking, and email integrations (Amadeus, Hotelbeds, SendGrid) are configured by the Nexa team during tenant onboarding. Talk to support@nexa.ai when you're ready to wire production credentials.

Was this helpful?