
Glossary
Terms used across the app. Skim once, refer back as needed.
Agent
The named AI receptionist for an org (e.g. "Dave"). Has a voice, accent, personality, behaviour chunks (per-agent tone), hours, and quotes from the org-wide knowledge base + services list. Pro tier orgs can have multiple agents (e.g. one for office hours, another after-hours). Configured at /agents/[id]. See /docs/agents-and-services.
Arrival window
The band you promise an outbound customer instead of a to-the-minute time — "we'll be with you between 8 and 1". The crew keep an exact internal target inside the window; the on-my-way text does the narrowing. Choose exact times, AM/PM, or AM/PM/End-of-day per business. See /docs/arrival-windows.
Behaviour (agent)
The agent-detail tab at /agents/[id] where you put how this specific agent talks: greeting wording, sign-off, name pronunciations ("Caerphilly" → "car-FILL-ee"), instructions like "always ask for the postcode before booking". Stored as chunks alongside org Knowledge but scoped to one agent. Not the place for pricing or policy — those are org-wide. See /docs/agents-and-services#behaviour.
Automation
A deterministic rule that fires SMS / email when a condition becomes true — e.g. "24h before a scheduled job, text the customer a reminder." Four templates ship; see /docs/automations. Distinct from dispatch notifications (which are LLM-driven and live in Smart Dispatch).
Booking
A customer-initiated event that creates a jobs row in scheduled status. Can come from voice, SMS, WhatsApp, or the public booking page.
Caller-aware mode
The AI's two personalities: customer mode (someone ringing the business) and operator mode (a member of the org ringing in to run their day). Resolved in under 50ms by matching the caller's E.164 number against users.phone and contacts.phone.
Conversation
A thread of messages between one contact and the org on one channel. Each call/SMS/WhatsApp/email pair lives inside a conversation. conversations.status is active, closed, or needs_human.
Credit
The billing unit. 7 credits = 1 minute of voice; 1 credit = 1 SMS or WhatsApp message. Stored in org_credits.balance_credits, audited via credit_ledger.
Crew (role)
The field role — one of the three admin-app roles (owner / admin / crew). Crew see a "My day" dashboard, work their own jobs, and can raise and send invoices for jobs assigned to them; they don't see agents, billing, knowledge or org settings. See /docs/team-and-roles.
Customer mode
The AI's personality when answering a customer call. Greets warmly, gathers needs, books slots, reads back agreements. Uses the customer-facing tool catalogue. Never asks for a PIN.
Do-not-contact
A flag on a contact that blocks all outbound automations and AI-initiated messages. Set automatically when a customer replies STOP to any SMS/WhatsApp, or manually in the contact detail.
Escalation
When the AI hands a call to a human. You're paged by SMS and email, the caller is told someone will ring back within 10 minutes, and a durable item lands in the /escalations queue (open → acknowledged → resolved). An AI analysis attaches a proposed fix and a root-cause tag so the same call type stops dead-ending.
Escalation queue
The Escalations page (/escalations) — every hand-off in one triage list with tabs, stat cards and claim/resolve actions. Each item carries a proposed fix (the plain-English change that would have kept the call automated) and a root-cause tag (a pinned category so recurring failures cluster into patterns). See /docs/escalations.
Cymraeg
Welsh. Set agents.languages to ['en', 'cy'] to expose the Cymraeg toggle on the public booking page and switch the agent's SMS confirmations to Welsh when the customer chose cy. The voice agent supports Welsh via a Cymraeg prompt fragment in packages/voice/src/prompts/.
Dispatch notification
An automatic customer SMS sent by Smart Dispatch — "on the way", "arrived", "running late". Driven by geofence events from the Crew PWA, not by a rule the user installed. See /docs/smart-dispatch.
Geofence
A circular zone around a job's address (default 100m). When a crew member enters/leaves, job_visits.arrived_at / left_at get stamped and dispatch notifications can fire.
Included minutes
The labour time already covered by a service's price. Work past the included minutes becomes billable overage. Set per service on /services. See /docs/time-tracking-and-field-invoicing.
Integration
A connection to an external trade tool — currently ServiceM8 via OAuth; Joblogic / Tradify / Simpro on the roadmap. The integration pushes the day's jobs into the trade tool so your back office sees them without manual entry. See /docs/integrations.
Job
A unit of work. Tied to a contact, has a status, a scheduled time (or not), a price, a priority, tags, an address. Moves across the Jobs board: enquiry → quoted → accepted → scheduled → in_progress → completed (or cancelled).
Job link
The passwordless customer hub for one job — a private link texted to the customer with their booking summary, a photo-upload prompt, and Quote/Pay cards. No login, no app. See /docs/job-photos.
Knowledge base (KB)
Free-text chunks the agent reads to answer questions. Two scopes:
- Org-wide at
/knowledge— facts (pricing, service area, OOH policy, T&Cs). Inherited by every agent on the org. - Per-agent under the Behaviour tab on
/agents/[id]— tone (greeting wording, sign-off, name pronunciations).
Both flow into the system prompt at call time, ordered by priority (top 20 across both). The agent refuses to commit to anything not in the KB. .txt/.md upload auto-chunks on markdown headings.
Labour charge rate
The per-hour rate (set on your business identity settings) used to price overage — time on site past a service's included minutes. See /docs/time-tracking-and-field-invoicing.
Live status
The green pill in the topbar that says Live. Means organisations.onboarding_status = 'live' — your org has completed the Setup wizard. If it shows the amber Finish setup pill instead, click it to jump back into /setup.
Location / Branch
A place your business operates from — a branch, salon, office or depot. Each location can carry its own inbound number, hours and bookable resources, and the public booking page can offer a location chooser. See /docs/locations-and-venues.
Magic link
A one-click sign-in link sent by email. No password needed. Default for new users; password is optional.
Operator mode
The AI's personality when one of your team rings in. Greets by name, reads the day's schedule, runs voice commands (mark job complete, send invoice, send SMS apology, etc.). Gated by voice PIN. Not to be confused with the old "operator" role — that's now called crew.
Onboarding wizard
Six-step flow at /setup that takes a new owner from "I just signed up" to "agent live and answering": business basics → agent character → services (with per-trade defaults) → knowledge prompts → phone number (auto-assigned when you land on the step, with a browser test call) → call forwarding (so missed calls on your existing number reach the agent). The final Go live button flips onboarding_status to live. See /docs/getting-started.
Org
A tenant. Every per-tenant table has org_id and an RLS policy that isolates data by org. Users can be members of multiple orgs.
Overage / Extended work
Billable time on site past a service's included minutes, priced at your labour charge rate and added to the invoice as an "Extended work" line — or waived with a note. The customer's total is never silently inflated. See /docs/time-tracking-and-field-invoicing.
Pay link
The payment URL a customer taps to pay an invoice — sent by SMS or email, no login needed. The universal way to get paid on site. See /docs/time-tracking-and-field-invoicing.
Pending (job status)
The amber status between accepted and scheduled — a slot has been created (e.g. by the calendar widget) but the customer hasn't confirmed it yet. Unconfirmed pending slots auto-cancel after a few minutes so they don't block the diary. See /docs/contacts-and-jobs.
PIN (voice PIN)
A 4–8 digit number a team member sets in their profile. Spoken to authenticate operator-mode financial actions over the phone. Bcrypt-hashed at rest. 5 wrong attempts → 30-min lockout + SMS warning.
Playbook (intent)
A SITUATION the same agent handles differently — a buyer enquiry, a tenant exit, an install-sales conversation. Overrides the greeting, situation-specific rules, escalation path, tool subset and scoped knowledge, without cloning the agent. See /docs/playbooks.
Presence dot
The green dot next to a teammate's name showing they're active in the crew app (a recent heartbeat from their device). See /docs/team-and-roles.
Public booking page
Per-tenant URL at book.loyalreceptionist.co.uk/<slug> (or a vanity domain). Three-step booking flow: service → date/time → contact details. Lands the booking as a job in scheduled.
Reminder
An SMS appointment reminder with a one-tap confirm / reschedule / cancel link, configured at Settings → Reminders. The first-class way to cut no-shows. See /docs/appointment-reminders.
Resource
A bookable thing at a location that isn't a person — a chair, a treatment room, a bay, a court. Bookings can be made against a resource so two customers never get the same chair at the same time. See /docs/locations-and-venues.
RLS (row-level security)
Postgres feature that filters rows automatically based on the current session's app.org_id setting. Means even if our app code had a bug and forgot to filter, the database would still hide other orgs' data.
Sentiment
Three values: positive, neutral, negative. Computed per call by a self-classifier on the last few customer turns. Drives the face icon on activity rows and the Sentiment filter.
Smart dispatch
The location-aware feature where crew-PWA pings drive automatic customer SMS: "on the way", "running late", "arrived". Only active during configured working hours; the crew can pause from the app or by voice. See /docs/smart-dispatch.
Services
Bookable items your agent can quote and slot. Each has a name, duration (minutes), price (or "requires a quote"), and a public/private flag. Listed at /services and surfaced on the public booking page when public. Per-trade defaults are seeded by the Setup wizard.
Stripe metering
Every voice minute and SMS message fires a Stripe meter event in addition to debiting the credit ledger, powering transparent line items on invoices. See /docs/billing-and-credits.
Time entry
One recorded session of labour on a job — started and stopped from the crew app, tied to the job (and optionally a service line). Time entries drive overage and field invoicing. See /docs/time-tracking-and-field-invoicing.
Try a call
The mic icon on each agent card at /agents. Opens a dialog that starts a real WebRTC call to your agent using your laptop's microphone — same prompt, KB, and tools as a live phone call. Transcript streams in. Use it to sanity-check voice, greeting, and that the agent quotes from your real prices.
Tool (voice tool)
A function the LLM can call during a call. Each tool has a Zod input schema, a class (financial or operational), a mode (customer, operator, or both), and a handler. Registered in packages/voice/src/tool-registry.ts.
View as
An owner/admin preview that shows the app exactly as a teammate sees it — same pages, same rows, strictly read-only while active. Useful for checking what a crew member can and can't reach before they ask. See /docs/team-and-roles.