Documento legal
Service levels
Última atualização: . Escrito em inglês.
Adapted from the Basecamp open-source policies (https://github.com/basecamp/policies, commit 05fb1f9ddaaf604fc5816990fa66f3ffd7f0a462) / CC BY 4.0. Source file: sla/index.md. See Changes from the template.
The proof of concept has no SLA
The Service is a proof of concept. We make no availability commitment, no support response commitment and no service credits. The application is deployed at transversal.io; one owner test call with a fictional patient identity crossed the provider, booking and post-call ingestion paths. That single call is not an availability or latency measurement and establishes no service level (docs/evidence/2026-10-22-first-real-call.md).
This page sets out what a service level agreement for real clinics would contain. Every target is an open item. No number on this page is a measured result, because the repository holds no availability or latency measurements yet.
Why the Service can be unavailable today
These are facts about the current setup, from the repository:
- Funding and provider limits can stop calls. The application checks the clinic's funding and reserves capacity before it admits a call, and refuses the call otherwise (
docs/engineering/voice-runtime.md). The LiveKit Ship plan costs USD 50 a month with usage additional (docs/providers/livekit.md). What a caller hears if the LiveKit account or a model provider's quota runs out is not established. The ElevenLabs Starter credit cap that applied to the retired runtime no longer governs live calls (ADR 0026). - Concurrent calls are capped. The LiveKit plan limits how many agent sessions run at once across all clinics: 20 concurrent sessions on the Ship plan, a shared workspace limit read on 2026-10-27 (
docs/providers/livekit.md). What a caller over the limit hears is not established. - Hosting is a non-commercial plan. Vercel Hobby is approved for the demo and is not for a paying clinic (decision O5, open item L35).
- One person operates it. Out of clinic hours, response is best effort (
docs/ops/operations-and-incidents.mdsection 3). - Every call depends on several providers. Telnyx carries the call to LiveKit, which runs the receptionist worker. Microsoft (speech recognition), Anthropic (reasoning) and ElevenLabs (speech) are all reached through the Vercel AI Gateway; Cal.com holds the calendar and Vercel and Supabase host the application and its data (
docs/legal/subprocessors.md). An outage at any of them affects calls. We have not confirmed an SLA from any of them on our plans (open item L15). - There is no fallback. The runtime uses one recognition, reasoning and speech pipeline with no alternate models or automatic retries. A failure ends the affected call (
docs/engineering/voice-runtime.md).
What an SLA for real clinics would define
What "available" means
The proposal is to measure three things separately, because a clinic notices them differently:
| Measure | Counts as available when | How it would be measured |
|---|---|---|
| Call answering | A call to the clinic's number is answered by the agent with its disclosure | Scheduled test calls [TEST CALL FREQUENCY] (L22) |
| Booking | The availability and booking tools return a result within the tool timeout | Tool outcomes in telemetry |
| Dashboard | The dashboard loads and shows call records | Uptime check on the dashboard URL (L22) |
Targets
| Measure | Monthly target | Measured baseline |
|---|---|---|
| Call answering | [CALL TARGET] (L21) | none yet |
| Booking | [BOOKING TARGET] (L21) | none yet |
| Dashboard | [DASHBOARD TARGET] (L21) | none yet |
A target is set only after at least [BASELINE PERIOD] of measurement on the production setup (open item L21).
Support response
docs/ops/operations-and-incidents.md section 2 proposes severities and response targets, marked there as not confirmed. They are proposals, not commitments:
| Severity | Meaning | Proposed first response, clinic hours |
|---|---|---|
| S1 | Calls fail for a clinic, or patient data exposed | 30 minutes |
| S2 | Wrong bookings, poor voice quality | 4 hours |
| S3 | Dashboard or wording issues | 2 working days |
Clinic hours, out-of-hours cover and the final targets are open items (L21).
Exclusions
The proposal excludes:
- outages at the clinic's own telephone operator, including call forwarding set up wrongly
- time when the clinic has switched off forwarding
- planned maintenance announced [MAINTENANCE NOTICE] in advance (L21)
- calls rejected because the clinic's agreed call volume or concurrency was exceeded
Whether provider outages are excluded is an open item (L21).
Credits
Whether a missed target earns a credit, how much, and the cap are open items (L21). The template's model gives a credit on the next bill and makes the credit the only remedy. Any such limit needs the lawyer's review together with the liability clause (L10).
Where clinics see status
No status page or uptime monitor exists yet (open item L22). Until then, we tell affected clinics directly during an incident, as in docs/ops/operations-and-incidents.md.
Changes and questions
When an SLA exists, we tell clinics about changes as described in Policy updates. Questions go to support@transversal.io (open item L3: the address is set).
Changes from the template
- Replaced the 99.99% uptime guarantee for Basecamp Big with a statement that the proof of concept has no SLA.
- Added the current reasons the Service can be unavailable, each with its source in the repository.
- Split "uptime" into call answering, booking and dashboard availability, and made every target an open item with no invented baseline.
- Replaced the public uptime and status page links with an open item, because none exists.
- Kept the template's credit model only as a described option for review.
- Added the support severities from our operations document, labelled as proposals.
Adaptado das políticas open source da Basecamp, sob licença CC BY 4.0. Cada documento indica as alterações que fizemos.