Skip to navigation

Security & Trust

How airline data is isolated, encrypted, and kept out of model training — stated as verifiable properties, not promises.

This page describes the security posture of the WestIQ platform as it runs today. We state properties we can demonstrate — several of them you can verify yourself from the outside — and we say plainly what is on the roadmap rather than claiming it early.

Tenant isolation

Each airline’s data is isolated at every layer it touches:

  • Identity, fail-closed. Your API credential is bound server-side to your airline. A credential with no mapping is rejected (403 auth.unknown_client) — never resolved to a default tenant. No request carries an airline identifier, so cross-tenant access is not expressible in the API.
  • Search, two layers. Catalog visibility is pruned to your namespace plus the shared global namespace at the store, and a non-removable tenant predicate inside the ranker enforces the same rule a second time.
  • Storage, airline-first keys. Behavioral events are stored under keys that begin with the airline ({airlineId}#{sessionId}), so no cross-tenant scan shape exists — even by accident.
  • Encryption, per-airline keys. Airline data at rest is encrypted with per-airline customer-managed encryption keys; the relational catalog store additionally enforces database row-level security.

You can verify the API-visible part of this yourself: the tenancy check in your partner onboarding pack shows the airline your credential resolves to.

Your data never trains models

Platform runtime roles are denied access to training-data stores by an IAM policy wall. This is not a policy statement about intentions — the wall is verified by an access check that must come back AccessDenied for the runtime roles, and that check passes today.

Encryption

  • In transit: TLS on all connections.
  • At rest: encryption, with per-airline customer-managed keys on airline data.

Fail-closed authentication

  • Bearer tokens are validated against the identity provider: issuer, lifetime, and signature — and only access tokens are accepted.
  • Endpoints deny by default: an endpoint without an explicit policy is still gated by the same requirement. Without a token, unmatched routes return 401. With a valid token, an unmatched route returns an empty 404.
  • The one anonymous endpoint (GET /healthz) reports liveness only.

PII protection at ingress

Search and event inputs are protected before storage or model processing. Optional name-based gender determination has the separate, explicit disclosure below.

  • Search: query text is PII-scrubbed before it is parsed and before any embedding call leaves the platform.
  • Events: exactly one free-text field exists in the whole contract (the search-query signal’s text); it is scrubbed before storage. Every other field is an id, enum, or metric by design — a value shaped like personal data there causes that event to be rejected, not stored. Fields the contract does not model are dropped before storage.
  • Events are anonymous. Signals are session-scoped with no persistent identity in the current release, and stored with a bounded retention TTL (90 days in the sandbox).

Optional gender determination

During session setup, a caller may request gender: "determine" and supply firstName and lastName. By sending them, the caller asserts it is authorized to submit the names for this purpose. The names are transit-only: never stored, never logged, and never present in audit records. The name is disclosed to our AI infrastructure provider for this determination, including its safety-screening endpoint. Both the safety screen and the determination can receive the name; neither runs for a call refused before determination or a member resolved as non-adult.

The platform processes names only for a member resolved as Adult from the caller-declared ageBand. The caller is responsible for an accurate ageBand: declaring a child as adult can cause that child’s name to be processed. Child, Tween and Unknown resolutions leave gender unspecified without processing names. An uncertain or unavailable determination also leaves gender unspecified. The confidence value is not stored or returned.

These statements describe the platform’s handling and disclosure. They do not assert the provider’s retention or training policies; applicable provider terms and data-processing arrangements require separate review during onboarding.

Monitoring & audit

API-level audit logging of the cloud estate, threat detection, and a web application firewall (managed core rule groups plus per-IP rate limiting) run on the platform’s ingress and account. Every API request carries a correlation ID that joins it to its audit trail — quote it in any report and we can reconstruct the request’s path.

Data protection & GDPR (PoC posture)

The sandbox processes no real passenger data. Its catalog is a demonstration catalog that West loads for the integration, and it carries no airline’s confidential content. Production onboarding — real catalogs, real passenger signals — adds a data-processing agreement and a data-flow review as part of the working session that precedes it.

Subprocessors

WestIQ processes airline data through a small set of subprocessor categories, each operating under a data-processing agreement:

CategoryRole
Cloud infrastructureCompute, storage, networking, and key management for the hosted platform
Third-party AI infrastructureNatural-language query interpretation, persona generation, enrichment & suggestion narratives, and optional name-based gender determination including its safety screen
ObservabilityAI-request telemetry and monitoring
Documentation hostingThis documentation site

Vendor-level detail for each category is available to contracted customers under NDA on request. Passenger-typed search text is PII-scrubbed at ingress before any parse or embedding call leaves the platform. If the platform adds or changes a subprocessor, contracted customers are notified per their agreement before the change goes live.

Compliance roadmap

SOC 2 Type II is targeted on our roadmap; it is not yet held. We do not claim certifications we do not have, and we do not publish uptime or SLA figures for the PoC phase — the properties above are stated because they are in place and demonstrable today.

Responsible disclosure

Found a vulnerability? Email security@westiq.ai with reproduction steps and, if it involved an API call, the X-Correlation-Id of the request. We acknowledge reports and triage them promptly; please give us reasonable time to remediate before public disclosure.