Building your business logic
Eight worked verticals on identical hardware — security, restaurant, warehouse, hotel, clinic, field service, kiosk and manufacturing — and the short list of things that are not configurable.
9 min read
On this page
The hardware asks one question — someone spoke; what now? — and every vertical answers it differently. These are worked answers. In every one of them the firmware, the wire protocol, the fleet plane and the button are identical; only your seams three, four and five change.
Guard force and security operations
Mode A, one device per guard, placed on teams — CCTV, patrol, incident response. Speech becomes a searchable transcript with audio evidence attached. An intent taxonomy turns suspicious person near Gate 4 into a routed task with a location and a severity, and all clear automatically closes the matching open task. Duplicate re-reports of one incident merge rather than creating five tasks. Supervisors watch it stream in live.
async def on_utterance(text, *, property_id, team_id, user_id, audio_url):
intent = await your_model.extract(text, taxonomy=SECURITY_TAXONOMY)
# {"type": "INCIDENT", "location": "Gate 4", "severity": "MEDIUM",
# "subject": "suspicious person", "resolves": false}
if intent["type"] == "ALL_CLEAR":
return await close_matching_open_task(property_id, intent["location"])
existing = await find_open_task(property_id, intent["location"],
within=timedelta(minutes=10))
if existing: # five guards reporting one fire is one task
return await attach_report(existing, text, audio_url, user_id)
await create_task(property_id=property_id, assigned_team=team_id,
severity=intent["severity"], location=intent["location"],
body=text, evidence=audio_url, reported_by=user_id)Restaurant
Mode C, one terminal per table, plus the print bridge. The customer talks, your agent takes the order, the ticket prints in the kitchen. Staff walkies in mode A on the same site, against the same server. This is the profile that exercises every part of the platform at once, which is why so much of this documentation is drawn from it.
Warehouse and logistics
Mode A on team placement by zone. Your extraction layer looks for SKUs, bay numbers and quantities instead of incidents: bay 14 is short six units of SKU 8871 becomes a stock-discrepancy record in your WMS. The pattern is identical to security; only the taxonomy and the destination change.
Hotel housekeeping
Mode A per housekeeper, teams per floor. Room-number extraction plus a small status vocabulary — 402 is clean — updates your PMS. Put supervisor units in mode B so dispatch can push a spoken assignment back to a specific person.
Clinic and nurse call
Mode B at the bedside: press, speak, hear a confirmation. Your logic decides escalation. The response audio you push into the notification queue is the acknowledgement that reassures the patient someone heard them — which in this vertical is most of the product.
Field service
Mode A with user_id set, so every utterance is attributed to a technician. Job notes, parts used and completion calls dictate straight into your job management system. The audio evidence trail matters here for disputes.
Drive-thru and counter kiosk
Mode C exactly as the restaurant profile, with a different prompt and a different catalogue source. If your catalogue is large, read the note on context cost in Limits and constraints before you design the prompt.
Manufacturing line
Mode A on zone teams, listening for fault language. Severity assessment drives your existing alerting rather than a new dashboard nobody watches.
What is not configurable, and why
Be honest with your own customers about these up front. Each one is a consequence of the hardware, not a setting somebody forgot to expose.
- 16 kHz mono s16le. Everything downstream assumes it, and the device does not resample.
- The MAC is the identity. Multi-user-per-device works by setting user_id at provisioning or per request, not by the device authenticating a person.
- The button is the only interruption. There is no acoustic barge-in on this hardware.
- Push-to-talk framing is load-bearing for both cost and network capacity. Always-on listening is not a configuration change; it is a different product with different economics.
- One device per placement. Two terminals on one table is a data-model decision you make in your own schema — the device does not enforce it, and neither will anything else if you do not.
Something wrong or missing on this page? Tell us.

