Case study · Live site
Magixis
A UK AI phone receptionist. A static marketing site, and a small booking API that the voice agent calls mid-conversation.
- Site
- magixis.ai
- What it is
- AI phone receptionist
- Built by
- Arun Paul, Saggar Studio
- Relationship
- Our own product. Magixis Limited owns Magixis, and Saggar Studio is its trading name.
- Year
- Core stack
- Hand-written HTML, Vapi, Vercel, Cal.com, Vercel KV, Twilio
Summary
In short.
Magixis (magixis.ai) answers the phone for UK businesses. The agent, Elsie, runs on Vapi and books callers into a Cal.com diary while they are still on the line.
Magixis is our own product: Saggar Studio is a trading name of Magixis Limited. This is not client work, and we label it that way.
One repository holds two things: a static marketing site of 27 hand-written pages, and a six-endpoint booking API on Vercel that the agent calls mid-conversation.
The brief
The job.
Vapi could call Cal.com directly, but Cal.com API keys are account-wide: handing one to a third party means it can read and cancel the entire diary. The key had to stay on our side.
A booking also spans several turns of a call: find a slot, hold it, take details, book. Something had to carry that state so the model never holds an ID it could drop or invent.
How a call flows
From ring to booking.
The Cal.com key stays in Vercel. Vapi holds only a shared secret whose one power is asking this API to book.
The secret travels as x-magixis-secret. It was x-vapi-secret until every call returned 401: Vapi reserves that name for its own webhooks and strips it from outbound requests, while still showing it as configured.
What was built
Six parts that do the work.
A site with no build step
27 hand-authored HTML pages, served exactly as written. One script injects the nav, drawer, announcement bar and footer into any page that asks for them. One shared stylesheet runs on CSS custom properties. Hand-maintained llms.txt files summarise the site for AI search engines, which don't run JavaScript.
A voice agent versioned in git
The agent runs on Vapi. Its system prompt lives in the repository as Markdown and is pushed over the Vapi API, so the repo is the master copy. A main line and a personal line share one API and book into different Cal.com accounts.
Replies written to be spoken
Every response carries a spoken field, such as "Monday the twenty-fourth at half past nine in the morning", which the agent reads verbatim. Numbers are spelled out because text-to-speech mis-reads them: "28th" came out as "two eighth". Left to itself, the model got the date wrong on five of five recorded calls.
The right diary, every time
The line a call belongs to arrives as a fixed Vapi value, never from the model, and is stored once per request. Every downstream call reads it from there, so no endpoint can book a personal caller into the company diary. Anything not exactly "personal" falls back to the main line.
Time as callers say it
A parser turns "Tuesday afternoon", "after five", "before half ten", "first thing" or "tonight" into a search window. A bare "five" means 5pm, the way a business caller means it. If nothing fits, it widens to a fortnight and offers the nearest slots instead of saying no.
Degrades on a live call
KV missing: holds stop protecting, calls still work. Twilio unconfigured: no text, the booking still lands. Cal.com unreachable: the agent gets a spoken line offering to take a message, instead of dead air.
Booking bridge
Six endpoints.
| availability | "Anything Tuesday afternoon?" Returns up to three slots, already phrased for speech. |
|---|---|
| hold | Reserves a slot in Cal.com for three minutes while details are collected. |
| book | Creates the booking, then texts the confirmation. |
| booking | Finds a caller's existing booking by phone or email. |
| reschedule | Moves an existing booking. |
| sms | Re-sends the confirmation or a booking link. |
By the numbers
The build.
- Hand-written pages
- 27
- API endpoints
- 6
- Voice assistants on one API
- 2
- Minutes a slot is held
- 3
- CSS custom-property references
- ~1,900
- Raw hex values
- 23
Figures from the repository's stack notes. These describe the build, not call volumes or revenue.
Stack
What it runs on.
| Hosting | Vercel, London region (lhr1). Static site and serverless functions in one deploy; only the site folder is published, so internal docs can never ship. |
|---|---|
| Frontend | 27 hand-written HTML pages, one shared stylesheet built on CSS custom properties, deferred plain-JavaScript IIFEs. No framework, no bundler, no build step. |
| AI search | Hand-maintained llms.txt and llms-full.txt |
| Voice | Vapi for telephony, speech-to-text, LLM and text-to-speech. System prompts versioned in git as Markdown and pushed over the Vapi API. |
| Booking API | Node serverless functions: six endpoints, three shared helpers, AsyncLocalStorage for the per-request line |
| Calendar | Cal.com API v2 with pinned api-versions, so changes break loudly rather than silently |
| Call state | Vercel KV over the Upstash REST API. Two three-minute keys per call, no SDK. |
| SMS | Twilio REST, called directly, no SDK |
| Auth | Shared secret in an x-magixis-secret header. CORS is answered only so Vapi's test panel works. |
| Testing | node and assert, with fetch stubbed so Cal.com, KV and Twilio are faked. Zero dependencies; runs offline in about a second. |
Questions
Straight answers.
What is Magixis?
Magixis is a UK AI phone receptionist at magixis.ai. Its voice agent answers calls and books appointments into a Cal.com diary while the caller is on the line.
How does the Magixis agent book an appointment?
The Vapi assistant calls a small booking API on Vercel. The API checks availability, holds a slot for three minutes while details are collected, books it, and texts a confirmation through Twilio.
Why not connect Vapi straight to Cal.com?
Cal.com API keys are account-wide, so a key held by a third party could read and cancel the whole diary. The key stays in Vercel. Vapi holds only a shared secret that can ask the API to book.
What is Magixis built with?
Hand-written HTML, CSS and JavaScript with no build step, Vapi for the voice agent, Node serverless functions on Vercel in London, Cal.com API v2, Vercel KV and Twilio.
Who built Magixis?
Arun Paul, founder of Saggar Studio, a web studio based in Manchester and Stoke-on-Trent. Magixis is Saggar Studio's own product: both are run by Magixis Limited.