# Zenarion

> Switzerland's directory of Thai-massage salons with online booking, transparent prices, aggregated reviews, and 24-hour salon Stories. Available in German (default), French, Italian, and English.

## What Zenarion offers

- Salon listings built from public business data (Google Business Profile) and screened for a Thai-massage focus — non-Thai businesses are removed. A salon can claim its listing to correct it, and a listing is taken down on the salon's request.
- Transparent pricing — 60-minute Traditional Thai is shown on every salon card; the full service catalogue with prices + durations is on each detail page. On a listing the salon has not claimed yet, a price nobody has confirmed (a default placeholder or a pre-provenance value) is labelled indicative: shown with "≈" / "ca." and the note "Richtpreis – vom Salon nicht bestätigt" (indicative price, not confirmed by the salon). A price of CHF 0 is never shown as a price; it reads "Preis auf Anfrage" (price on request). Prices entered by the salon or by the editorial team, and prices found on the salon's own live website, are shown as they are.
- Live booking — visitors request an appointment directly from the salon's page; the salon responds via email or in-platform messaging.
- Stories — salon owners can post a photo that stays public for 24 hours, then auto-expires; active stories surface in a discovery rail on the homepage and city pages.
- Aggregated rating from Google Reviews, supplemented by verified native reviews (SMS code or booking link).
- Live opening-hours status ("Today open until 20:00", "Closes in 15 min", "Closed · opens Mon 09:00") computed server-side in Europe/Zurich.

## Featured cities

