AI receptionist
Answer the phone after hours and during overflow. Capture the caller, the reason, and the urgency — and route the right way.
RoomState answers, extracts, validates, and updates a deterministic record your business can actually act on — from voice, chat, SMS, email, and web forms.
{ "service_type": "roofing", "urgency": "high", "problem": "active leak", "location": "kitchen", "cause": "storm", "address": "812 Oak Ridge Lane", "status": "ready_for_dispatch" }
Designed for operations teams in
Most AI agents finish a conversation and leave the work for someone else. RoomState finishes the conversation and leaves the work done — as a validated record in your system of record.
Every stage is observable, replayable, and typed. The runtime moves a message from a channel to a validated record — and nothing silently mutates the state in between.
Voice, web chat, SMS, email, web forms, and the Agent API all land on the same surface.
Inbound speech and messages are normalized into an append-only conversation timeline.
Typed extractors lift fields from the transcript with confidence and source spans.
Every field is validated against your Domain Pack — types, formats, business rules.
A single Room represents the active business objective. Missing fields are tracked.
Dispatch, CRM, calendar, or webhook. Approved by an operator or by your policy.
Every Room shows the identity, the timeline, the fields the schema requires, what is still missing, what the assistant proposes, and a full audit trail. Operators see the system — and they have the final say on what leaves it.
Customer
Stats
Conversation
Dispatch Crew B to 812 Oak Ridge Lane and send arrival ETA via SMS — awaiting operator approval.
Required fields
Extractor confidence
Audit log
RoomState ships a generic intake runtime plus Domain Packs that encode the schema, required fields, and reply patterns for a specific vertical. The conversation is the surface; the record is the product.
Answer the phone after hours and during overflow. Capture the caller, the reason, and the urgency — and route the right way.
Roofing, HVAC, plumbing, restoration. The Domain Pack defines the required fields; the Room collects them and validates.
Negotiate windows against a real calendar. Propose, confirm, and write back — with a human in the loop on irreversible writes.
Score against a typed schema, not a sentiment vibe. Pass qualified leads downstream; ask follow-ups on the rest.
Capture the incident, the parties, the timeline, and the supporting evidence — with an append-only audit trail.
Tenants describe an issue; RoomState classifies it, captures location and access, and routes to the right vendor.
Send events. Read state. Subscribe to webhooks. Every change to a Room is an addressable, replayable event — written through an adapter, never inferred from a transcript.
Post a customer event; receive the new validated state plus the list of fields the Room is still missing. Subscribe to a Room webhook to hear every transition.
// Send a customer message — RoomState extracts, validates, returns state. POST /v1/rooms/rm_8f3c…/events { "event_type": "customer_message", "payload": { "text": "My roof is leaking above the kitchen." } } // Response — deterministic state, what is still missing, and an audit id. 200 OK { "state_updated": true, "room_state": { "service_type": "roofing", "problem": "active leak", "location": "kitchen" }, "missing_fields": ["preferred_window"], "audit_event_id": "evt_4831a…" }
The runtime treats audit, validation, and human authority as first-class. You can hand this to a security review without inventing controls after the fact.
Every transition emits an immutable audit event. Corrections are new events, never edits.
Fields are validated against a typed Domain Pack before they touch any downstream system.
Required-field gates, range checks, and intent classifiers keep extractors from leaving partial state.
Outbound messages and irreversible actions ship with operator approval by default.
PII can be scrubbed from transcripts at the adapter boundary before extraction runs.
Workspace, operator, and per-Room scoping keep agents and operators inside their lane.
Idempotency keys and signed payloads make downstream delivery safe to retry without dupes.
Processing runs, model calls, and webhook deliveries are first-class records, not log lines.