Platform

A generic engine.Infinite compositions.

betool strictly separates the orchestration core from business modules. The result: the platform grows without debt, even after dozens of integrations.

Architecture

Three pillars, strictly isolated.

Each exposes a clear contract. None depends on another's internals.

channels

Entry channels

Each channel is an independent module. Real-time telephony, email, chat widget, messaging apps, webhooks. Adding a channel has zero impact on the others.

  • Normalized entry contract
  • Per-organization authentication
  • Strict module isolation

pipelines

Pipelines

A generic engine that chains AI agents, deterministic operators, conditions, loops, and human validations. The visual editor rejects incompatible connections at design time.

  • Typed contracts on inputs / outputs
  • Versioning and execution history
  • Replay on past traces

integrations

Integrations

Connect your systems via configurable operators: HTTP, databases, business APIs, custom tools. OAuth2, Bearer, API key authentication. Everything versioned, everything traceable.

  • Composable operators, reusable sub-pipelines
  • Outbound connectors OAuth2 / Bearer / API key
  • BYOK for LLM models

Entry channels

Everything that can trigger a pipeline.

Voice, text, web, scheduled — each channel is a module following the same contract.

Voice

Real-time telephony

LiveKit + SIP, ASR/TTS, barge-in

GA

Email

Inbound / outbound email

IMAP, attachment parsing

GA

Web

HTTP webhook

Signed POST, arbitrary payload

GA

Web chat widget

Embedded script, public token

GA

Messaging

WhatsApp

Cloud API, media supported

GA

Telegram

Bot API, groups & private

GA

Mattermost

Outgoing webhook, threads

GA

SMS

AllMySMS, GSM-7/UCS-2 segments

Beta

Slack

Events API, slash commands

Beta

CRM

Meta Lead Ads

Lead webhook, field mapping

GA

CRM (HubSpot, Salesforce…)

OAuth + bidirectional sync

Beta

System

Scheduled (cron)

Recurring tasks, timezones

GA

Pipeline building blocks

Typed, composable nodes.

No scattered prompts: each node type exposes a clear contract (inputs, outputs, configuration).

agent

Invokes a LLM with a mission, role, and tools

operator

Deterministic action (HTTP, DB, transform)

condition

Branches based on a predicate over slots

loop

Iterates over a collection

filter

Drops irrelevant exchanges

confirmation

Pauses for human validation

file_transform

Read / write / split files

compute

Computations, aggregations, schema projections

code_step

Custom code in a sandbox, locked by human review

pipeline_call

Calls another pipeline as a function

Principles

Built to scale.

Genericity at the core

The engine knows no domain. Adding a use case never requires modifying the core.

Strict module isolation

Each channel, each node type lives in its own folder. Removing a module = zero impact on the others.

Native multi-organization

Data, pipelines, and secrets are isolated per organization. Nothing leaks, nothing mixes.

Built-in observability

Traced executions, per-tool counters, reproducible benchmarks. System state is always readable.

Let's explore your target architecture together.

Our technical teams answer your integration and sovereign deployment questions.