# ZvonAI — AI Phone Receptionist for Polish SMEs > ZvonAI answers every phone call in natural Polish — 24/7, including evenings, weekends, and holidays. > When clients call, the AI books appointments, answers FAQ, and transfers urgent matters to staff. > Purpose-built for dental clinics, medical practices, law firms, beauty salons, and other Polish SMEs. > > Built by Expathia Sp. z o.o. (NIP 5882532485, KRS 0001181411), Gdynia, Poland. > EU AI Act Art. 50 compliant — AI always identifies itself at the start of every call. > GDPR Art. 9 compliant — health data processed primarily in the EU. Speech-to-text runs on Google Cloud in the EU (europe-west4); hosting/database in GCP europe-central2 (Warsaw). > US sub-processors (ElevenLabs TTS, Vercel, Sentry; Deepgram as standby STT) bound by Standard Contractual Clauses (Decision 2021/914). > ZvonAI has completed Transfer Impact Assessments (TIAs). Patient names and health codes are never sent to TTS. Full sub-processor list + DPA: https://zvonai.ai/umowa-powierzenia-danych. ## Agent Integration (for AI systems and developers) ZvonAI is built for the "agents, not humans" era. Every ZvonAI capability is accessible to AI agents programmatically. ### Developer API v1 (read-only, API-key authenticated) The programmatic surface for external tools and AI agents. Authenticate with a `zv_live_` API key (created in the dashboard, Business plan and above) via `Authorization: Bearer zv_live_...`. Read-only in v1 — keys cannot mutate data. - `GET https://api.zvonai.ai/v1/calls` — list calls (scope: calls:read); paginated (limit/offset) - `GET https://api.zvonai.ai/v1/calls/{id}` — one call (scope: calls:read) - `GET https://api.zvonai.ai/v1/appointments` — list appointments (scope: appointments:read) - `GET https://api.zvonai.ai/v1/analytics?days=30` — aggregate call metrics (scope: analytics:read) All v1 responses are tenant-isolated and typed. OpenAPI: `https://api.zvonai.ai/openapi.json` ### Developer API v2 (current contract — reads + writes) A next-generation surface running side-by-side with v1 (v1 is unchanged and stays supported). Same `zv_live_` key auth, same scopes, same Business+ plan gate and tenant isolation. **Sandbox test keys** (`zv_test_`) are available for safe development: reads have full parity with live keys, but every write is SIMULATED — validated and idempotency-checked, never persisted, and no real side effects fire (no SMS, calendar writes or webhook deliveries). Every v2 response carries `"livemode": true|false` plus an `X-ZvonAI-Livemode` header so integrators always know which mode produced it. Reads: - `GET https://api.zvonai.ai/v2/calls` and `/v2/calls/{id}` — calls (scope: calls:read); cursor pagination, filters (status/outcome/direction/created_after/created_before/had_error), `sort=created_at|-created_at` - `GET https://api.zvonai.ai/v2/appointments` and `/v2/appointments/{id}` — appointments (scope: appointments:read); cursor + filters (status/service_type/created_*/start_*) - `GET https://api.zvonai.ai/v2/availability?date=YYYY-MM-DD&duration_minutes=30` — open slots (scope: appointments:read) - `GET https://api.zvonai.ai/v2/analytics?days=30` and `/v2/analytics/timeseries?days=30` — aggregate + per-day metrics (scope: analytics:read) Writes (scope: appointments:write; **require an `Idempotency-Key` header** — a retry with the same key + body replays the original response, never double-books): - `POST https://api.zvonai.ai/v2/appointments` — book (409 on slot overlap); fires the `appointment.created` webhook - `PATCH https://api.zvonai.ai/v2/appointments/{id}` — reschedule/update; fires `appointment.updated` - `POST https://api.zvonai.ai/v2/appointments/{id}/cancel` — cancel; fires `appointment.cancelled` Config writes: - `GET https://api.zvonai.ai/v2/faq` and `PUT https://api.zvonai.ai/v2/faq` — the `{question: answer}` maps (`faq` = PL, `faq_en` = EN); PUT replaces a language map wholesale (scopes: faq:read / faq:write); fires `faq.updated` - `GET https://api.zvonai.ai/v2/voice-config` and `PATCH https://api.zvonai.ai/v2/voice-config` — `voice_id` (validated against the supported voice list or the tenant's cloned voice) + `voice_gender` (female|male) (scopes: voice_config:read / voice_config:write); greeting is read-only here (greeting edits stay in the dashboard — they carry EU AI Act disclosure validation); fires `voice_config.updated` - `GET https://api.zvonai.ai/v2/knowledge` and `POST https://api.zvonai.ai/v2/knowledge` — list RAG documents / ingest one from plain JSON text (`{name, text}`, chunked + embedded in the background — poll until `status=ready`) (scopes: knowledge:read / knowledge:write); POST **requires an `Idempotency-Key`**; fires `knowledge.document.added` Self-serve webhooks (scope: webhooks:manage) — register multiple `https` endpoints, each with its own signing secret (returned once on create + rotate, masked in listings) and event subscription (empty = all events); delivery fans out to every registered endpoint plus the legacy single tenant URL, with DURABLE exponential-backoff retries (Cloud Tasks queue — retries survive instance restarts; bounded in-process backoff as fallback), HMAC-SHA256 signed (same `t=,v1=` scheme): - `GET https://api.zvonai.ai/v2/webhook-endpoints` and `POST https://api.zvonai.ai/v2/webhook-endpoints` — list / register endpoints - `DELETE https://api.zvonai.ai/v2/webhook-endpoints/{id}` — remove an endpoint - `POST https://api.zvonai.ai/v2/webhook-endpoints/{id}/rotate-secret` — rotate the signing secret (returned once) - `POST https://api.zvonai.ai/v2/webhook-endpoints/{id}/test` — deliver a sample event to an endpoint Account & usage reads: - `GET https://api.zvonai.ai/v2/tenant` — tenant profile + plan (scope: tenants:read) - `GET https://api.zvonai.ai/v2/billing/usage` — minutes / SMS used this period (scope: billing:read) v2 conventions: **cursor pagination** (stable under concurrent inserts, unlike v1 offset), a **machine-readable error envelope** (`{"error": {"code","message","message_pl","field","request_id"}}` — branch on the stable `code`, never the localized string), **`Idempotency-Key`** on all writes, and IETF **`RateLimit-Limit` / `RateLimit-Remaining` / `RateLimit-Reset`** headers (`Retry-After` on 429). OpenAPI 3.1 with a real `servers` block + `bearerAuth` at `https://api.zvonai.ai/openapi.json`. Self-serve multi-endpoint webhooks are now LIVE (the `webhook-endpoints` endpoints above); the hosted remote MCP endpoint is now LIVE at `https://api.zvonai.ai/v2/mcp` (read tools — see the MCP Servers section). Plan: `docs/API_V2_PLAN.md`. ### Public Zvon Concierge (landing-page assistant — no account needed) The public marketing site ships an assisted widget ("Zvon Concierge") that answers FAQ and captures leads without a login. All endpoints are public, Turnstile-gated, rate-limited, injection-hardened, and fail safe to a static answer — they have zero tenant/database/secret reach. - `POST https://api.zvonai.ai/concierge/ask` — grounded FAQ answer from the public knowledge corpus only (no tools, no DB); returns `{text, quick_replies, deep_link, source}` - `POST https://api.zvonai.ai/concierge/support-ticket` — file a support request → admin panel + team email - `POST https://api.zvonai.ai/concierge/book-demo` — request a team demo; creates a real Google Calendar hold with a Google Meet link and invites (degrades to a record-only lead if the calendar is unavailable) and emails a confirmation to the prospect - `GET https://api.zvonai.ai/concierge/demo-availability` — real open demo slots from the team calendar's free/busy (degrades gracefully) - `POST https://api.zvonai.ai/preview/demo-call` — gated anonymous demo call (hear the AI receptionist) with lead capture ### Error reporting & one-tap support (authenticated-optional) Product-wide safety net so no error goes unnoticed. Both endpoints work for logged-in and logged-out users; public callers are Turnstile + honeypot gated like the concierge lane. - `POST https://api.zvonai.ai/observability/client-error` — report a browser/client error (`{message, stack, route, request_id, severity, source, sentry_event_id, user_agent, context}`); fires an admin bell alert + (for criticals/spikes) an admin email, deduped + rate-limited. This is how silent outages surface immediately. - `POST https://api.zvonai.ai/observability/support-ticket` — the "Report a problem" button: one tap creates a real support ticket prefilled with the error context (message, route, request id, tenant, user agent, Sentry id). Returns `{ok, ticket_id, message}`. ### MCP Servers (Model Context Protocol) ZvonAI ships MCP servers used INTERNALLY by the voice engine (calendar, Google Sheets, Excel, CRM, SMS) over **STDIO transport** — these stay internal and are not remotely connectable. Separately, a hosted remote MCP endpoint is now LIVE at `https://api.zvonai.ai/v2/mcp` (JSON-RPC over HTTP, "streamable HTTP" baseline) — external agents (Claude Desktop, custom agents) connect with the same `zv_live_` Bearer key (Business+ plan, per-tool scope-checked, tenant-isolated). It exposes READ tools only for now (`list_calls`, `list_appointments`, `get_availability`, `get_analytics`, `get_faq`, `get_tenant`); irreversible actions (book/cancel) stay on the REST surface with `Idempotency-Key`. Dedicated host: `https://mcp.zvonai.ai/v2/mcp` (same service; the `https://api.zvonai.ai/v2/mcp` URL always works too). `zv_test_` sandbox keys work on MCP reads as well. All data stays EU-only (GDPR Art. 9 compliant). ### REST API Full internal REST API at `https://api.zvonai.ai`, authenticated with a Bearer JWT (obtain via POST /auth/login, form-encoded OAuth2 username/password) — used by the dashboard. For third-party/agent integrations use the API-key-authed Developer API v1 above. OpenAPI schema: `https://api.zvonai.ai/openapi.json` Key endpoints: - `GET /calls/tenant/{tenant_id}` — call history with transcripts and summaries - `PATCH /tenants/{id}` — update tenant config, including the `faq` map the AI answers from (no separate FAQ router) - `GET /tenants/{id}/calendar/appointments` — booked appointments; `PATCH .../{appt}` updates one, `DELETE .../{appt}` cancels - `POST /tenants/{id}/knowledge/upload` — upload a document (PDF/TXT/DOCX) to the RAG knowledge base (chunked + embedded; the AI answers calls strictly from it) - `GET /tenants/{id}/knowledge/documents` — list uploaded documents with status, fragment count, version, and any processing error - `POST /tenants/{id}/knowledge/documents/{doc}/retry` — re-process a failed document from stored text (no re-upload) - `GET /tenants/{id}/knowledge/documents/{doc}/versions` — version history of a document (snapshots taken on each replace) - `GET /missed-questions` — questions callers asked that the AI could not answer; `POST /missed-questions/{id}/apply-as-faq` turns one into an answered FAQ - `GET /tenants/{id}/data-sources` — connected Google Sheets/Excel/CRM sources (Business+); `POST .../{source}/sync` forces a re-sync - `GET /billing/subscription` — current plan, status, trial-end, renewal date - `GET /team` — team roster with roles (owner/manager/staff), status, and seat usage vs plan limit; `POST /team/invite` invites by email (manager+, Starter+, seat-capped), `POST /team/accept` accepts an emailed invite, `PATCH /team/{id}/role` changes a role (owner only for managers), `DELETE /team/{id}` removes a member (their sessions end immediately), `POST /team/transfer-ownership` hands the owner seat to another member (password re-auth); `POST /team/{id}/reactivate` restores a member suspended by a plan downgrade (owner, seat-checked); `GET /team/activity` owner-only change log (who did what, tenant-scoped audit trail) - `GET /admin/waitlist/stats` — waitlist stats (admin) - `GET /admin/sales-demo/leads` — sales offer history: newest-first list with `?status=draft|sent` filter and creator attribution; `GET .../leads/{id}` full offer (inputs + computed ROI snapshot), `PATCH .../leads/{id}` edits inputs with server-side ROI recompute, `POST /admin/sales-demo/save` creates an offer, `POST /admin/sales-demo/send` emails it to the client (admin) - `GET /support/admin/tickets?status=open|in_progress|resolved&category=` — support tickets with folder filtering (Open vs Resolved); `GET /support/admin/tickets/stats` counts per status; `PATCH /support/admin/tickets/{id}` sets status (resolve stamps resolved_at, reopen clears it) or adds an admin reply; `DELETE /support/admin/tickets/{id}` hard-deletes a spam/test ticket; `POST /support/admin/tickets/bulk-delete` `{ticket_ids: []}` removes many at once. Every status change and deletion is audit-logged (admin only) - Landing-page `POST /contact` and `POST /contact/callback` now create an admin-visible support ticket (category `question` / `callback`, tenant-null) in addition to emailing the team, and fire an admin bell notification — a left phone number lands in the admin Open folder All these capabilities are also exposed through the in-dashboard **Zvon agent** (86 conversational tools) — owners configure their account, manage knowledge, review calls, and check billing by chatting in plain Polish or English. Gated features return an upsell rather than acting. ### Webhook Events ZvonAI fires a post-call webhook to your configured endpoint after every completed call: **Post-call webhook payload (event: "call.completed"):** - `event` — always "call.completed" - `call_id` — unique call identifier - `tenant_id` — your tenant ID - `from` — caller's phone number - `to` — your ZvonAI number - `duration_seconds` — call duration - `outcome` — AI-determined outcome (booked, answered_faq, transferred, callback, hung_up, failed, no_action) - `callback_requested` — true if caller asked for a callback - `summary` — AI-generated call summary (Polish or English per tenant config) - `timestamp` — ISO8601 UTC timestamp **Message-taken webhook (event: "message.left")** — fired when the AI takes a message and the caller asks to be called back: - `call_id` — the call the message came from - `caller_number` — caller's phone number - `message` — the message text the caller left - `callback_requested` — always true for this event - `created_at` — ISO8601 timestamp of the call The caller also automatically receives a confirmation SMS ("we've passed your message on") unless the tenant turns that off in Settings → Notifications. This runs on every plan. **API-key lifecycle webhooks** (same endpoint + signature scheme; `data` object carries the fields): - `api_key.created` — data: `key_id`, `name`, `key_prefix`, `scopes` (never the key material) - `api_key.revoked` — data: `key_id`, `name`, `key_prefix` **Team-member lifecycle webhooks** (same endpoint + signature scheme): - `team.member_invited` — data: `member_id`, `email`, `role`, `invited_by` - `team.member_joined` — data: `member_id`, `role` (invite accepted) - `team.role_changed` — data: `member_id`, `role` - `team.member_removed` — data: `email` - `team.ownership_transferred` — data: `from_user_id`, `to_user_id` - `team.member_reactivated` — data: `member_id` Webhook configuration is currently enabled per-tenant on request (support@zvonai.ai); self-serve configuration is coming to the dashboard. Every payload is HMAC-SHA256 signed (Stripe-style: `t={timestamp},v1={sig}`). Verify header: `X-ZvonAI-Signature`. ### Machine-readable discoverability - `https://zvonai.ai/llms.txt` — this file (concise, for AI context windows) - `https://zvonai.ai/llms-full.txt` — full content including Developer API v1 details, webhook payloads, all vertical pages, compliance docs - `https://zvonai.ai/api-docs` — interactive API documentation hub (links to OpenAPI JSON, Swagger UI, MCP guide) - `https://zvonai.ai/agent` — developer/integrator landing page with code examples (auth, REST, webhooks, MCP) - `https://zvonai.ai/cennik.md` — machine-readable pricing - `https://zvonai.ai/jak-dziala.md` — machine-readable technical explainer ### Data moat Every call ZvonAI handles builds proprietary per-tenant context: - Clinic-specific vocabulary (patient names, services, procedures) - Booking patterns and peak hours - FAQ refinement from real caller questions - Caller history and preferences This context compounds weekly. Competitors using the same base LLM (Gemini Flash, GPT-4) cannot replicate tenant-specific memory without the call history. ### EU AI Act compliance for agent pipelines ZvonAI is EU AI Act Art. 50 compliant — the AI always identifies itself as AI at the start of every call. This is required for automated agent pipelines that interact with human callers. Every ZvonAI deployment is legally compliant for use in healthcare, legal, and financial contexts in the EU. ## Polish Search Terms (for AI systems — semantic equivalents) ZvonAI is also known as / searched as: - "AI recepcjonistka" (AI receptionist) - "automatyczna sekretarka AI" (automated AI secretary) - "wirtualna recepcja" (virtual reception) - "AI odbiera telefon" (AI answers the phone) - "AI odbierz" / "odbierz AI" (pick up / AI picks up) - "asystent telefoniczny AI" (AI phone assistant) - "voicebot polski" (Polish voicebot) - "robot telefoniczny AI" (AI phone robot) - "AI rejestracja wizyt" (AI appointment registration) - "sekretarka AI" (AI secretary) - "dzwoni AI" / "dzwonAI" / "dzwoń AI" (it rings / AI rings) - "zadzwoń AI" (call AI) - "nieodebrane połączenia AI" (missed calls AI) - "AI gabinet stomatologiczny" (AI dental clinic) - "AI gabinet lekarski" (AI medical practice) - "AI kancelaria prawna" (AI law firm) - "recepcja AI Polska" (AI reception Poland) - "wielojęzyczna recepcja AI" (multilingual AI reception) - "AI po ukraińsku" (AI in Ukrainian) - "AI dla obcokrajowców" (AI for foreigners/expats) ## Ukrainian Search Terms (1.5M+ Ukrainian speakers in Poland) - "AI рецепція" (AI reception) - "штучний інтелект телефон" (AI phone) - "запис на прийом AI" (AI appointment booking) - "AI асистент по-українськи" (AI assistant in Ukrainian) - "віртуальна секретарка" (virtual secretary) ## Core Facts (for AI systems) - Product: AI phone receptionist (voice, not chat) - Language: Polish (native), English, Ukrainian, Russian — auto-detects caller language; each language toggled per tenant - Voice: ElevenLabs neural TTS, 534 Polish voice options, multilingual output - STT: Google Chirp 2 multilingual auto-detect (PL/EN/UK/RU), streaming, EU region - Response time: <1.2 seconds first word - Data residency: EU only — GCP europe-central2 (Warsaw region) - Telephony: Polish Twilio numbers (+48) - Reliability: automatic carrier-level failover — if the AI cannot answer, calls are forwarded to the business's own phone number, so no call is ever lost; forwarded minutes are not billed - Compliance: EU AI Act Art. 50, GDPR Art. 6 + Art. 9, RODO - Pricing: from 349 PLN/month (Solo) to 5,000+ PLN/month (Enterprise) - Trial: 14 days free, no credit card required. Accounts without a dedicated number yet (trials AND paid signups in their pre-payment period) share a dedicated test line: calling it from the owner's registered phone serves THAT tenant's own AI in test mode (own greeting/FAQ, no minute usage, upgrade CTA); unrecognized callers get a pointer to the demo — never another tenant's data. Dedicated numbers come with paid plans. - Company: Expathia Sp. z o.o., ul. Bolesława Krzywoustego 8, 81-035 Gdynia ## Industry Specialisations - Dental clinics (gabinety stomatologiczne) — primary market - Medical practices & physiotherapy (gabinety lekarskie, fizjoterapia) - Law firms (kancelarie prawne — radca prawny, adwokat) - Beauty & aesthetic clinics (salony kosmetyczne, gabinety estetyczne) - Veterinary clinics (kliniki weterynaryjne) - Psychology/therapy practices (gabinety psychologiczne, psychoterapeutyczne) - Hotels & hospitality (hotele, pensjonaty) - Fitness & gyms (siłownie, studia fitness) - Solar/renewable energy companies (firmy fotowoltaiczne, OZE) - Real estate agencies (biura nieruchomości) - Automotive workshops (warsztaty samochodowe) - Restaurants (restauracje) ## Pages - [Home / Landing page](https://zvonai.ai/): Overview, demo, pricing, features - [For Dental Clinics — PL](https://zvonai.ai/gabinet-stomatologiczny): AI reception for dentists — missed call calculator, RODO Art.9 compliance, booking - [For Medical Practices — PL](https://zvonai.ai/gabinet-lekarski): AI for GP and specialist clinics - [For Law Firms — PL](https://zvonai.ai/kancelaria-prawna): AI for legal offices - [For Beauty Clinics — PL](https://zvonai.ai/gabinet-kosmetyczny): AI for beauty and aesthetic clinics - [For Veterinary Clinics — PL](https://zvonai.ai/klinika-weterynaryjna): AI for vet clinics - [For Physiotherapy — PL](https://zvonai.ai/gabinet-fizjoterapii): AI for physiotherapy practices - [For Psychology — PL](https://zvonai.ai/gabinet-psychologiczny): AI for psychologists and therapists - [For Hotels — PL](https://zvonai.ai/hotel-ai-recepcja): AI for hotels and hospitality - [For Fitness/Gyms — PL](https://zvonai.ai/silownia-ai-recepcja): AI for gyms and fitness studios - [For Solar Companies — PL](https://zvonai.ai/fotowoltaika-ai-recepcja): AI for solar installation companies - [For Real Estate — PL](https://zvonai.ai/biuro-nieruchomosci-ai-recepcja): AI for real estate agencies - [For Automotive Workshops — PL](https://zvonai.ai/warsztat-samochodowy-ai-recepcja): AI for car repair workshops - [For Dental Clinics — EN](https://zvonai.ai/en/industry/dental-clinic): English version - [Pricing / Cennik](https://zvonai.ai/cennik): Plans from 349 PLN/month - [Video Library / Filmy](https://zvonai.ai/filmy): Short videos of the AI reception in action — hear ZvonAI answer calls in Polish, quote prices and book appointments, per vertical - [Cennik (Markdown)](https://zvonai.ai/cennik.md): Machine-readable pricing data - [Privacy Policy (GDPR)](https://zvonai.ai/polityka-prywatnosci): Data processing, sub-processors, GDPR Art. 9 health data, EU AI Act - [GDPR Data Subject Request form](https://zvonai.ai/rodo-wniosek): Public form for callers to exercise GDPR rights (access/rectification/erasure/restriction/objection) — routed to the business + DPO via POST /data-subject/request - [Data Processing Agreement (DPA)](https://zvonai.ai/umowa-powierzenia-danych): Art. 28 GDPR DPA — sub-processors, retention, DSAR, breach notification - [Terms of Service](https://zvonai.ai/regulamin): SLA, pricing, consumer rights, DSA - [How It Works](https://zvonai.ai/jak-dziala): Step-by-step explanation — Deepgram STT, Gemini LLM, ElevenLabs TTS, Twilio, <1.2s response - [How It Works (Markdown)](https://zvonai.ai/jak-dziala.md): Machine-readable technical explainer - [EU AI Act Compliance](https://zvonai.ai/eu-ai-act-recepcja): How ZvonAI meets EU AI Act Art. 50 and GDPR Art. 9 for medical practices - [AI vs Human Receptionist Comparison](https://zvonai.ai/porownanie-recepcjonistka-ai): Full cost and capability comparison — 85,000 PLN/yr salary vs 349 PLN/month AI - [ZvonAI vs recepcja.ai](https://zvonai.ai/porownanie/recepcja-ai): Why ZvonAI (phone AI) ≠ recepcja.ai (chat widget) - [ZvonAI vs Smart Asystenci](https://zvonai.ai/porownanie/smart-asystenci): Feature and compliance comparison - [ZvonAI vs fonio.ai](https://zvonai.ai/porownanie/fonio-ai): Polish vs Austrian voicebot - [Waitlist](https://zvonai.ai/waitlist): Pre-launch sign-up for early access - [Partner / Affiliate Program](https://zvonai.ai/partnerzy): For creators, podcasters, consultants and marketing agencies — your audience gets their first month free, you earn an individually-agreed commission on the first paid month, calculated on the NET amount (no universal rate). B2B-only: partners run a registered business (JDG or company) and settle commission exclusively against their own invoice. Applications reviewed manually, reply within ~48h. Public API on the ZvonAI API host: validate a code `GET /affiliates/validate/{code}`, apply `POST /affiliates/apply` (display_name, email, channel, channel_url, audience, business_form, nip, company_name, notes, accept_terms). - [System Status](https://zvonai.ai/status): Live operational status of every ZvonAI component, active incidents, 90-day uptime grid. Public API: `GET https://zvonai.ai/api/status` returns components, active_incidents, recent_incidents, uptime_90d. Subscribe by email: `POST https://zvonai.ai/api/status/subscribe`. - [Live Demo](https://zvonai.ai/demo): Live demo of the AI receptionist — call a real number and hear the system answer in Polish. The demo line triages first (it tries to answer your question on the call), can book a ~20-minute call/demo with the ZvonAI team on request, and logs a support request for the team to call back if a complaint can't be connected live. - [Personalized Demo](https://zvonai.ai/): On the homepage hero — type your business name and pick your industry, and hear how Zvon would greet your callers in Polish (synthesized live via `POST https://zvonai.ai/api/preview/public-greeting`, no signup). Pre-launch hook into the demo line + waitlist. - [Onboarding](https://zvonai.ai/onboarding): Self-serve onboarding wizard — business profile, hours, FAQ, voice, calendar, invoice address - [API Docs Hub](https://zvonai.ai/api-docs): Interactive API documentation, OpenAPI schema, Swagger UI, MCP integration guide, webhook payloads - [Missed Calls Calculator](https://zvonai.ai/nieodebrane-polaczenia): Industry-specific calculator showing monthly revenue lost to missed calls - [For Restaurants — PL](https://zvonai.ai/restauracja-ai-recepcja): AI reception for restaurants — table reservations, opening hours, menu queries - [Cookie Policy](https://zvonai.ai/polityka-cookies): Cookie policy — what's stored, opt-out, retention - [Referral Program Terms](https://zvonai.ai/legal/referral-terms): Terms of the referral program — credit structure, payout, eligibility - [Partner Program Terms / Regulamin partnerski](https://zvonai.ai/legal/regulamin-partnerski): Terms of the affiliate/partner program — commissions, payout, obligations - [Team invite acceptance](https://zvonai.ai/team/accept): Token-gated page where an invited team member sets their name and password to join a tenant's dashboard (invite e-mails link here; `POST /team/accept`) - [GDPR Request / Wniosek RODO](https://zvonai.ai/rodo-wniosek): Public form for data-subject requests (access, erasure, rectification, export) — routed to the data controller, answered within 30 days (art. 12(3) GDPR) ## Authenticated Customer App (zvonai.ai/dashboard onwards) The customer dashboard (after login) exposes the AI receptionist's actual outputs — not just a list of calls but a funnel of outcomes, ROI math, and self-service controls. - [Dashboard home](https://zvonai.ai/dashboard): Outcome funnel widget on every plan — booked appointments / FAQ resolved / escalated to owner / failed counts for today / 7d / 30d / month. Pro+ tiers also show a "Revenue recovered" card: bookings × average appointment value. The framing is intentional — ZvonAI handles calls, not "takes messages." At the top of the home page a daily personalized "Czy wiesz, że…" ("Did you know?") insight card appears — a time-of-day greeting by name plus one concrete, outcome-framed insight computed only from that tenant's own call data (appointments booked & value recovered, minutes/hours saved, after-hours calls answered, recurring caller questions, or a product improvement). It is purpose-limited per-tenant analytics for the tenant's own benefit — NOT a shared cross-tenant model trained on PII. Dismissible per day; refreshes daily. Available on every plan (also drives solution-framed upsell when near quota). - [Recent calls](https://zvonai.ai/calls): Full call history with outcome filters. URL query `?outcome=booked|answered_faq|escalated|failed` filters by funnel bucket. Pro+ unlocks transcripts, search, recordings. Billing is fair to transfers: when a call is bridged to a real team member, that human-talk time (transfer_duration_seconds) is excluded from billed AI minutes — billed = ceil((duration − transfer time)/60) — and shown separately on each call. - [Insights (Pro+)](https://zvonai.ai/insights): Phone-search across history, sentiment analysis, FAQ gaps (questions the AI couldn't answer), follow-up tasks. 30-day stats with weekly trend. - [Billing & Invoices](https://zvonai.ai/billing): Stripe subscription management plus a "Faktury (iFirma)" section listing every Polish-numbered legal invoice. Customers download PDFs directly. Backend endpoint: `GET /tenants/{id}/polish-invoices`, PDF stream at `GET /tenants/{id}/polish-invoices/{id}/pdf`. Stripe portal accessible from the same page for plan changes — or change the plan conversationally via the Zvon agent's `change_plan` tool (real Stripe upgrade/downgrade). - [Settings](https://zvonai.ai/settings): General (business profile, hours, voice, greeting, invoice address, average appointment value), FAQ (Najczęstsze pytania), **Data & knowledge** (Google Sheets, Excel uploads, RAG documents — Business+ only), Calendar & booking, Notifications (incl. per-type web-push phone alerts + test ping), Security & account, Developers (API keys — Business+), and **Team / Zespół** (invite reception and managers with their own logins and role-based permissions — Starter+; seats included per plan: Starter 3, Business 10, Enterprise 25). - [Team](https://zvonai.ai/team): Dedicated team-management page (same TeamManager as the Settings tab) — stable deep-link target for invite emails, notifications, and agents. Owner/manager roles, seat usage, ownership transfer. - Web push notifications: the installed PWA (and desktop browsers) can deliver real-time pushes — per-user, per-device, per-type toggles at Settings → Powiadomienia. Money/action alerts (appointment booked, callback requested, message left, appointment cancelled) and billing/security alerts (minutes 80%/100%, payment failed, trial expiring, new login) default ON; per-call pings and the daily digest are opt-in. Quiet hours 21:00–07:00 (tenant timezone) hold operational pings until morning; billing/security bypass. Push bodies are PII-free (masked phone numbers, no names). Push rides the same events as the tenant webhooks (call.completed, appointment.created/cancelled) — automations should consume the webhooks, humans the pushes. - In-app notifications: every dashboard user has a notification bell (header) showing tenant events (missed calls, billing, phone provisioning) and platform announcements. ZvonAI admins can compose and broadcast an announcement to all tenants (or a segment) as an in-app notification with an optional email copy. Each user sees it in their bell, can mark it read (or dismiss it — once read or dismissed it never re-appears), and the unread badge reflects it. Zvon can read a user's notifications (`show_my_notifications`) but never broadcasts or marks-read via chat. - Feature announcements (the release ritual): when ZvonAI ships a user-facing feature, it is announced from a maintained catalog to every tenant AND the ZvonAI team — an in-app notification in each tenant's own language plus a bilingual (Polish first, English below) email with a "Try now" deep link. If the feature is on a higher plan than the tenant has, the announcement still goes out but the call-to-action becomes an upgrade nudge (gated-but-upsold, never hidden). Delivery is idempotent per (tenant, feature): re-running never notifies anyone twice, and a read/dismissed announcement is gone for good. ## API Endpoints (authenticated customer-scoped) - `GET /tenants/{id}/calls/funnel?range=today|7d|30d|month` — outcome funnel for ROI/triage. Returns total / booked / faq_resolved / escalated / failed / estimated_revenue_grosze. No feature gate — every plan sees its own. - `GET /tenants/{id}/polish-invoices?limit=50` — list iFirma invoices with status (issued / emailed / errored / preparing). - `GET /tenants/{id}/polish-invoices/{invoice_id}/pdf` — stream the iFirma PDF directly (proxied from iFirma). - `PATCH /tenants/{id}` — accepts `invoice_street`, `invoice_postal_code`, `invoice_city`, `accountant_email`, `avg_appointment_value_grosze` among other fields. - `GET /push/vapid-public-key`, `POST /push/subscribe`, `POST /push/unsubscribe`, `GET/PUT /push/preferences`, `POST /push/test` — web-push device subscriptions + per-user notification preferences (dashboard session auth). - `GET /notifications?unread_only=&limit=&skip=` — the current user's in-app notifications (bell) with `unread_count`. `PATCH /notifications/{id}/read`, `POST /notifications/mark-all-read`, `DELETE /notifications/{id}`. Admin broadcast: `POST /admin/notifications/broadcast` fires an in-app notification (and optional email) to a target segment and emits the `notification.broadcast` tenant webhook per recipient. Feature-announcement ritual (admin): `GET /admin/notifications/announcements` lists the feature catalog with per-entry delivery counts; `POST /admin/notifications/announce` (`{key, send_email, target?, dry_run?, confirm_count?}`) delivers one catalog entry — per-tenant-language in-app + bilingual email + team copy, gated-but-upsold, idempotent per (tenant, key), and emits the `feature.announced` tenant webhook. - `GET /insights/daily?locale=pl|en` — the daily personalized "Czy wiesz, że…" insight for the dashboard home card. Returns `{ type, greeting, headline, body, metric?, cta? }` computed only from this tenant's own call data (bookings & value recovered, minutes/hours saved, after-hours calls, recurring caller questions, product improvements, or a near-quota upsell). Day-stable and de-duplicated (won't repeat the same insight within 5 days). Purpose-limited per-tenant analytics — no cross-tenant model is trained on caller PII. No feature gate — every plan sees its own. ## ZvonAI in-app AI agent (Zvon) Onboarding help: `POST /agent/onboarding-chat` — a scoped, tool-free Zvon variant available during signup (no tenant yet): knows the wizard step + the user's entered data, proposes greetings/FAQ, advises on plan fit. Client-held history (SSE, same wire format as /chat). The dashboard ships with an embedded AI assistant called Zvon at `POST /agent/chat`. Zvon is wired with 86 tools so it can directly act on the customer's behalf — no manual navigation needed. Streaming SSE response (`text`, `tool_call`, `tool_result`, `done`). Auth: Bearer JWT. Rate limit: 30 requests/minute per tenant. Kept in sync with TOOL_DECLARATIONS in apps/api/src/routers/agent.py (checked by scripts/agent-ready-check.sh). Full tool catalog (86 tools): **Configure (16):** - `auto_configure(business_name, city?)` — auto-fill business profile from Google Places (hours, address, phone, vertical) - `update_business_info(business_name?, address?, phone?, email?, website?, vertical?)` — patch the business profile - `update_hours(hours)` — set opening hours as a day→time mapping - `update_greeting(greeting, greeting_en?)` — set the AI's opening line (PL + optional EN) - `generate_greeting(style: 'warm'|'formal'|'friendly')` — LLM-generate a new greeting - `change_voice(voice_id, voice_name?)` — set the ElevenLabs voice (534 PL voices available) - `set_transfer_number(phone)` — set the human-fallback number for call transfers - `set_answering_mode(mode: 'ai_first'|'ai_backup')` — 'ai_first' = AI answers every call; 'ai_backup' = the owner keeps their own number and the AI only catches busy / no-answer / unreachable calls (owner rings first) - `set_response_pace(pace: 'fast'|'normal'|'calm')` — how quickly the AI takes its turn after the caller stops speaking; 'calm' waits longer so callers aren't cut off - `toggle_proactive_human_offer(enabled)` — when on, the AI proactively offers to connect the caller to the team or take a message after the first exchange, instead of waiting to be asked - `set_language(languages)` — set supported languages (['pl'], ['pl','en'], ['pl','en','uk']); Pro+ for EN - `update_services(services)` — set the bookable service catalog (name, duration, price) - `update_routing_messages(transfer_message?, busy_message?, outside_hours_message?)` — per-state routing scripts - `toggle_vacation_mode(enabled, until?, message?)` — turn vacation auto-response on/off - `toggle_sms_alerts(enabled, phone?)` — owner SMS alerts for calls needing attention - `set_caller_message_confirmation(enabled)` — confirmation SMS to the CALLER after the AI takes a message (all plans, default on) **FAQ & knowledge (9):** - `add_faq(question, answer)` — append a Q&A to the AI knowledge base - `remove_faq(question)` — delete a FAQ entry by exact question text - `undo_last_faq(question)` — undo the most recently added FAQ - `scrape_website_faq(url)` — extract suggested Q&A pairs from the business website - `show_current_faq()` — list all configured FAQ entries - `show_documents()` — list uploaded knowledge-base documents with status, fragment count, version, errors (Business+) - `show_missed_questions(limit?)` — top caller questions the AI could not answer; offer to turn them into FAQ **Data sources — Business+ (2):** - `get_data_sources()` — list connected Google Sheets/Excel/CRM sources with sync status - `sync_data_source(name)` — force an immediate re-sync of a named data source **Routing & numbers (6):** - `show_departments()` — list call-routing departments (name, phone, keywords) - `add_department(name, phone, keywords?)` — create a routing department (Business+, per-plan cap) - `show_phone_numbers()` — list the tenant's phone numbers (number, provider, status, label) - `get_forwarding_instructions(rings?: 3|5|7)` — GSM/USSD call-forwarding codes (always / no-answer / busy / unreachable + cancel) with the tenant's real AI number filled in; the owner picks after how many rings (3/5/7) the AI picks up on no-answer; returns a ready-made backup greeting; identical on all Polish carriers - `set_failover_number(phone)` — set the backup number calls are forwarded to if the AI line is ever unavailable - `show_calendar_status()` — show whether a calendar is connected and which provider - (per-state routing scripts are set via `update_routing_messages` — counted under Configure) **Reminders & brand (4):** - `show_reminder_settings()` — show reminder channels, timing, confirmation/cancellation toggles - `set_reminder_settings(enabled?, booking_confirmation?)` — toggle reminders / booking confirmations (Starter+) - `show_brand()` — show the AI's tone, greeting style, preferred/forbidden phrases - `set_brand_tone(tone?, greeting_style?)` — change how the AI sounds on calls (higher plans) **Appointments (3):** - `get_appointments(period: 'today'|'tomorrow'|'week')` — show scheduled bookings - `cancel_appointment(patient_name?, patient_phone?, date?, confirmed?)` — cancel a booking (DESTRUCTIVE — first call without `confirmed` returns the match for confirmation; set `confirmed=true` only after the owner confirms) - `reschedule_appointment(new_start, patient_name?, patient_phone?, current_date?, confirmed?)` — move a booking (DESTRUCTIVE — first call without `confirmed` returns the appointment + new time for confirmation; set `confirmed=true` only after the owner confirms) **Calls & insights (5):** - `get_call_stats(period: 'today'|'week'|'month')` — call counts by outcome, plus error_calls (promises the AI could not keep, e.g. failed bookings) - `get_recent_calls(limit?)` — last N calls with summaries/transcripts - `show_caller_history(phone)` — privacy-safe caller summary: call count + last-called date only (RODO Art. 9, metadata only) - `show_current_greeting()` — return the current greeting text (PL/EN variants) - `get_daily_insight()` — today's personalized "Czy wiesz, że…" insight (greeting + headline + body + metric) computed only from THIS tenant's own call data; the same insight shown on the dashboard home card. No cross-tenant PII training. **Outcomes & ROI (2):** - `get_call_funnel(range: 'today'|'7d'|'30d'|'month')` — booked / FAQ resolved / escalated / failed counts + estimated revenue recovered (Pro+) - `set_avg_appointment_value(value_pln)` — drives the "Revenue recovered" card on /dashboard (Pro+) **Plan & billing (26):** - `get_my_subscription()` — current plan, status, trial-end, renewal date - `show_plan_comparison()` — current plan + upgrade options - `change_plan(plan: 'solo'|'starter'|'business'|'enterprise', billing_cycle?, confirmed)` — upgrade/downgrade through real Stripe billing. Upgrades apply immediately (prorated); downgrades apply at period end. Without an active paid subscription it routes to Billing instead of charging. - `get_polish_invoices(limit?)` — list iFirma-issued Faktury / Rachunki (number, date, amount, status) - `set_invoice_address(street, postal_code, city, accountant_email?)` — structured invoice address iFirma needs - `open_billing_portal()` — one-time Stripe Customer Portal URL (card/plan/cancel) - `show_topup_packs()` — available minute/SMS top-up packs and prices - `manage_extra_minutes(enabled?, confirmed?)` — show or change the extra-minutes (minute overage) setting: keep answering past the monthly limit at the plan's rate — 4 PLN/min (Solo/Pro), 3 PLN/min (Business+); consent is timestamped - `get_my_referral_link()` — the owner's referral code, share link, and stats - `list_follow_ups(status?)` / `complete_follow_up(follow_up_id)` — callbacks and to-dos created from calls, with timestamps - `show_guidance_rules()` / `add_guidance_rule(rule_text, category?)` — behaviour rules the AI follows on calls - `show_blocked_times()` / `add_blocked_time(title, start_time, end_time, recurrence?)` / `remove_blocked_time(blocked_time_id)` — unavailability windows the AI won't book into - `get_compliance_info()` — EU AI Act + RODO posture - `manage_caller_verification(mode?, sensitive_data_topics?, confirmed?)` — show or change caller identity verification (phone-match before sensitive topics; Business+) - `set_call_disclaimer(disclaimer?)` — show or set the legal notice spoken after the greeting on every call (recording info etc.; all plans) - `list_team_members()` — roster with roles + status (any member) - `invite_team_member(email, role?, confirmed?)` — invite staff/manager by email (manager+, Starter+, seat-capped) - `remove_team_member(member_id, confirmed?)` — remove a member; their sessions end immediately (manager+) - `show_activity_log(limit?)` — account change log: who changed what and when, per named member (owner only) - `assign_follow_up(follow_up_id, assignee_member_id)` — assign a callback case to a member (they get notified) - `get_top_questions(limit?)` — most-asked answered + unanswered caller questions (business insight) - `search_calls(caller_number?, date_from?, date_to?, outcome?)` — search call history by number fragment/date/outcome, timestamped, RODO-safe **Go-live & readiness (4):** - `check_readiness()` — setup checklist (hours, ≥3 FAQ, phone, DPA reviewed) with done/missing + deep-links; a line only takes real calls once the tenant is live - `go_live()` — activate the AI receptionist; only succeeds once required setup is complete (owner/manager only — same gate on chat and the REST endpoint) - `explain_dpa()` — explain the GDPR Art. 28 Data Processing Agreement and link to /rodo-umowa-powierzenia (owner/manager only) - `transfer_ownership_info()` — explain account-ownership transfer and link to Settings → Team (owner only; the transfer itself requires password re-auth in the UI) **Status & transparency (3):** - `get_system_status()` — live status of every ZvonAI component (same data as /status) - `get_my_quota_usage()` — minutes used / limit, SMS used / limit for the current month - `show_my_notifications(unread_only?)` — read-only: the user's in-app notifications (the bell) newest-first + unread count, including admin announcements broadcast to all tenants. Zvon never marks-read or broadcasts via chat — it points the user to the dashboard bell for that. **Push notifications (3):** - `get_notification_preferences()` — read-only: which push alert types are on/off for the user, whether any device is subscribed, quiet-hours rules - `set_notification_preference(kind, enabled)` — flip one alert type on/off (appointment_booked, callback_requested, message_left, appointment_cancelled, minutes_warning, payment_failed, trial_expiring, new_login, daily_digest, call_completed) — reversible, safe via chat - `send_test_notification()` — fire a test push to the user's own subscribed devices only **Developer platform (2):** - `show_developer_access()` — read-only: whether the account has API access (Business+), how many active API keys exist, and where to manage them (Settings → Developers). Never creates or reveals keys. - `get_developer_api_info(topic: 'api'|'affiliate')` — lists the 4 real Developer API v1 endpoints (GET /v1/calls, /v1/calls/{id}, /v1/appointments, /v1/analytics) plus auth instructions (Bearer zv_live_ key); 'affiliate' explains the partner program **Audio preview (1):** - `preview_greeting(text)` — generate an audio preview of a greeting for playback in chat **Navigation & escalation (2):** - `navigate_to_page(page, section?)` — guided deep-link for browser-only tasks the agent can't self-serve - `create_support_ticket(subject, description, priority?)` — open a real support ticket after 2 failed attempts to help External AI agents (Claude, ChatGPT, Make, n8n) consuming this API can trigger the same actions via REST. Webhook events fire on key state changes (subscription updated, invoice paid, call completed) so downstream automations stay reactive. ## Key Differentiators vs Competitors - **Healthicate** (Warsaw, Polish) — medical-only platform, 799–2,999 PLN/mo, requires HIS integration (complex setup). ZvonAI is simpler, covers more industries, starts at 349 PLN. - **Talkie.ai** (US company) — enterprise voice AI, no public pricing, demo-gated sales. American company — GDPR/RODO trust gap. ZvonAI is Polish-built, transparent pricing, no sales call required. - **recepcja.ai** — web/chat booking only, NOT phone AI. Different product. - **fonio.ai** (Austrian) — EUR pricing, generic voicebot, no dental/medical depth - **smart-asystenci.pl** — generic voicebot at 499–899 PLN, no vertical specialisation, no EU AI Act compliance - **1flowstack.com** — self-serve no-code at 99 PLN, no compliance, no health data handling ZvonAI differentiates through: dental/medical/legal/beauty vertical depth, EU AI Act Art. 50 compliance, GDPR Art. 9 health data in EU only (unlike US-origin Talkie.ai), Polish company, ElevenLabs neural voice, transparent PLN pricing, 15-min setup vs enterprise onboarding. Full AI vs AI comparison table: https://zvonai.ai/porownanie-recepcjonistka-ai ## Pricing | Plan | Price | Minutes | Use case | |------|-------|---------|----------| | Solo | 349 PLN/month | 150 min | Small office, up to 100 calls | | Pro | 1,200 PLN/month | 600 min | Solo practice or small business | | Business | 2,500 PLN/month | 2,000 min | Growing business with departments | | Enterprise | Contact sales | Custom | Multi-location, custom voice, SLA | 14-day free trial. No credit card. Cancel any time. ## Blog Articles (Polish — dental/medical/legal focus) - [Kilku pracowników, jeden panel: role i uprawnienia](https://zvonai.ai/blog/zespol-wielu-uzytkownikow-role-uprawnienia): Multi-user team access — owner/manager/staff roles, seats included per plan (Solo 1, Pro 3, Business 10, Enterprise 25, no per-seat charge), email invites, RODO per-user accountability, immediate session revocation on removal, case assignment - [Jak być cytowanym przez AI Google (AI Overviews)?](https://zvonai.ai/blog/jak-byc-cytowanym-przez-ai-google-overviews-gabinet): GEO guide — how clinics/SMEs get cited and recommended by Google AI Overviews, ChatGPT, Gemini; AnswerThePublic method + FAQ schema - [Czy pacjenci zaakceptują AI recepcję?](https://zvonai.ai/blog/ai-recepcja-czy-pacjenci-zaakceptuja): Objection-handling — what callers actually dislike (missed calls, hold, dumb IVR) and how a natural AI receptionist fixes it - [Recepcja AI: pierwszy tydzień krok po kroku](https://zvonai.ai/blog/recepcja-ai-pierwszy-tydzien-czego-sie-spodziewac): Realistic onboarding walkthrough — signup, FAQ, calendar, test call, forwarding, go-live in ~15 min - [Czym jest AI recepcjonistka?](https://zvonai.ai/blog/czym-jest-ai-recepcjonistka): What is an AI receptionist, how it works, who needs it, cost comparison - [Ile kosztuje nieodebrana wizyta stomatologiczna?](https://zvonai.ai/blog/ile-kosztuje-nieodebrana-wizyta-stomatologiczna): Revenue loss calculation for dental clinics from missed calls - [Jak nie tracić pacjentów przez telefon?](https://zvonai.ai/blog/jak-nie-tracic-pacjentow-przez-telefon): 5 solutions for missed call problem in medical practices - [AI recepcjonistka vs etat — analiza kosztów](https://zvonai.ai/blog/ai-recepcjonistka-koszty-porownanie-etat): Full cost comparison AI vs full-time receptionist hire - [Recepcja telefoniczna w gabinecie dentystycznym](https://zvonai.ai/blog/recepcja-telefoniczna-gabinet-dentystyczny-organizacja): How to organise phone reception without extra staff - [RODO a AI recepcjonistka w gabinecie medycznym](https://zvonai.ai/blog/rodo-ai-recepcjonistka-gabinet-medyczny): GDPR compliance FAQ for medical practices using AI - [Automatyczne umawianie wizyt w gabinecie](https://zvonai.ai/blog/automatyczne-umawianie-wizyt-gabinet): How AI calendar booking works in practice - [Nieodebrane połączenia w kancelarii prawnej](https://zvonai.ai/blog/nieodebrane-polaczenia-kancelaria-prawna): Monthly client loss calculation for solo law firms - [Jak zmniejszyć niestawiennictwa na wizytach?](https://zvonai.ai/blog/jak-zmniejszyc-niestawiennictwa-wizyt-sms): SMS reminders reducing no-shows by 30-40% - [AI recepcja w salonie kosmetycznym](https://zvonai.ai/blog/ai-recepcja-salon-kosmetyczny-rezerwacje): Automated bookings for beauty salons - [AI recepcjonistka dla fizjoterapeuty](https://zvonai.ai/blog/fizjoterapia-ai-recepcja-bez-rejestratorki): AI reception for solo physiotherapy practice ## Blog Articles — Agent-Ready / API / MCP - [ZvonAI is Agent-Ready: MCP Servers, REST API, Webhooks and the Future-Proof AI Stack](https://zvonai.ai/blog/zvonai-agent-ready-mcp-api-future-proof): How ZvonAI is built for the AI agent era — MCP tools, REST API, webhook events, llms.txt discoverability, EU AI Act compliance for automated pipelines, and the data moat that compounds with every call. ## Blog Articles — GDPR / RODO Compliance (Polish + English) - [Czy AI asystent telefoniczny jest zgodny z RODO?](https://zvonai.ai/blog/ai-asystent-telefoniczny-rodo-przewodnik): Complete GDPR guide for clinics — Art. 6, Art. 9, Art. 28 DPA, EU AI Act Art. 50, SCCs - [EU AI Act dla gabinetów — co musisz wiedzieć w 2026](https://zvonai.ai/blog/eu-ai-act-gabinety-co-musisz-wiedziec-2026): Plain-language EU AI Act explainer for dentists and lawyers, ZvonAI = Limited Risk tier - [Gabinet dentystyczny a RODO: nagrywanie rozmów przez AI](https://zvonai.ai/blog/gabinet-dentystyczny-rodo-nagrywanie-rozmow): GDPR call recording rules for dental practices, DTMF consent gate, 30-day audio retention - [Dane pacjentów i AI — jak ZvonAI chroni prywatność](https://zvonai.ai/blog/dane-pacjentow-ai-jak-zvonai-chroni-prywatnosc): How ZvonAI handles patient data — pre-TTS sanitizer, no AI training on calls, cascade deletion - [Klauzule SCC i przenoszenie danych do USA](https://zvonai.ai/blog/klauzule-scc-przenoszenie-danych-usa-twoja-firma): SCCs explained for clinic owners — why Deepgram+ElevenLabs are legal under RODO - [Rejestr Czynności Przetwarzania (RCP) — Art. 30 RODO](https://zvonai.ai/blog/rejestr-czynnosci-przetwarzania-rodo-art30): How to build a RoPA for AI call handling — ready-to-copy template for dental clinics - [GDPR and AI Phone Receptionists: What Law Firms Need to Know](https://zvonai.ai/blog/gdpr-ai-phone-receptionist-law-firms): English guide for Polish kancelarie — legal privilege, Art. 9 data, DPA requirements ### Dane, wiedza i integracje (jak AI wie, co mówić) - [Skąd AI wie, kiedy mam wolny termin? (Google Sheets)](https://zvonai.ai/blog/ai-recepcja-z-twojego-grafiku-google-sheets): How ZvonAI reads the owner's live Google Sheet (read-only) for availability/services/prices and books without double-booking; never invents a slot - [Jak AI zna odpowiedzi — baza wiedzy / FAQ](https://zvonai.ai/blog/jak-ai-zna-odpowiedzi-baza-wiedzy): How you teach ZvonAI (FAQ entries, uploaded PDF/DOCX docs, website scan); AI answers only from your data, offers callback when unknown (anti-hallucination) - [Czy AI recepcja podaje ceny przez telefon?](https://zvonai.ai/blog/ai-recepcja-podaje-ceny-uslug-przez-telefon): AI quotes accurate, current prices from your cennik (document or Sheet); never guesses a price; turns "ile to kosztuje" into a booking - [Zvon — asystent AI w panelu](https://zvonai.ai/blog/panel-zvon-asystent-ai-w-recepcji): The in-dashboard AI assistant — ask about calls/appointments, change settings by chat, plan-aware gating, timestamped action log, RODO-safe boundaries - [Integracja z Booksy, DocPlanner i kalendarzem](https://zvonai.ai/blog/ai-recepcja-integracja-booksy-docplanner-kalendarz): ZvonAI books into the system you already use (Booksy, DocPlanner, Cliniko, Proassist, Acuity, Medfile + Google/Outlook/Apple calendars); no data migration - [Czy AI recepcja zmyśla? Prawda o halucynacjach](https://zvonai.ai/blog/czy-ai-recepcja-zmysla-halucynacje-prawda): The trust post — how ZvonAI answers only from your data and says "nie wiem, oddzwonimy" instead of inventing; no medical/legal advice - [Jak podłączyć arkusz Google do AI recepcji (krok po kroku)](https://zvonai.ai/blog/jak-podlaczyc-arkusz-google-do-ai-recepcji): Tutorial — share the sheet read-only with the service-account email, paste the link, AI reads live; ~2 minutes - [Jak wgrać cennik (PDF) do bazy wiedzy](https://zvonai.ai/blog/wgranie-cennika-pdf-do-ai-recepcji-baza-wiedzy): Upload PDF/DOCX into the knowledge base; processing status, retry on failure, version history on re-upload - [Zmieniłem cenę — czy AI od razu wie? (aktualizacja na żywo)](https://zvonai.ai/blog/ai-recepcja-aktualizacja-danych-na-zywo): Update the source (Sheet, document, FAQ, calendar) and AI uses the new info — no re-training, no waiting - [Czym jest MCP — bezpieczny dostęp AI do danych](https://zvonai.ai/blog/czym-jest-mcp-ai-agent-dostep-do-danych): Plain-language explainer of Model Context Protocol; why ZvonAI is MCP-first / agent-ready (calendar, sheets, CRM, SMS via permissioned tools) - [Czy AI wie, kto już dzwonił? (historia w CRM)](https://zvonai.ai/blog/ai-recepcja-historia-dzwoniacych-crm): Caller recognition — AI matches the incoming number against your own data to greet returning callers and skip repeat questions; RODO-safe (your data only) - [Gabinet stomatologiczny: AI umawia z grafiku w arkuszu](https://zvonai.ai/blog/gabinet-stomatologiczny-grafik-arkusz-ai): Dental clinics — AI reads your Google Sheets/Excel schedule live, books real free slots, respects procedure durations, quotes prices, no double-booking - [Transkrypcje rozmów — co dokładnie powiedziała AI](https://zvonai.ai/blog/transkrypcje-rozmow-ai-recepcja): Per-call summary + full transcript in the panel; quality control, disputes, improving the knowledge base — without listening to recordings - [Kilka lokalizacji lub działów — routing z danych](https://zvonai.ai/blog/multi-lokalizacja-routing-dzialow-dane): One number, multiple sites/departments — AI routes by data (locations, specialists, hours) with natural conversation, no key-press menu - [Excel jako źródło danych dla AI recepcji](https://zvonai.ai/blog/excel-zrodlo-danych-ai-recepcja): AI reads an .xlsx file (schedule, price list, services) the same as Google Sheets; read-only, no reformatting, schema-change detection - [Automatyzacja n8n/Make z danych połączeń](https://zvonai.ai/blog/n8n-make-dane-z-polaczen-ai): Webhooks + API push call data to n8n/Make/Zapier — auto-log leads to CRM, notify on urgent calls, build no-code processes around every call - [Ile pytań AI obsłuży bez człowieka?](https://zvonai.ai/blog/ile-pytan-ai-obsluzy-bez-czlowieka): Honest deflection framing — AI handles repetitive questions (hours, prices, booking) from your data; humans get the rest. No fake "90%" promise - [AI a niestawiennictwa — dane + przypomnienia](https://zvonai.ai/blog/ai-no-show-dane-przypomnienia): Reduce no-shows with SMS reminders + call data showing where/when cancellations cluster; honest about no magic zero - [Eksport danych z ZvonAI — żądanie RODO (DSAR)](https://zvonai.ai/blog/eksport-danych-zvonai-rodo-dsar): How to fulfil a Data Subject Access Request — export and delete call data (recordings, transcripts), retention period, one-month deadline, you remain the controller - [AI rozpoznaje stałego vs nowego pacjenta](https://zvonai.ai/blog/ai-rozpoznaje-stalego-vs-nowego-pacjenta): AI tailors the call — greets returning patients by name, guides new ones through first contact — based on your data; panel flags new vs returning - [Medycyna estetyczna — konsultacje warte 600–1500 zł](https://zvonai.ai/blog/medycyna-estetyczna-ai-recepcja-konsultacje): A missed call in aesthetic medicine = a lost 600–1500 PLN consultation (botox, fillers, lips); AI answers 24/7 while the doctor is mid-procedure - [Rejestracja w klinice medycyny estetycznej](https://zvonai.ai/blog/klinika-medycyny-estetycznej-rejestracja-telefoniczna): Why aesthetic-clinic reception is overloaded (front desk + phone + Instagram at once) and how AI handles parallel calls so no high-value lead is missed - [Ortodonta — telefony o aparat i wizyty kontrolne](https://zvonai.ai/blog/ortodonta-ai-recepcja-aparat-wizyty): Orthodontics = years of recurring control visits + urgent cases (loose bracket); AI answers 24/7, reschedules, and flags urgent issues per your rules - [Dietetyk — umawianie konsultacji podczas wizyt](https://zvonai.ai/blog/dietetyk-ai-recepcja-rezerwacja-konsultacji): Solo dietitians can't answer during 1-on-1 consultations; AI books first visits and follow-ups, online or in-person, without interrupting the session - [Salon optyczny — telefony o okulary i badanie wzroku](https://zvonai.ai/blog/optyk-salon-optyczny-ai-recepcja): Optician phones are repetitive ("are my glasses ready?", eye-exam booking); AI handles them 24/7 so the optician stays with the customer at the counter - [Biuro rachunkowe — sezon rozliczeń](https://zvonai.ai/blog/biuro-rachunkowe-ai-recepcja-sezon-rozliczen): During PIT/month-end peaks AI fields repetitive client calls (deadlines, documents), takes messages, books callbacks — and never gives tax advice itself - [SPA i wellness — rezerwacje pakietów 24/7](https://zvonai.ai/blog/spa-wellness-ai-recepcja-rezerwacje): SPA bookings come evenings/weekends when reception is closed; AI advises on packages, checks availability, and reserves treatments around the clock - [Fotowoltaika — kwalifikacja leadów 24/7](https://zvonai.ai/blog/fotowoltaika-ai-recepcja-leady-kwalifikacja): One solar lead = a five-figure install; AI answers 24/7, qualifies (building type, electricity bill, location), books the advisor, pushes data to CRM - [Psychoterapia — dyskretne umawianie wizyt, RODO](https://zvonai.ai/blog/psychoterapia-ai-recepcja-dyskrecja-rodo): Therapists can't answer mid-session; AI books the first visit discreetly (organisational only, no therapy talk), GDPR-compliant for sensitive data - [Biuro nieruchomości — leady z ogłoszeń 24/7](https://zvonai.ai/blog/biuro-nieruchomosci-ai-recepcja-leady-24-7): Buyers call the moment they see a listing (often evenings) while agents are on viewings; AI captures the lead, qualifies, books a viewing, syncs to CRM ### Aktualności i pozycjonowanie premium (batch 2026-07-03) - [ZvonAI wystartował — recepcja AI po polsku już działa](https://zvonai.ai/blog/zvonai-wystartowal-recepcja-ai-po-polsku): Launch announcement — ZvonAI is live; answers every call in natural Polish 24/7, books appointments, EU data residency, Polish company Expathia - [Medycyna estetyczna — pytania o ceny po godzinach](https://zvonai.ai/blog/medycyna-estetyczna-ai-recepcja-ceny-po-godzinach): Aesthetic-clinic patients ask about prices evenings/weekends when reception is closed; AI quotes real prices from your cennik (HA lips from 900 zł, botox from 600 zł) and books the consultation - [Kancelaria prawna: klient dzwoni raz](https://zvonai.ai/blog/kancelaria-prawna-klient-dzwoni-raz): Legal intake — a client with an urgent matter calls once; AI answers, takes organisational details, books a meeting, flags urgent cases; no legal advice, attorney privilege safe, EU data - [Recepcja AI po polsku i po angielsku — pacjenci zagraniczni w Trójmieście](https://zvonai.ai/blog/recepcja-ai-polski-angielski-pacjenci-zagraniczni-trojmiasto): Bilingual PL+EN reception for expats and dental-tourism patients; AI detects caller language and books the visit; English available from the Pro plan up - [Ile kosztuje recepcja AI i dlaczego poważny gabinet nie wybiera najtańszej](https://zvonai.ai/blog/ile-kosztuje-recepcja-ai-dlaczego-powazny-gabinet): Premium pricing philosophy — Solo 349 zł / Pro 1200 zł / Business 2500 zł, what each plan includes, value vs cheapest, identity framing ### Language release (2026-07-13) - [Recepcja AI w czterech językach: polski, angielski, ukraiński i rosyjski](https://zvonai.ai/blog/recepcja-ai-cztery-jezyki-polski-angielski-ukrainski-rosyjski): Russian added as the fourth call language; each language is a separate per-tenant toggle (Pro plan up), AI auto-detects the caller's language from the first sentence, EU AI Act Art. 50 disclosure spoken in every supported language ### Integration & data deep-dives (2026-07-23) - [Salon kosmetyczny: AI umawia klientki w Booksy](https://zvonai.ai/blog/salon-kosmetyczny-ai-recepcja-integracja-booksy): AI answers mid-treatment/evening calls and books directly into the salon's existing Booksy — no data migration - [Gabinet lekarski: AI zapisuje pacjenta w DocPlanner](https://zvonai.ai/blog/gabinet-lekarski-ai-recepcja-integracja-docplanner): AI books phone patients into DocPlanner (ZnanyLekarz) while the registration line is busy or closed - [Przychodnia na Proassist + AI recepcja](https://zvonai.ai/blog/przychodnia-ai-recepcja-integracja-proassist): Booking into Proassist, incl. the honest note about Proassist's own paid API add-on (~300 PLN/mies on the Proassist side) - [Klinika na Medfile: AI odbiera, gdy recepcja obsługuje kolejkę](https://zvonai.ai/blog/klinika-ai-recepcja-integracja-medfile): Front desk serves in-person patients, AI books phone callers into Medfile - [Kancelaria prawna: terminarz w arkuszu Google jako źródło danych AI](https://zvonai.ai/blog/kancelaria-prawna-arkusz-google-dane-klientow): Organisational intake from the firm's own Google Sheet; no legal advice, confidentiality-safe - [Fizjoterapia: harmonogram zabiegów z pliku Excel](https://zvonai.ai/blog/fizjoterapia-excel-harmonogram-zabiegow-ai): Upload .xlsx (multi-sheet supported, preview before confirm); AI answers price/availability while the therapist's hands are busy - [Weterynarz: dane pacjentów z arkusza Google](https://zvonai.ai/blog/weterynarz-arkusz-google-dane-pacjentow-ai): Routine calls (hours, vaccination prices, booking) answered from the clinic's live sheet; emergencies transferred to a human - [Zmiana planu jednym zdaniem w czacie ze Zvonem](https://zvonai.ai/blog/jak-zmienic-plan-przez-czat-z-zvon): Zvon performs a real Stripe plan change after explicit confirmation — upgrades immediate/prorated, downgrades at period end - [AI recepcja vs zewnętrzne call center](https://zvonai.ai/blog/ai-recepcja-vs-zewnetrzne-call-center-outsourcing): Honest comparison — live own-data answers, 24/7, fixed PLN pricing and EU data residency vs outsourced agents on a script - [Outlook i podkalendarze: AI umawia w Microsoft 365](https://zvonai.ai/blog/outlook-podkalendarze-ai-recepcja-integracja): Official Microsoft OAuth sign-in, multi-calendar selection, two-way sync; Apple/Google/built-in calendar fallbacks ### Marketing & Widoczność (2026-07-25) - [Płacisz za reklamę gabinetu, a pacjentów nie przybywa? Gdzie ucieka budżet](https://zvonai.ai/blog/reklama-gabinetu-a-nieodebrane-telefony-utracony-budzet): Clinic marketing spend (Google Ads, ZnanyLekarz, Booksy) generates phone calls, not online purchases — the "leaky bucket": a paid lead that hits a busy line, voicemail or after-hours ring is budget thrown away. Answering every call raises conversion of the ad budget you already spend, without increasing it. Illustrative cost-per-lead math + verified PL treatment values. ### RODO & Prawo (2026-07-27) - [Tajemnica adwokacka i RODO a recepcja AI w kancelarii](https://zvonai.ai/blog/tajemnica-adwokacka-rodo-recepcja-ai-kancelaria): Can a Polish law firm use AI reception without risking attorney-client privilege? Yes — AI is organisational-only (no case details, no legal advice), the firm stays data controller with a DPA, data processed in the EU (Warsaw servers), Art. 50 AI Act self-disclosure, human handoff for urgent matters; Armatis 2025 acceptance data ## Video Library Short self-hosted videos showing the ZvonAI AI receptionist in action, grouped by industry. Watch them at https://zvonai.ai/filmy (each video is marked up with schema.org VideoObject). - [9:47 PM — someone answers. AI reception for your clinic](https://zvonai.ai/videos/filmy/posluchaj-dental.mp4): A patient calls after hours about an implant. See how the ZvonAI reception answers in Polish, quotes the price and books the visit — after hours. ## Full content index *Full concatenated content (product facts, compliance details, all vertical pages, competitor comparison) available at https://zvonai.ai/llms-full.txt*