Good afternoon.

Aria's been taking orders. Here's the day at a glance.
Orders today
0
from Aria
Revenue today
$0
incl. tax
Calls handled
0
all time
Containment
no transfer needed

Low stock warnings

All items well stocked.

Recent orders

No orders yet. Once Aria takes one, it'll appear here.

Orders.

Everything Aria has booked, live.
Time Order # Customer Items Total (Upsold) Status

Call history.

Every conversation, transcribed and tagged.
When Duration Outcome Detail

Settings.

Aria's voice and any notes the team wants her to know about today.

Branding

Per-instance branding for this deployment. Logo and display name appear in the top-left of the dashboard. Display name also becomes the restaurant name Aria says when greeting callers — overrides the menu's restaurant name. Accent color tints the dashboard's primary buttons and links.

Logo — paste a public URL (PNG/SVG/JPG). Host wherever you like (S3, your own CDN, GitHub raw). Empty = use default wordmark.
Display name — overrides the menu's restaurant name in BOTH the dashboard header AND Aria's spoken greeting. Empty = Aria uses the menu's restaurant name.
Color — hex code like #a83c2e. Empty = default theme.

Aria's voice

Pick the voice Aria speaks with. Changes apply to the next incoming call — no restart needed. All voices speak English; Aria uses gentle Indian-English phrasing regardless of which voice you pick.

Restaurant info

Aria uses this when greeting callers and answering location questions. Changes apply on the next call.

to (0-23)
The greeting becomes "Hello, thank you for calling [name]. What can I get you today?"

Manage menus

Hot-swap between menus, upload your own, and hide ones you don't use. Bundled menus (shipped with the codebase) can be hidden but not deleted — they reappear if you ever need them. Uploaded menus live on this instance's persistent volume and can be removed.

Pick a menu and click "Switch menu now" — the change is immediate.
All menus on this instance
Upload a custom menu
Choose a menu JSON file matching the seed schema.
Slug becomes the file name (alphanumeric + dash + underscore, max 64 chars). Uploading a slug that matches a bundled menu overrides the bundled version for this instance. JSON must include restaurant.name and a non-empty categories array.

POS integration

Connect a POS provider to push orders, pull menu items, or both. Each toggle is independent — connect Clover and only push orders if you don't want to manage the menu through it.

Custom items

One-off items merged into the menu regardless of source. Useful for daily specials or items not on POS yet.

+ Add custom item

Notes for Aria

Anything you'd normally tell a new host at the start of their shift. Aria reads this at the beginning of every call.

0 / 4000 characters

Call redirect

When the caller asks about anything outside menu & ordering — complaints, catering, allergy questions, hours, delivery, asking for a person — Aria redirects them here.

Aria will read the phone number digit-by-digit when redirecting. Update this and your changes apply to the next call.

SMS receipts

When an order is confirmed, Aria texts the caller a receipt with their order number, items, and pickup time.

Your incoming-call Twilio number works fine if it's SMS-capable. E.164 format like +15125550199.

Voice profile

Bundles a voice timbre with persona / accent guidance. The Indian-English profiles add accent instructions to Aria's persona prompt so the model inflects appropriately on both OpenAI and Gemini backends. Per-call: changes take effect on the next call.

Profiles map each backend to its closest-matching voice (e.g. "Aria — Warm Indian English" → OpenAI Coral / Gemini Aoede). The accent guidance is appended to the system prompt so a single profile choice carries across providers.

AI provider

Which voice model powers the call. Switches take effect on the NEXT call — in-progress calls keep their existing backend.

OpenAI Realtime — gpt-4o-realtime-preview. Default. Full watchdog coverage (phantom-commit, phantom-patience, fake-order-number, dead-air). Higher per-minute cost.
Gemini Live — gemini-2.5-flash-live-preview. Cheaper. Lighter watchdog coverage (basic dead-air only; phantom-commit / phantom-patience parity is on the backlog). Audio is transcoded μ-law ↔ PCM-16 on each chunk.

Language

Aria always greets callers in English. Choose whether she should switch to Spanish if the caller speaks clearly Spanish — useful for restaurants with bilingual front-desk staff. Disable this if your team only handles English calls so transcription stays pinned to English.

English + Spanish (mirror caller)
On (default) — bilingual mirroring. Aria stays in English unless the caller's speech is clearly Spanish (multiple Spanish words + Spanish grammar), then she switches for the rest of the call. Whisper auto-detects.
Off — English only. Whisper is pinned to English so accented English isn't mis-transcribed as Spanish, and Aria will never switch languages even if the caller speaks Spanish (she'll politely ask them to repeat in English, or transfer to your main line).

Voice tuning

Controls how Aria detects when the caller is speaking vs background noise. If callers report Aria interrupting or "talking to herself," try a noisier preset. If callers feel Aria takes too long to respond, try a more sensitive one.

0.70
500ms
800ms
Threshold — how loud audio must be to count as speech. Higher = more noise-resistant.
Speech padding — captures audio just before speech is detected, keeps short syllables.
Silence wait — pause length before Aria assumes the caller's done. Longer = lets the caller finish.
Noise reduction — strips background noise before VAD sees it. Far-field is best for restaurant speakerphones.

Deploy.

Wire Aria up to a real Twilio number in three steps.

Connection status

Restaurant
Public host
Twilio webhook
Media stream WS
OpenAI Realtime
Model
Voice
Twilio
POS integration
Main line phone
SMS receipts

Persistence setup

Menu stock and order history are stored in DATA_DIR/menu.json and DATA_DIR/orders.json. To survive redeploys, mount a persistent volume:
# .env
DATA_DIR=/data

# Railway / Render / Fly: attach a volume at /data
# Heroku: does not support persistent filesystems — use S3 adapter instead