Platform

Platform architecture, explained

A modular core, durable messaging, provider-neutral adapters and explicit boundaries between business state, process state and interaction state.

Conceptual diagram.

Design goals

  • Tenant isolation by design: every record, file, index and queue message is tenant-scoped.
  • Deterministic rules around probabilistic AI: models assist; policies and systems of record decide.
  • Provider neutrality: AI, speech, telephony and messaging providers sit behind adapters.
  • Observable and recoverable: idempotent processing, retries, replay and traceable runs.
  • Least privilege and deny by default: every endpoint has an explicit authorization policy.

Logical architecture

The platform is a modular core exposed through one API and a web application. Modules have explicit contracts and own their data.

LayerComponents
ExperienceWeb application (installable PWA), public REST API and signed webhooks
Core modulesIdentity and tenants · CRM and leads · communications · AI orchestration · knowledge and retrieval · workflow and scheduler · campaigns · integration hub · billing and usage · audit and governance · analytics
Data and messagingPostgreSQL (system of record, with vector search), Redis (cache and rate limits), RabbitMQ (durable messaging), S3-compatible object storage
TelephonyFreeSWITCH controlled through an adapter; SIP trunks and number mappings kept separate from business logic
ProvidersLanguage, speech, embedding, messaging and billing providers behind adapters
ObservabilityOpenTelemetry traces, Prometheus metrics, centralized structured logs

Separation of concerns

The platform deliberately keeps different kinds of state apart so each can be reasoned about and recovered independently.

ConceptRepresents
CRM entitiesBusiness state
Workflow runsProcess state
Conversation sessionsInteraction state
AI runsModel and tool execution state
Provider eventsExternal observations
Audit eventsTraceable actions and changes
Analytics modelsDerived aggregates, never the source of truth

Reliability patterns

  • Outbox pattern: events are written in the same transaction as the change and published afterwards, so nothing is lost between commit and publish.
  • At-least-once delivery, idempotent consumers: duplicates are expected and harmless.
  • No network calls inside database transactions.
  • Bounded concurrency, timeouts, circuit breakers and provider-specific rate limits.
  • Modular monolith first: clear modules and contracts, with services extracted only when load, ownership or failure isolation justifies it.

System of record boundaries

For each integration, EAIBAP documents which system owns each field, the sync direction, conflict rules and outage behavior.

DataAuthoritative owner
Balances and payment statusYour core banking or payment system
Policy state and coverage factsYour policy administration system
Call-leg media eventsThe telephony layer
Workflow state, activity history, routing decisions, AI configurationEAIBAP
Analytics aggregatesDerived only

Frequently asked questions

Is it a microservices architecture?

It starts as a modular monolith with clear module boundaries, which keeps transactions simple and operations manageable. Services are extracted when there is evidence they need independent scaling or ownership.

Can we run it in our own cloud?

Deployment models, including dedicated tenancy, are discussed during sales. Availability depends on the plan and region.

Do you depend on one AI vendor?

No. AI, speech and telephony are accessed through adapters with fallback options, so providers can be changed without rewriting business logic.

See it handle a real workflow.

Book a 30-minute walkthrough tailored to your industry and your systems.