A contact center small enough for a restaurant.
Enterprise contact centers cost more than a restaurant earns in a year. Barqiya takes the parts that matter — one number, a simple menu, a queue, and every order on one screen — and makes them affordable for Saudi small businesses. Arabic first, built on an open-source voice core.
- Status
- In development · early access
- Market
- Saudi SME restaurants
- Stack
- FreeSWITCH · Azure · WhatsApp
- My role
- Product, architecture and build
A missed call is a missed order.
A busy restaurant answers its phone when someone has a hand free. Orders arrive on WhatsApp and sit unread. Nobody knows how many calls were missed last night, because nothing counted them. The tools that solve this for banks and government are priced for banks and government.
Barqiya gives a small business one number for calls and WhatsApp, a menu that routes to the right branch, a queue so callers are not dropped, and a single screen where every order is captured and confirmed. The daily numbers it keeps — orders, missed calls, time to answer — are the first time most owners see their own front desk measured.
How it is put together.
Voice runs on FreeSWITCH, with calls arriving over SIP from a local carrier. WhatsApp arrives through Azure Communication Services. Both land in the same flow engine, which reads a JSON definition per tenant rather than dialplan XML, so a menu change is data and not a deployment.
Routing picks an agent from Postgres at the moment a call needs one, using the skills recorded for each branch. One URL serves every tenant, with the separation enforced on the server. It runs in Azure, and moves to the Saudi region as the product reaches general availability.
Designed for a phone on a counter.
The person using this is standing up, in a kitchen, with one hand. So the screen shows today's numbers, the order that just arrived, and two buttons: confirm or edit. Arabic is the default language and the layout is right to left from the start, not flipped afterwards. Numerals are Arabic-Indic, because that is what the staff read.
Screens below use sample data.
Decisions, and why.
- 01FreeSWITCH over AsteriskBetter behaviour under concurrent load per instance, and a cleaner event interface for the flow engine to drive.
- 02A JSON flow engine, not dialplan XMLMenus become data a tenant can change, which means no deployment and no dialplan reload for a new branch or a new opening hour.
- 03Deterministic menus first, voice bot laterA restaurant needs its orders captured correctly tonight. Speech recognition is a Phase 2 improvement, not a Phase 1 risk.
- 04Skills resolved at routing timeBranch and language skills live in Postgres and are read when a call needs an agent, so changing staff does not mean rebuilding queues.
- 05One URL, server-side separationSimpler for customers than a subdomain each, as long as tenancy is enforced on the server and never in the browser.
Where it is going.
Take the order
Voice and WhatsApp into one queue, deterministic menus, order capture and the daily numbers.
Understand the caller
A voice bot for the common requests, and order history so a regular customer is recognised.
Local and ready
Move to the Saudi Azure region, and the commercial registration that comes with the first paying customers.