The platform

One console for the whole loop.

From audience to insights, built from four channel-agnostic primitives. Voice is the first surface the platform masters, not the foundation it rests on. The same model runs the logic, paces the run, enforces the rules, and reports what it achieved.

Flow published Compliance in-path Execution durable

The model

Four primitives, one throughline.

Every program is the same shape: a logic, the people it runs against, the governed run that connects them, and the business result it produced. These objects are channel-agnostic. Voice is how we prove they work.

01 · Flow

The logic

A visual graph of typed nodes wired by exits. Speak, ask, branch, transfer, call an API, record a result.

02 · Audience

Who to reach

Imported contacts with the data columns your team brings, segmented and passed into the logic as variables.

03 · Automation

The governed run

One published flow against one audience, paced and scheduled, with compliance checked before every action.

04 · Outcomes

What it achieved

Declarative business outcomes, measured and explorable. Achievement in business terms, not raw throughput.

The Flow holds the logic of an interaction, decoupled from any one channel. The Audience is the people and the per-contact data the team owns. The Automation is the controlled act of running a flow against an audience inside a set of rules. Outcomes are the declared results the run was meant to produce. Read left to right, the four objects are the entire loop.

Flow: the logic

A visual graph of typed nodes.

Nodes are wired by their exits and ports. The graph is versioned and published, reusable and inspectable, with live diagnostics while it runs. It is a small but real programmability layer for people who do not write code.

Available today

01

Speak / TTS

Multi-voice, multi-language text-to-speech rendered at run time.

02

Ask / keypad

Capture keypad (DTMF) input and store it against the contact.

03

IVR menu

Branch on a menu choice into separate downstream paths.

04

Survey

Structured question sequences with recorded responses.

05

Conditional branch

Route on contact data or captured values via live expressions.

06

Delay

Hold the interaction for a defined interval, then resume.

07

Transfer to a person

Hand the live interaction to a human when the path calls for it.

08

Audio playback

Play a recording from your audio library inside the flow.

09

Outbound HTTP / REST

Call your own APIs through saved, authenticated connections.

10

Email

Send email as a step in the flow through your own provider.

11

Record result

Mark a declared business outcome from inside the logic.

12

AI nodes

An AI category (AI speech, sentiment and intent) is reserved in the surface. On the path

A live expression engine evaluates templated {{ expressions }} at run time, so a branch can read a contact field, a captured keypad value, or an API response and decide what happens next. Non-engineers get real logic without writing code.

Illustrative — expression in a branch
when: "{{ contact.balance > 0 and answer.key == '1' }}"
then: "node:payment_promise"
else: "node:closing_message"

Audience: who to reach

The people, and the data they carry.

Import contacts from CSV with the data columns your team owns. Segment them, and let that data flow into the logic as variables the flow can read and branch on.

Available today

CSV import
Bring contacts from your own systems. The platform does not own your list.
Per-contact data
Arbitrary columns your team defines, attached to each contact and addressable in the flow.
Segmentation
Slice an audience into the subset a given automation should run against.
Data as variables
Contact fields resolve inside {{ expressions }} for branching, speech, and API calls.

Automation: the governed run

One flow, one audience, run under control.

An automation binds a published flow to an audience and runs it inside a defined envelope: how fast, when, how often, within which hours, and how it retries. Control of the live run stays with you.

Available today

Pacing

Set the rate at which interactions are attempted across the run.

Retry policy

Define how unreached contacts are re-attempted over time.

Schedule

Run immediately, at a scheduled time, or on a recurring cadence.

Calling window

Constrain attempts to a per-automation window of permitted hours.

Live pause, resume, and stop are honoured by the running engine, not queued for later. Execution is durable: a restart mid-run does not lose its place. The run resumes from where it was.

IllustrativeCollections reminder · recurring
Pacingsteady
Window09:00–18:00 local
Staterunning
12 in flightresumable

Outcomes: what it achieved

Measured in business terms.

Declare the outcomes a program is meant to produce (appointment booked, payment promised, survey completed) and an intelligence layer measures them. Analytics report achievement, not just dial counts.

Available today

Totals

Aggregate outcome counts across a program or a time range.

By type

Breakdowns per declared outcome, side by side.

Daily trends

Outcome movement over time, day by day.

Per-automation views

Achievement attributed to a single run.

Outcomes explorer

Drill into the records behind any number.

Achievement vs throughput

The question is what was accomplished, not how many were attempted.

Throughput tells you the machine ran. Outcomes tell you the work got done.

The engine

How one interaction runs.

Compliance is enforced in the execution path, before anything happens — not reconstructed in a report afterwards. Every interaction passes the same gate.

Check compliance first

Before any action: suppression and DNC, the contact's local-time window, per-contact frequency caps, and the tenant-wide live concurrency ceiling. On failure the interaction is skipped or rescheduled, and it never proceeds.

Act

Place the call over the customer's own telephony. The platform orchestrates; it is not the carrier.

Run the flow

Execute the graph step by step, resolving expressions and reading contact data as it goes.

Record

Write the disposition and outcome signals as immutable records for analytics and audit.

IllustrativePre-dial gate
DNC / suppressionclear
Local-time windowin window
Frequency capcap reached, skip
Concurrency ceilingunder limit
gate before act1 skipped

The gate is a real control in the path, not a setting that produces a warning later. A contact that fails a check does not get called.

Bring your own stack

You bring the providers. We orchestrate.

Connect your own telephony, AI and voice, email, CRM, webhooks, and APIs. Credentials are encrypted and test-connected before use. The platform does not resell a carrier — it conducts yours.

Available today

Telephony

Outbound voice runs over the customer's own carrier, on a supported PBX (3CX today).

AI / voice

Bring your own voice and speech providers.

Email

Send through your own email provider as a flow step.

CRM

Push results into the systems of record you already run.

Webhooks

Signed, idempotent event delivery to your endpoints.

APIs

Saved, authenticated connections called from inside a flow.

Every connection is encrypted per tenant and verified with a test before it can run. Orchestration sits above your providers, so the platform stays neutral to who you buy from.

Your workspace

In-tenant workspace controls.

A per-tenant, in-app workspace where a team manages everything it owns. This is in-app self-service for a provisioned workspace — public signup, billing, and plans are a separate, forward-looking direction.

Available today

Teams

Organise the people in your workspace.

Roles

Scope what each member can see and do.

Integrations

Manage your encrypted provider connections.

Compliance settings

Configure the rules the in-path gate enforces.

Security

Session and access controls for the tenant.

Audio library

Store and reuse recordings across flows.

Developer access

API keys, request logs, usage, and webhook tooling. See the developer surface.

Provisioning

Workspaces are operator-provisioned today, sales-assisted and bring-your-own-provider. On the path public self-service signup, billing, and plans.

Channel-first, not channel-bound

The primitives do not belong to voice.

Flow, Audience, Automation, and Outcomes are channel-agnostic by design. Voice is the first surface they master. Multi-channel is the direction the model was built to grow into.

On the path

SMS is reserved in the product surface but not available. Email exists today only as a flow step, not as a full channel. A real-time conversational AI voice loop, and AI agents that branch on intent and sentiment, are deliberately deferred rather than faked.

Because the logic is decoupled from the channel, the same Flow, Automation, and Outcomes model is intended to carry future channels without a second product. Where it is headed is described plainly on the vision page.

Read where the platform is headed

  Next step

See it run against your own program.

Bring a flow, an audience, and your rules. We will walk the whole loop, from audience to insights, on your stack.

Request a demo See it against your program