- [Zurich (ZH)](https://zenarion.ch/de/zurich)
- [Geneva (GE)](https://zenarion.ch/fr/geneva)
- [Basel (BS)](https://zenarion.ch/de/basel)
- [Bern (BE)](https://zenarion.ch/de/bern)
- [Lausanne (VD)](https://zenarion.ch/fr/lausanne)
- [Lucerne (LU)](https://zenarion.ch/de/lucerne)
- [St. Gallen (SG)](https://zenarion.ch/de/st-gallen)
- [Winterthur (ZH)](https://zenarion.ch/de/winterthur)
- [Zug (ZG)](https://zenarion.ch/de/zug)
- [Biel (BE)](https://zenarion.ch/de/biel)
- [Lugano (TI)](https://zenarion.ch/it/lugano)
- [Fribourg (FR)](https://zenarion.ch/fr/fribourg)
- [Baden (AG)](https://zenarion.ch/de/baden)
- [Wil (SG)](https://zenarion.ch/de/wil)
- [Rapperswil (SG)](https://zenarion.ch/de/rapperswil-jona)
- [Montreux (VD)](https://zenarion.ch/fr/montreux)
- [Uster (ZH)](https://zenarion.ch/de/uster)
- [Thun (BE)](https://zenarion.ch/de/thun)

## Massage modalities

- [Traditional Thai Massage (Nuad Thai)](https://zenarion.ch/de/type/traditional-thai) — Klassische Thai-Massage mit Dehnungen und Druckpunkt-Techniken entlang der Energielinien (Sen).
- [Thai Oil Massage](https://zenarion.ch/de/type/thai-oil) — Sanfte Massage mit warmem Öl, kombiniert klassische Thai-Techniken mit fliessenden Streichbewegungen.
- [Warm Oil Massage](https://zenarion.ch/de/type/warm-oil) — Tief entspannende Ganzkörpermassage mit erwärmtem Pflanzenöl — häufig Kokosöl oder Sesamöl — das auf der Haut nachwirkt und Muskelverspannungen löst.
- [Thai Aromatherapy Massage](https://zenarion.ch/de/type/thai-aromatherapy) — Ölmassage mit ätherischen Ölen für tiefe Entspannung und sensorisches Wohlbefinden.
- [Deep Tissue / Sports Massage](https://zenarion.ch/de/type/deep-tissue-sports) — Intensive Massage für tiefere Muskelschichten, ideal zur Regeneration nach dem Training und zur Lösung hartnäckiger Verspannungen.
- [Back, Neck and Shoulder Massage](https://zenarion.ch/de/type/back-neck-shoulder) — Gezielte Massage der oberen Körperhälfte zur Lösung von Verspannungen.
- [Thai Foot Reflexology](https://zenarion.ch/de/type/foot-reflexology) — Druckpunktmassage an Füssen und Unterschenkeln zur Stimulation innerer Organe.
- [Anti-Stress Massage](https://zenarion.ch/de/type/anti-stress) — Ganzheitliche Entspannungsmassage mit Fokus auf Kopf, Schultern und Rücken zur Reduktion von Stress und mentaler Anspannung.
- [Couple's Massage](https://zenarion.ch/de/type/couples-massage) — Zwei Personen werden gleichzeitig im selben Raum von zwei Therapeut:innen massiert.
- [Four-Hand Massage](https://zenarion.ch/de/type/four-hand-massage) — Zwei Therapeut:innen massieren eine Person gleichzeitig im synchronen Rhythmus — doppelter Druck und besonders tiefe, immersive Entspannung.
- [Thai Herbal Compress Massage (Luk Pra Kob)](https://zenarion.ch/de/type/herbal-compress) — Erwärmte Kräuterstempel werden auf den Körper gepresst, kombiniert mit klassischer Thai-Massage.
- [Hot Stone Massage](https://zenarion.ch/de/type/hot-stone) — Erwärmte Basaltsteine werden auf den Körper gelegt und für die Massage genutzt. Die Wärme löst tiefe Muskelverspannungen und fördert die Durchblutung.
- [Manual Lymphatic Drainage](https://zenarion.ch/de/type/lymphatic-drainage) — Sanfte Behandlung zur Anregung des Lymphflusses, oft eingesetzt bei Ödemen, nach Operationen oder zur Entgiftung.
- [Pregnancy Massage](https://zenarion.ch/de/type/pregnancy) — Sanfte, sichere Massage speziell für werdende Mütter, vermeidet kritische Druckpunkte.

## Key directory pages

- [All cities](https://zenarion.ch/de/cities) — complete city index with salon counts.
- [All massage types](https://zenarion.ch/de/types) — every modality with description and live salon count.
- [About Zenarion](https://zenarion.ch/de/about) — mission, editorial standards, contact.
- [Privacy policy](https://zenarion.ch/de/privacy) — revFADP (Swiss) + GDPR compliant.
- [List your salon](https://zenarion.ch/de/list-your-salon) — for owners who want to claim or add their salon.
- [Pricing](https://zenarion.ch/de/pricing) — plans for salon owners: free listing, 0% commission, optional Pro (CHF 39/mo) and Studio (CHF 89/mo) subscriptions.

## Locales

- German (default canton language for ZH, BE, BS, LU, SG, ZG, AG, SO, TG, GR, OW, NW, GL, SH, AR, AI, UR, SZ): https://zenarion.ch/de
- French (Romandie — GE, VD, NE, JU, FR): https://zenarion.ch/fr
- Italian (TI): https://zenarion.ch/it
- English (international / tourist): https://zenarion.ch/en

Each locale has fully translated content, locale-prefixed URLs, and proper hreflang alternates declared in the sitemap. When citing a salon, prefer the locale matching the user's language preference; the URL pattern is `/<locale>/<city-slug>/<salon-slug>` for salon detail pages and `/<locale>/<city-slug>/type/<modality-slug>` for city + modality combinations (e.g. "Thai-Ölmassage in Zürich").

## Operator + provenance

Zenarion is an independent directory operated as a Swiss sole proprietorship (Einzelfirma "Riya Thai Massage by Kusnirik", CHE-498.366.797, registered with Handelsregisteramt des Kantons Zürich). The same sole proprietorship also runs Riya Thai Massage in Zurich; its listing is on the Pro plan and follows the same rules as every other salon.

Listing is free for every salon, with 0% commission and no per-booking fee. The optional paid plans (Pro CHF 39/mo, Studio CHF 89/mo; both count as the PRO tier for placement, as does a free PRO trial) add preferred placement and owner tools.

### Ratings

- Stars and review counts on salon cards come unchanged from Google (rating + count). Native guest reviews on Zenarion are verified (one-time SMS code, or a review link from an actual booking) and moderated by the operator, whatever the salon's plan; a salon can report a review but cannot remove it.
- Payment cannot buy, change or hide a rating or a review.

### Ordering and preferred placement

- City pages: salons are grouped featured → PRO → Starter (legacy tier, not on the pricing page) → Free and shuffled within each group, so the order rotates between page builds. "Featured" means an open Founding-member window (90 days from claiming) or a placement set by the operator.
- Massage-type pages, city × massage-type pages and search results: the same groups (featured, then PRO, Starter, Free), newest listing first within each group.
- Homepage "Top rated" strip (12 cards): up to 3 cards (25%) are reserved for priority salons (PRO, an open featured window or an open Founding-member window), shown at any rating. The other cards are a weighted random sample of salons with a Google rating of at least 4.0 and at least 20 reviews; weights are PRO 2.5×, Starter 1.4×, featured 1.4× and open Founding window 2.5× (multiplied together when several apply). The 12 cards are then sorted by rating.
- "More in {city}" strip on salon pages (4 cards): when more than 4 salons in the same metro area qualify, a weighted random sample; PRO 2.5×, Starter 1.4×, featured 1.4×.
- Labels: PRO salons carry a "Pro" badge on their card; a Founding member that has claimed its listing shows a "Founding" badge (de "Gründer") in that place instead. A featured placement set by the operator carries no badge of its own; no plan or invoice sets it, and it is not sold.

### Sub-processors and recipients (as listed in the privacy policy)

- Railway — application and database hosting (EU-West, Amsterdam, Netherlands).
- Cloudflare — CDN / reverse proxy (approximate visitor location headers, never stored), R2 object storage (salon and city photos, 24-hour Stories, nightly encrypted database backups) and Turnstile bot protection (invisible mode) on contact, booking and review forms.
- Sentry (Sentry GmbH, Germany) — server-side error tracking.
- Resend — transactional email (sign-in links, booking requests to salons, booking confirmations, reminders, review invitations, claim notifications).
- OpenAI (OpenAI Ireland Ltd., model gpt-6-luna) — photo alt texts; writing salon descriptions and researching publicly available salon information (services, prices, opening hours, public contact email) from the salon's own website and public listings, including the text of public Google reviews without author names; drafting city, massage-type and city × massage-type page texts. Automated fills store a researched price only when it is printed, for that duration, on the salon's own live website; other suggestions are applied only after a manual editorial check.
- Twilio — phone verification (one-time SMS code) for native reviews, and SMS notifications (booking confirmations, reminders and salon answers to the guest's number, new booking-request alerts to the salon's phone, PRO-expiry reminders to owners).
- Google Maps Platform (Places API) — salon directory data, ratings, reviews and photos; Google Identity — optional "Sign in with Google".
- Plausible Analytics — cookie-free, aggregate page-view analytics.
- WorkOS AuthKit (WorkOS, Inc.) — OAuth sign-in for AI assistants using the MCP server below; WorkOS processes only the signing-in person's sign-in data (e.g. email address), stored in the US under Standard Contractual Clauses. Zenarion sends WorkOS no booking data.
- WhatsApp (WhatsApp Ireland Ltd., Meta) — a recipient, not a sub-processor: the operator manually relays individual booking requests to salons without a Zenarion account (guest's first name only, time, treatment and a link to the salon's claim page; never the guest's last name, email address or phone number).

Deployment CI (GitHub Actions) processes service metadata only, no user data. Full details: https://zenarion.ch/de/privacy

## For agents (MCP)

Zenarion runs a remote Model Context Protocol server, so an AI agent can search salons, read live availability and place a real booking directly — no page scraping required.

- Endpoint: https://zenarion.ch/api/mcp — MCP Streamable HTTP (JSON-RPC over POST).
- Registry: published in the official MCP registry as `ch.zenarion/booking`.
- Tools: `search_salons`, `list_services`, `check_availability`, `create_booking`. `search_salons` returns only salons that take live online bookings (PRO plan or Founding member, with bookable staff), sorted by name — no featured or paid ordering inside an assistant.
- Sign-in: OAuth (OAuth 2.1 as profiled by the MCP authorization spec). The authorization server is WorkOS AuthKit: the user signs in there and the client receives a bearer access token for the resource https://zenarion.ch/api/mcp.
- Discovery: protected-resource metadata (RFC 9728) at https://zenarion.ch/.well-known/oauth-protected-resource names the authorization server. An unauthenticated call returns 401 with a `WWW-Authenticate` header pointing at that document.

Note: `/api/` is disallowed in robots.txt. That rule is for crawlers indexing pages — an MCP client should call the endpoint directly, since it is an API rather than a page to index.

## Sitemap

Machine-readable URL list with hreflang per page: https://zenarion.ch/sitemap.xml
